Re: /lib/libc.so.7 vs. __libc_start1@FBSD_1.7 in main [so: 14] recently ?
Date: Mon, 24 Apr 2023 04:22:01 UTC
[Warner answered my specific question separately. This is about something else.] On Apr 23, 2023, at 20:57, Warner Losh <imp@bsdimp.com> wrote: > On Sun, Apr 23, 2023 at 9:40 PM Simon J. Gerraty <sjg@juniper.net> wrote: >> Mark Millard <marklmi@yahoo.com> wrote: >> > I will not get into why, but I executed a git built for 1400082 >> > in a 1400081 world context and got what was to me a surprise, >> > given that /lib/libc.so.7 is part of 13.2-RELEASE : >> > >> > ld-elf.so.1: /usr/local/bin/git: Undefined symbol "__libc_start1@FBSD_1.7" >> >> This is a symptom of trying to run a prog built for target on a host >> which is not the same. >> >> I hit this a lot recently while updating Makefile.depend files for >> userland. >> >> There are a number of makefiles (eg for sh, csh, awk) which need to run >> a tool on the host to generate something. >> When trying to build 14.0 on a 13.1 host each of those tools failed with >> the above issue until actually built for the host. > > Your path is messed up then. We always run (a copy of) the host's binaries > for these tools. For the kernel's vers.c generation, git is used but does not get a build of its own under buildworld or buildkernel as far as I know: not a bootstrap or staged tool. > If you were running the 14 binaries on 13 as part of the > build process, the path is messed up. I'm not surprised for dirdep > since it doesn't do all the staging activities that buildworld. git use is not covered by buildworld or kernel-toolchain staging activities as far as I know. Is git the only example of such for things used by buildworld or buildkernel ? >> AFAIK the non-DIRDEPS_BUILD build does a separate pass through the tree >> to do the target build-tools to build these things. > > Yes and no... We copy the host's tools when we can, and build a matched set of > binary and libraries when the host one isn't good enough. I think it's a path > issue you are seeing... > > Also, "copy" isn't a physical copy because macos hates copied binaries due to security concerns. > >> >> The DIRDEPS_BUILD uses a pseudo MACHINE "host" to deal with such things, >> ideally those tools would be built in a subdirectory of sh, csh etc, so >> that one can choose to build only that tool if desired - sometimes you >> want to build the app (eg awk) for the host as well but usually not. > > Yea, buildworld deals with this by creating new binaries and installing them in > a special directory, which is somewhat similar (though we always build > them rather than on demand like dirdep hopes to do). === Mark Millard marklmi at yahoo.com