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 04:02:01 UTC
On Sun, Apr 23, 2023 at 9:09 PM 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"
>
> Does this mean that a /lib/libc.so.8 is pending? Or do the
> criteria for the likes of /lib/libc.so.7 allow for new
> symbols over time without a name change, even after a
> release contains a /lib/libc.so.7 ?
>

We offer backwards compatibility in libc (so new libc will work with an old
binary)
but not forward compatibility (so new binary old libc may not work).

This policy allows us to add symbols to libc, but never delete them.
It also lets us have new versions of old symbols (like stat).


> Just curious about the criteria. Executing newer on older is
> not my normal type of activity: usually avoided.
>

Yea. New binary on old libc isn't supported.

Similar rules apply to the kernel, but there's a "window" for forward
compat when it impacts the upgrade path.

Warner


> FYI: Checking 13.2-RELEASE shows it is using /lib/libc.so.7 :
>
> # uname -apKU
> FreeBSD generic 13.2-RELEASE FreeBSD 13.2-RELEASE
> releng/13.2-n254617-525ecfdad597 GENERIC arm64 aarch64 1302001 1302001
>
> # ldd -a `which git`
> /usr/local/bin/git:
>         libpcre2-8.so.0 => /usr/local/lib/libpcre2-8.so.0 (0x6a226ba02000)
>         libz.so.6 => /lib/libz.so.6 (0x6a226c8fb000)
>         libintl.so.8 => /usr/local/lib/libintl.so.8 (0x6a226cc81000)
>         libthr.so.3 => /lib/libthr.so.3 (0x6a226d429000)
>         libc.so.7 => /lib/libc.so.7 (0x6a226dbfa000)
> /usr/local/lib/libpcre2-8.so.0:
>         libthr.so.3 => /lib/libthr.so.3 (0x6a226d429000)
>         libc.so.7 => /lib/libc.so.7 (0x6a226dbfa000)
> /lib/libz.so.6:
>         libc.so.7 => /lib/libc.so.7 (0x6a226dbfa000)
> /usr/local/lib/libintl.so.8:
>         libc.so.7 => /lib/libc.so.7 (0x6a226dbfa000)
> /lib/libthr.so.3:
>         libc.so.7 => /lib/libc.so.7 (0x6a226dbfa000)
>
> ===
> Mark Millard
> marklmi at yahoo.com
>
>
>