Re: [PATCH] Linux: Add compatibility function fors tcgetattr, tcsetattr
H. Peter Anvin
hpa@zytor.com
Tue Dec 9 00:39:41 GMT 2025
On December 8, 2025 10:35:58 AM PST, Florian Weimer <fweimer@redhat.com> wrote:
>The implementations changed significantly in glibc 2.42. New
>applications are expected to be rebuild against the GLIBC_2.42.1
>symbols. This will allow us to change the behavior for old binaries
>that cannot be relinked if we learn that the current compatibility
>behavior is not appropriate for old binaries.
>
>(build-many-glibcs.py came back clean.)
>
>---
> sysdeps/unix/sysv/linux/Versions | 4 ++++
> sysdeps/unix/sysv/linux/aarch64/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/alpha/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/arc/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/arm/be/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/arm/le/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/csky/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/hppa/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/i386/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/microblaze/be/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/microblaze/le/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/or1k/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/sh/be/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/sh/le/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/tcgetattr.c | 5 ++++-
> sysdeps/unix/sysv/linux/tcsetattr.c | 5 ++++-
> sysdeps/unix/sysv/linux/x86_64/64/libc.abilist | 2 ++
> sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist | 2 ++
> 29 files changed, 64 insertions(+), 2 deletions(-)
>
>diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
>index 8f4d71ad7f..ee1a1e0e07 100644
>--- a/sysdeps/unix/sysv/linux/Versions
>+++ b/sysdeps/unix/sysv/linux/Versions
>@@ -339,6 +339,10 @@ libc {
> cfsetispeed;
> cfsetspeed;
> }
>+ GLIBC_2.42.1 {
>+ tcgetattr;
>+ tcsetattr;
>+ }
> GLIBC_2.43 {
> mseal;
> }
>diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
>index d161d268d9..7d66744c01 100644
>--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
>@@ -2767,6 +2767,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
>index 62879b6a08..6ab529bfa0 100644
>--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
>@@ -3114,6 +3114,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
>index bd5fa65e93..17e99a6c73 100644
>--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
>@@ -2528,6 +2528,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
>index 7d975dafab..ecfa7f3e5b 100644
>--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
>@@ -2820,6 +2820,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
>index c95bbfe6df..d609fd90d3 100644
>--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
>@@ -2817,6 +2817,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
>index 6fc91899ff..814fcf1586 100644
>--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
>@@ -2804,6 +2804,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
>index 8a83722bf5..a841dc53a1 100644
>--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
>@@ -2841,6 +2841,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
>index 3b96177e1d..5df4f563d0 100644
>--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
>@@ -3024,6 +3024,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
>index bc39d18d6d..babb2b2a18 100644
>--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
>@@ -2288,6 +2288,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
>index b42b4fe920..35af0713c9 100644
>--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
>@@ -2800,6 +2800,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
>index 854bf3c149..6d6e79e6f9 100644
>--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
>@@ -2967,6 +2967,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
>index ab3d67bd60..a3039412f3 100644
>--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
>@@ -2853,6 +2853,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
>index 510b3a24d0..c7c6bb82fd 100644
>--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
>@@ -2850,6 +2850,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist
>index 1a2a3673c7..65e930873c 100644
>--- a/sysdeps/unix/sysv/linux/or1k/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist
>@@ -2278,6 +2278,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
>index f00901f956..d94fb4ff06 100644
>--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
>@@ -3157,6 +3157,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
>index de23059026..f5df180a74 100644
>--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
>@@ -3202,6 +3202,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
>index 1ae78ec7ef..328feb72a5 100644
>--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
>@@ -2911,6 +2911,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
>index 53cb317a09..dbdded1ee6 100644
>--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
>@@ -2987,6 +2987,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
>index e6fd213d5c..179b3b6cd6 100644
>--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
>@@ -2531,6 +2531,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
>index 905323b889..06652cf9bb 100644
>--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
>@@ -2731,6 +2731,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
>index c35e099d2c..5ee73e107b 100644
>--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
>@@ -3155,6 +3155,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
>index 9f34c5fab3..75bb76b937 100644
>--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
>@@ -2948,6 +2948,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
>index f26980c57c..250411f72a 100644
>--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
>@@ -2847,6 +2847,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
>index e8ee581fa7..757b85ae59 100644
>--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
>@@ -2844,6 +2844,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/tcgetattr.c b/sysdeps/unix/sysv/linux/tcgetattr.c
>index ca175697a3..c41f8b968e 100644
>--- a/sysdeps/unix/sysv/linux/tcgetattr.c
>+++ b/sysdeps/unix/sysv/linux/tcgetattr.c
>@@ -65,6 +65,9 @@ compat_symbol (libc, __old_tcgetattr, tcgetattr, GLIBC_2_0);
>
> #else
>
>-weak_alias (__tcgetattr, tcgetattr)
>+# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_42_1)
>+compat_symbol (libc, __tcgetattr, tcgetattr, GLIBC_2_0);
>+# endif
>+versioned_symbol (libc, __tcgetattr, tcgetattr, GLIBC_2_42_1);
>
> #endif
>diff --git a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c
>index cf12e15169..495913af35 100644
>--- a/sysdeps/unix/sysv/linux/tcsetattr.c
>+++ b/sysdeps/unix/sysv/linux/tcsetattr.c
>@@ -104,6 +104,9 @@ compat_symbol (libc, __old_tcsetattr, tcsetattr, GLIBC_2_0);
>
> #else
>
>-weak_alias (__tcsetattr, tcsetattr)
>+# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_42_1)
>+compat_symbol (libc, __tcsetattr, tcsetattr, GLIBC_2_0);
>+# endif
>+versioned_symbol (libc, __tcsetattr, tcsetattr, GLIBC_2_42_1);
>
> #endif
>diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
>index 85533e9c07..4f0a50d6b0 100644
>--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
>@@ -2763,6 +2763,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
>index 2b2a351150..e5b06f6991 100644
>--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
>+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
>@@ -2782,6 +2782,8 @@ GLIBC_2.42 uabs F
> GLIBC_2.42 uimaxabs F
> GLIBC_2.42 ulabs F
> GLIBC_2.42 ullabs F
>+GLIBC_2.42.1 tcgetattr F
>+GLIBC_2.42.1 tcsetattr F
> GLIBC_2.43 __memset_explicit_chk F
> GLIBC_2.43 free_aligned_sized F
> GLIBC_2.43 free_sized F
>
>base-commit: f56a71097f39f2737e76b3807201a4028e06c611
>
As I have previously explained, this doesn't actually solve anything; if anything, it makes the situation far worse, because the problems at hand are cross-application. Symbol versioning doesn't help one iota when the problematic code is running in a completely different process.
Furthermore, the problematic code is generally code that bypasses glibc.
I did a long writeup on this already.
More information about the Libc-alpha
mailing list