diff options
author | Joseph Myers <joseph@codesourcery.com> | 2018-05-22 15:44:01 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2018-05-22 15:44:01 +0000 |
commit | 5c5c0dd747070db624c8e2c43691cec854f114ef (patch) | |
tree | b4543a7913ad4f1f6d65171d973f513a37fb33e0 /sysdeps/unix/make-syscalls.sh | |
parent | ed0d698870720752986f855a2b3da50e3c89bad5 (diff) | |
download | glibc-5c5c0dd747070db624c8e2c43691cec854f114ef.tar.gz glibc-5c5c0dd747070db624c8e2c43691cec854f114ef.tar.xz glibc-5c5c0dd747070db624c8e2c43691cec854f114ef.zip |
Make llseek a compat symbol (bug 18471).
The llseek function name is an obsolete, Linux-specific, unprototyped name for lseek64 with a link-time warning. This patch completes the obsoletion of this function name by making it into a compat symbol, not available for newly linked programs and not included in the ABI for new ports. When a compat symbol is defined in syscalls.list, the code for that function is not built at all for static linking unless some non-compat symbol for that function is also defined with an explicit symbol version, so an explicit symbol version for lseek64 is added to the MIPS n32 syscalls.list. The case in make-syscalls.sh that handles such explicit non-compat symbol versions then needs to be changed to use weak_alias instead of strong_alias when the syscall is built outside of libc, to avoid linknamespace failures from a strong lseek64 symbol in static libpthread. The x32 llseek.S was as far as I could tell already unused (nothing builds an llseek.* source file, at least since the lseek / lseek64 / llseek consolidation), so is removed in this patch as well. Tested for x86_64 and x86, and with build-many-glibcs.py. [BZ #18471] * sysdeps/unix/make-syscalls.sh (emit_weak_aliases): Use weak aliases for non-libc case of versioned symbols. * sysdeps/unix/sysv/linux/lseek64.c: Include <shlib-compat.h>. (llseek): Define as compat symbol if [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_28)], not as weak alias with link warning. * sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list (llseek): Make into a compat symbol, disabled for minimum symbol version GLIBC_2.28 and later. * sysdeps/unix/sysv/linux/x86_64/x32/llseek.S: Remove file.
Diffstat (limited to 'sysdeps/unix/make-syscalls.sh')
-rw-r--r-- | sysdeps/unix/make-syscalls.sh | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh index 874ad691cd..e39b2d6d52 100644 --- a/sysdeps/unix/make-syscalls.sh +++ b/sysdeps/unix/make-syscalls.sh @@ -103,7 +103,7 @@ emit_weak_aliases() fi echo " echo 'versioned_symbol (libc, $source, $base, $ver)'; \\" echo " echo '#else'; \\" - echo " echo 'strong_alias ($strong, $base)'; \\" + echo " echo 'weak_alias ($strong, $base)'; \\" echo " echo '#endif'; \\" ;; *@*) |