Compat symbols in abilist files

Florian Weimer fweimer@redhat.com
Wed Mar 17 20:59:28 GMT 2021


I'd like to re-raise the matter of comapt symbol markers in abilist
files.

--enable-obsolete-rpc (which changed compat symbol status) is gone,
which should simplify matters.

Joseph, you objected to this in the past.  While reviewing libpthread
symbol moves, I noticed that when going from

  libc:  pread@@GLIBC_2.1   libpthread: pread@@GLIBC_2.2

to

  libc:  pread@GLIBC_2.1 pread@@GLIBC_2.2

we would actually have to switch to 

  libc:  pread@GLIBC_2.1 pread@GLIBC_2.2 pread@@GLIBC_2.34

because a newly linked binary would produce a pread@@GLIBC_2.2 reference
without linking to libpthread, which could result in a lazy binding
failure at run time.  If we swap around the roles of compat symbols,
like this

  libc:  pread@@GLIBC_2.1 pread@GLIBC_2.2

the new symbol version is not necessary.

Unfortunately this is currently not visible at all in the abilist files.
The versioned_symbol/compat_symbol constructs are also quite hard to
review.  So I'm worried that we don't get the link-time ABI we want on
all targets.

Thanks,
Florian



More information about the Libc-alpha mailing list