Re: /lib/libc.so.7 vs. __libc_start1@FBSD_1.7 in main [so: 14] recently ?

From: Warner Losh <imp_at_bsdimp.com>
Date: Mon, 24 Apr 2023 03:57:06 UTC
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. 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.


> 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).

Warner