diff mbox series

[08/30] nptl: Remove send from libpthread

Message ID 20210316200510.2135405-9-adhemerval.zanella@linaro.org
State New
Headers show
Series libpthread removal: pthread-compat-wrappers and other libc symbols | expand

Commit Message

Adhemerval Zanella Netto March 16, 2021, 8:04 p.m. UTC
The libc version is identical and built with same flags.  Both aarch64
and nios2 also requires to export __send.  It was done previously with
the HAVE_INTERNAL_SEND_SYMBOL (which forced the symbol creation),
however it is simpler to add them on the architecture specific Version
script snippet.

Checked on x86_64-linux-gnu and i686-linux-gnu.
---
 nptl/Makefile                                                 | 2 --
 nptl/Versions                                                 | 2 --
 socket/Makefile                                               | 1 +
 sysdeps/unix/sysv/linux/aarch64/Versions                      | 3 +++
 sysdeps/unix/sysv/linux/aarch64/libc.abilist                  | 1 +
 sysdeps/unix/sysv/linux/aarch64/libpthread.abilist            | 2 --
 sysdeps/unix/sysv/linux/alpha/libpthread.abilist              | 2 --
 sysdeps/unix/sysv/linux/arc/libpthread.abilist                | 2 --
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist             | 2 --
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist             | 2 --
 sysdeps/unix/sysv/linux/csky/libpthread.abilist               | 2 --
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist               | 2 --
 sysdeps/unix/sysv/linux/i386/libpthread.abilist               | 2 --
 sysdeps/unix/sysv/linux/ia64/libpthread.abilist               | 2 --
 sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist      | 2 --
 sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist        | 2 --
 sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist      | 2 --
 sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist      | 2 --
 sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist        | 2 --
 sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist        | 2 --
 sysdeps/unix/sysv/linux/nios2/Versions                        | 1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist                    | 1 +
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist              | 2 --
 sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist  | 2 --
 .../unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist   | 2 --
 .../unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist   | 2 --
 sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist         | 2 --
 sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist         | 2 --
 sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist       | 2 --
 sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist       | 2 --
 sysdeps/unix/sysv/linux/send.c                                | 2 --
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist              | 2 --
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist              | 2 --
 sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist      | 2 --
 sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist      | 2 --
 sysdeps/unix/sysv/linux/sysdep.h                              | 4 ----
 sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist          | 2 --
 sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist         | 2 --
 38 files changed, 7 insertions(+), 68 deletions(-)

Comments

Florian Weimer March 17, 2021, 6:07 p.m. UTC | #1
* Adhemerval Zanella via Libc-alpha:

> The libc version is identical and built with same flags.  Both aarch64
> and nios2 also requires to export __send.  It was done previously with
> the HAVE_INTERNAL_SEND_SYMBOL (which forced the symbol creation),
> however it is simpler to add them on the architecture specific Version
> script snippet.

In other cases, we have said that doing this would require adding a
__send@GLIBC_2.34 symbol (which is what my patched
move-symbol-to-libc.py script does).

However, I think we can turn this into a compat symbol in this case.
All __send callers are internal to libc, so we don't need
__send@GLIBC_PRIVATE, just a hidden proto.

Thanks,
Florian
Florian Weimer March 17, 2021, 8:13 p.m. UTC | #2
* Florian Weimer via Libc-alpha:

> * Adhemerval Zanella via Libc-alpha:
>
>> The libc version is identical and built with same flags.  Both aarch64
>> and nios2 also requires to export __send.  It was done previously with
>> the HAVE_INTERNAL_SEND_SYMBOL (which forced the symbol creation),
>> however it is simpler to add them on the architecture specific Version
>> script snippet.
>
> In other cases, we have said that doing this would require adding a
> __send@GLIBC_2.34 symbol (which is what my patched
> move-symbol-to-libc.py script does).
>
> However, I think we can turn this into a compat symbol in this case.
> All __send callers are internal to libc, so we don't need
> __send@GLIBC_PRIVATE, just a hidden proto.

One more comment: Please also remove:

sysdeps/unix/sysv/linux/aarch64/sysdep.h:# undef HAVE_INTERNAL_SEND_SYMBOL
sysdeps/unix/sysv/linux/nios2/sysdep.h:# undef HAVE_INTERNAL_SEND_SYMBOL

Thanks,
Florian
diff mbox series

Patch

diff --git a/nptl/Makefile b/nptl/Makefile
index c8b3e41851..fa71069892 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -81,7 +81,6 @@  static-only-routines = pthread_atfork
 # We need to provide certain routines for compatibility with existing
 # binaries.
 pthread-compat-wrappers = \
-		      send \
 		      sendto fsync lseek lseek64 \
 		      msync open open64 pause \
 		      pread pread64 pwrite pwrite64 \
@@ -298,7 +297,6 @@  CFLAGS-tcdrain.c += -fexceptions -fasynchronous-unwind-tables
 CFLAGS-open.c += -fexceptions -fasynchronous-unwind-tables
 CFLAGS-open64.c += -fexceptions -fasynchronous-unwind-tables
 CFLAGS-pause.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-send.c += -fexceptions -fasynchronous-unwind-tables
 CFLAGS-sendto.c += -fexceptions -fasynchronous-unwind-tables
 CFLAGS-recvmsg.c += -fexceptions -fasynchronous-unwind-tables
 CFLAGS-sendmsg.c += -fexceptions -fasynchronous-unwind-tables
diff --git a/nptl/Versions b/nptl/Versions
index bfc553db4b..0c4b681adf 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -121,7 +121,6 @@  libpthread {
     __pthread_mutexattr_settype;
     __pthread_once;
     __pthread_setspecific;
-    __send;
     __sigaction;
     _exit;
     _pthread_cleanup_pop;
@@ -176,7 +175,6 @@  libpthread {
     sem_post;
     sem_trywait;
     sem_wait;
-    send;
     sendmsg;
     sendto;
     sigaction;
diff --git a/socket/Makefile b/socket/Makefile
index 228b141c3b..55c2416887 100644
--- a/socket/Makefile
+++ b/socket/Makefile
@@ -39,3 +39,4 @@  include ../Rules
 
 CFLAGS-recv.c += -fexceptions -fasynchronous-unwind-tables
 CFLAGS-recvfrom.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-send.c += -fexceptions -fasynchronous-unwind-tables
diff --git a/sysdeps/unix/sysv/linux/aarch64/Versions b/sysdeps/unix/sysv/linux/aarch64/Versions
index 9bd87fe2d0..92f653aa93 100644
--- a/sysdeps/unix/sysv/linux/aarch64/Versions
+++ b/sysdeps/unix/sysv/linux/aarch64/Versions
@@ -5,6 +5,9 @@  ld {
   }
 }
 libc {
+  GLIBC_2.17 {
+    __send;
+  }
   GLIBC_PRIVATE {
     __vdso_clock_gettime;
     __vdso_clock_getres;
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index bac795262d..29f41b7ed5 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -371,6 +371,7 @@  GLIBC_2.17 __sched_getscheduler F
 GLIBC_2.17 __sched_setscheduler F
 GLIBC_2.17 __sched_yield F
 GLIBC_2.17 __select F
+GLIBC_2.17 __send F
 GLIBC_2.17 __setmntent F
 GLIBC_2.17 __setpgid F
 GLIBC_2.17 __sigaction F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index 2a0129ec9d..f4b6b38115 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -38,7 +38,6 @@  GLIBC_2.17 __pthread_unregister_cancel_restore F
 GLIBC_2.17 __pthread_unwind_next F
 GLIBC_2.17 __pwrite64 F
 GLIBC_2.17 __res_state F
-GLIBC_2.17 __send F
 GLIBC_2.17 __sigaction F
 GLIBC_2.17 _pthread_cleanup_pop F
 GLIBC_2.17 _pthread_cleanup_pop_restore F
@@ -168,7 +167,6 @@  GLIBC_2.17 sem_timedwait F
 GLIBC_2.17 sem_trywait F
 GLIBC_2.17 sem_unlink F
 GLIBC_2.17 sem_wait F
-GLIBC_2.17 send F
 GLIBC_2.17 sendmsg F
 GLIBC_2.17 sendto F
 GLIBC_2.17 sigaction F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index bb22a8fbc5..34b5cf8b04 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -18,7 +18,6 @@  GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
-GLIBC_2.0 __send F
 GLIBC_2.0 __sigaction F
 GLIBC_2.0 _pthread_cleanup_pop F
 GLIBC_2.0 _pthread_cleanup_pop_restore F
@@ -71,7 +70,6 @@  GLIBC_2.0 sem_init F
 GLIBC_2.0 sem_post F
 GLIBC_2.0 sem_trywait F
 GLIBC_2.0 sem_wait F
-GLIBC_2.0 send F
 GLIBC_2.0 sendmsg F
 GLIBC_2.0 sendto F
 GLIBC_2.0 sigaction F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 910045e24c..bc372dc086 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -37,7 +37,6 @@  GLIBC_2.32 __pthread_unregister_cancel_restore F
 GLIBC_2.32 __pthread_unwind_next F
 GLIBC_2.32 __pwrite64 F
 GLIBC_2.32 __res_state F
-GLIBC_2.32 __send F
 GLIBC_2.32 __sigaction F
 GLIBC_2.32 _pthread_cleanup_pop F
 GLIBC_2.32 _pthread_cleanup_pop_restore F
@@ -186,7 +185,6 @@  GLIBC_2.32 sem_timedwait F
 GLIBC_2.32 sem_trywait F
 GLIBC_2.32 sem_unlink F
 GLIBC_2.32 sem_wait F
-GLIBC_2.32 send F
 GLIBC_2.32 sendmsg F
 GLIBC_2.32 sendto F
 GLIBC_2.32 sigaction F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 8d4a3fc062..88d91c8955 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -73,7 +73,6 @@  GLIBC_2.4 __pthread_unregister_cancel_restore F
 GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __pwrite64 F
 GLIBC_2.4 __res_state F
-GLIBC_2.4 __send F
 GLIBC_2.4 __sigaction F
 GLIBC_2.4 _pthread_cleanup_pop F
 GLIBC_2.4 _pthread_cleanup_pop_restore F
@@ -197,7 +196,6 @@  GLIBC_2.4 sem_timedwait F
 GLIBC_2.4 sem_trywait F
 GLIBC_2.4 sem_unlink F
 GLIBC_2.4 sem_wait F
-GLIBC_2.4 send F
 GLIBC_2.4 sendmsg F
 GLIBC_2.4 sendto F
 GLIBC_2.4 sigaction F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 8d4a3fc062..88d91c8955 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -73,7 +73,6 @@  GLIBC_2.4 __pthread_unregister_cancel_restore F
 GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __pwrite64 F
 GLIBC_2.4 __res_state F
-GLIBC_2.4 __send F
 GLIBC_2.4 __sigaction F
 GLIBC_2.4 _pthread_cleanup_pop F
 GLIBC_2.4 _pthread_cleanup_pop_restore F
@@ -197,7 +196,6 @@  GLIBC_2.4 sem_timedwait F
 GLIBC_2.4 sem_trywait F
 GLIBC_2.4 sem_unlink F
 GLIBC_2.4 sem_wait F
-GLIBC_2.4 send F
 GLIBC_2.4 sendmsg F
 GLIBC_2.4 sendto F
 GLIBC_2.4 sigaction F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 32a5763b89..41a0da03eb 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -37,7 +37,6 @@  GLIBC_2.29 __pthread_unregister_cancel_restore F
 GLIBC_2.29 __pthread_unwind_next F
 GLIBC_2.29 __pwrite64 F
 GLIBC_2.29 __res_state F
-GLIBC_2.29 __send F
 GLIBC_2.29 __sigaction F
 GLIBC_2.29 _pthread_cleanup_pop F
 GLIBC_2.29 _pthread_cleanup_pop_restore F
@@ -180,7 +179,6 @@  GLIBC_2.29 sem_timedwait F
 GLIBC_2.29 sem_trywait F
 GLIBC_2.29 sem_unlink F
 GLIBC_2.29 sem_wait F
-GLIBC_2.29 send F
 GLIBC_2.29 sendmsg F
 GLIBC_2.29 sendto F
 GLIBC_2.29 sigaction F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index f60266d245..8d4a802c03 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -40,7 +40,6 @@  GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pthread_setspecific F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
-GLIBC_2.2 __send F
 GLIBC_2.2 __sigaction F
 GLIBC_2.2 _pthread_cleanup_pop F
 GLIBC_2.2 _pthread_cleanup_pop_restore F
@@ -148,7 +147,6 @@  GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 sem_trywait F
 GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
-GLIBC_2.2 send F
 GLIBC_2.2 sendmsg F
 GLIBC_2.2 sendto F
 GLIBC_2.2 sigaction F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 103388c4f5..36b8644259 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -18,7 +18,6 @@  GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
-GLIBC_2.0 __send F
 GLIBC_2.0 __sigaction F
 GLIBC_2.0 _pthread_cleanup_pop F
 GLIBC_2.0 _pthread_cleanup_pop_restore F
@@ -71,7 +70,6 @@  GLIBC_2.0 sem_init F
 GLIBC_2.0 sem_post F
 GLIBC_2.0 sem_trywait F
 GLIBC_2.0 sem_wait F
-GLIBC_2.0 send F
 GLIBC_2.0 sendmsg F
 GLIBC_2.0 sendto F
 GLIBC_2.0 sigaction F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index a7d6b3deea..42585ba3ce 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -40,7 +40,6 @@  GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pthread_setspecific F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
-GLIBC_2.2 __send F
 GLIBC_2.2 __sigaction F
 GLIBC_2.2 _pthread_cleanup_pop F
 GLIBC_2.2 _pthread_cleanup_pop_restore F
@@ -148,7 +147,6 @@  GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 sem_trywait F
 GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
-GLIBC_2.2 send F
 GLIBC_2.2 sendmsg F
 GLIBC_2.2 sendto F
 GLIBC_2.2 sigaction F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 8d4a3fc062..88d91c8955 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -73,7 +73,6 @@  GLIBC_2.4 __pthread_unregister_cancel_restore F
 GLIBC_2.4 __pthread_unwind_next F
 GLIBC_2.4 __pwrite64 F
 GLIBC_2.4 __res_state F
-GLIBC_2.4 __send F
 GLIBC_2.4 __sigaction F
 GLIBC_2.4 _pthread_cleanup_pop F
 GLIBC_2.4 _pthread_cleanup_pop_restore F
@@ -197,7 +196,6 @@  GLIBC_2.4 sem_timedwait F
 GLIBC_2.4 sem_trywait F
 GLIBC_2.4 sem_unlink F
 GLIBC_2.4 sem_wait F
-GLIBC_2.4 send F
 GLIBC_2.4 sendmsg F
 GLIBC_2.4 sendto F
 GLIBC_2.4 sigaction F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 103388c4f5..36b8644259 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -18,7 +18,6 @@  GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
-GLIBC_2.0 __send F
 GLIBC_2.0 __sigaction F
 GLIBC_2.0 _pthread_cleanup_pop F
 GLIBC_2.0 _pthread_cleanup_pop_restore F
@@ -71,7 +70,6 @@  GLIBC_2.0 sem_init F
 GLIBC_2.0 sem_post F
 GLIBC_2.0 sem_trywait F
 GLIBC_2.0 sem_wait F
-GLIBC_2.0 send F
 GLIBC_2.0 sendmsg F
 GLIBC_2.0 sendto F
 GLIBC_2.0 sigaction F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 4e950d5259..d780989570 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -38,7 +38,6 @@  GLIBC_2.18 __pthread_unregister_cancel_restore F
 GLIBC_2.18 __pthread_unwind_next F
 GLIBC_2.18 __pwrite64 F
 GLIBC_2.18 __res_state F
-GLIBC_2.18 __send F
 GLIBC_2.18 __sigaction F
 GLIBC_2.18 _pthread_cleanup_pop F
 GLIBC_2.18 _pthread_cleanup_pop_restore F
@@ -170,7 +169,6 @@  GLIBC_2.18 sem_timedwait F
 GLIBC_2.18 sem_trywait F
 GLIBC_2.18 sem_unlink F
 GLIBC_2.18 sem_wait F
-GLIBC_2.18 send F
 GLIBC_2.18 sendmsg F
 GLIBC_2.18 sendto F
 GLIBC_2.18 sigaction F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 4e950d5259..d780989570 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -38,7 +38,6 @@  GLIBC_2.18 __pthread_unregister_cancel_restore F
 GLIBC_2.18 __pthread_unwind_next F
 GLIBC_2.18 __pwrite64 F
 GLIBC_2.18 __res_state F
-GLIBC_2.18 __send F
 GLIBC_2.18 __sigaction F
 GLIBC_2.18 _pthread_cleanup_pop F
 GLIBC_2.18 _pthread_cleanup_pop_restore F
@@ -170,7 +169,6 @@  GLIBC_2.18 sem_timedwait F
 GLIBC_2.18 sem_trywait F
 GLIBC_2.18 sem_unlink F
 GLIBC_2.18 sem_wait F
-GLIBC_2.18 send F
 GLIBC_2.18 sendmsg F
 GLIBC_2.18 sendto F
 GLIBC_2.18 sigaction F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index aaf79e4825..386c89943c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -18,7 +18,6 @@  GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
-GLIBC_2.0 __send F
 GLIBC_2.0 __sigaction F
 GLIBC_2.0 _pthread_cleanup_pop F
 GLIBC_2.0 _pthread_cleanup_pop_restore F
@@ -71,7 +70,6 @@  GLIBC_2.0 sem_init F
 GLIBC_2.0 sem_post F
 GLIBC_2.0 sem_trywait F
 GLIBC_2.0 sem_wait F
-GLIBC_2.0 send F
 GLIBC_2.0 sendmsg F
 GLIBC_2.0 sendto F
 GLIBC_2.0 sigaction F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index aaf79e4825..386c89943c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -18,7 +18,6 @@  GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
-GLIBC_2.0 __send F
 GLIBC_2.0 __sigaction F
 GLIBC_2.0 _pthread_cleanup_pop F
 GLIBC_2.0 _pthread_cleanup_pop_restore F
@@ -71,7 +70,6 @@  GLIBC_2.0 sem_init F
 GLIBC_2.0 sem_post F
 GLIBC_2.0 sem_trywait F
 GLIBC_2.0 sem_wait F
-GLIBC_2.0 send F
 GLIBC_2.0 sendmsg F
 GLIBC_2.0 sendto F
 GLIBC_2.0 sigaction F
diff --git a/sysdeps/unix/sysv/linux/nios2/Versions b/sysdeps/unix/sysv/linux/nios2/Versions
index e42c85f575..ea1ec39234 100644
--- a/sysdeps/unix/sysv/linux/nios2/Versions
+++ b/sysdeps/unix/sysv/linux/nios2/Versions
@@ -1,5 +1,6 @@ 
 libc {
   GLIBC_2.21 {
+    __send;
     _flush_cache;
     cacheflush;
   }
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 17f5609e06..3acb12c22f 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -409,6 +409,7 @@  GLIBC_2.21 __sched_getscheduler F
 GLIBC_2.21 __sched_setscheduler F
 GLIBC_2.21 __sched_yield F
 GLIBC_2.21 __select F
+GLIBC_2.21 __send F
 GLIBC_2.21 __setmntent F
 GLIBC_2.21 __setpgid F
 GLIBC_2.21 __sigaction F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index f38f6c1250..dd9eca02b9 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -38,7 +38,6 @@  GLIBC_2.21 __pthread_unregister_cancel_restore F
 GLIBC_2.21 __pthread_unwind_next F
 GLIBC_2.21 __pwrite64 F
 GLIBC_2.21 __res_state F
-GLIBC_2.21 __send F
 GLIBC_2.21 __sigaction F
 GLIBC_2.21 _pthread_cleanup_pop F
 GLIBC_2.21 _pthread_cleanup_pop_restore F
@@ -170,7 +169,6 @@  GLIBC_2.21 sem_timedwait F
 GLIBC_2.21 sem_trywait F
 GLIBC_2.21 sem_unlink F
 GLIBC_2.21 sem_wait F
-GLIBC_2.21 send F
 GLIBC_2.21 sendmsg F
 GLIBC_2.21 sendto F
 GLIBC_2.21 sigaction F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 90ba7f8344..c0d9ac4000 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -18,7 +18,6 @@  GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
-GLIBC_2.0 __send F
 GLIBC_2.0 __sigaction F
 GLIBC_2.0 _pthread_cleanup_pop F
 GLIBC_2.0 _pthread_cleanup_pop_restore F
@@ -71,7 +70,6 @@  GLIBC_2.0 sem_init F
 GLIBC_2.0 sem_post F
 GLIBC_2.0 sem_trywait F
 GLIBC_2.0 sem_wait F
-GLIBC_2.0 send F
 GLIBC_2.0 sendmsg F
 GLIBC_2.0 sendto F
 GLIBC_2.0 sigaction F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index d1c40ad014..ac031664df 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -61,7 +61,6 @@  GLIBC_2.3 __pthread_rwlock_wrlock F
 GLIBC_2.3 __pthread_setspecific F
 GLIBC_2.3 __pwrite64 F
 GLIBC_2.3 __res_state F
-GLIBC_2.3 __send F
 GLIBC_2.3 __sigaction F
 GLIBC_2.3 _pthread_cleanup_pop F
 GLIBC_2.3 _pthread_cleanup_pop_restore F
@@ -168,7 +167,6 @@  GLIBC_2.3 sem_timedwait F
 GLIBC_2.3 sem_trywait F
 GLIBC_2.3 sem_unlink F
 GLIBC_2.3 sem_wait F
-GLIBC_2.3 send F
 GLIBC_2.3 sendmsg F
 GLIBC_2.3 sendto F
 GLIBC_2.3 sigaction F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index 2a0129ec9d..f4b6b38115 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -38,7 +38,6 @@  GLIBC_2.17 __pthread_unregister_cancel_restore F
 GLIBC_2.17 __pthread_unwind_next F
 GLIBC_2.17 __pwrite64 F
 GLIBC_2.17 __res_state F
-GLIBC_2.17 __send F
 GLIBC_2.17 __sigaction F
 GLIBC_2.17 _pthread_cleanup_pop F
 GLIBC_2.17 _pthread_cleanup_pop_restore F
@@ -168,7 +167,6 @@  GLIBC_2.17 sem_timedwait F
 GLIBC_2.17 sem_trywait F
 GLIBC_2.17 sem_unlink F
 GLIBC_2.17 sem_wait F
-GLIBC_2.17 send F
 GLIBC_2.17 sendmsg F
 GLIBC_2.17 sendto F
 GLIBC_2.17 sigaction F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index faedd4be62..9e502ef6db 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -37,7 +37,6 @@  GLIBC_2.33 __pthread_unregister_cancel_restore F
 GLIBC_2.33 __pthread_unwind_next F
 GLIBC_2.33 __pwrite64 F
 GLIBC_2.33 __res_state F
-GLIBC_2.33 __send F
 GLIBC_2.33 __sigaction F
 GLIBC_2.33 _pthread_cleanup_pop F
 GLIBC_2.33 _pthread_cleanup_pop_restore F
@@ -186,7 +185,6 @@  GLIBC_2.33 sem_timedwait F
 GLIBC_2.33 sem_trywait F
 GLIBC_2.33 sem_unlink F
 GLIBC_2.33 sem_wait F
-GLIBC_2.33 send F
 GLIBC_2.33 sendmsg F
 GLIBC_2.33 sendto F
 GLIBC_2.33 sigaction F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 6af93a54c7..3e18d1d43c 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -38,7 +38,6 @@  GLIBC_2.27 __pthread_unregister_cancel_restore F
 GLIBC_2.27 __pthread_unwind_next F
 GLIBC_2.27 __pwrite64 F
 GLIBC_2.27 __res_state F
-GLIBC_2.27 __send F
 GLIBC_2.27 __sigaction F
 GLIBC_2.27 _pthread_cleanup_pop F
 GLIBC_2.27 _pthread_cleanup_pop_restore F
@@ -169,7 +168,6 @@  GLIBC_2.27 sem_timedwait F
 GLIBC_2.27 sem_trywait F
 GLIBC_2.27 sem_unlink F
 GLIBC_2.27 sem_wait F
-GLIBC_2.27 send F
 GLIBC_2.27 sendmsg F
 GLIBC_2.27 sendto F
 GLIBC_2.27 sigaction F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index f7372e26d7..a0b09b0bf3 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -18,7 +18,6 @@  GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
-GLIBC_2.0 __send F
 GLIBC_2.0 __sigaction F
 GLIBC_2.0 _pthread_cleanup_pop F
 GLIBC_2.0 _pthread_cleanup_pop_restore F
@@ -71,7 +70,6 @@  GLIBC_2.0 sem_init F
 GLIBC_2.0 sem_post F
 GLIBC_2.0 sem_trywait F
 GLIBC_2.0 sem_wait F
-GLIBC_2.0 send F
 GLIBC_2.0 sendmsg F
 GLIBC_2.0 sendto F
 GLIBC_2.0 sigaction F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 2a06f25614..1469f714dd 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -42,7 +42,6 @@  GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pthread_setspecific F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
-GLIBC_2.2 __send F
 GLIBC_2.2 __sigaction F
 GLIBC_2.2 _pthread_cleanup_pop F
 GLIBC_2.2 _pthread_cleanup_pop_restore F
@@ -150,7 +149,6 @@  GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 sem_trywait F
 GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
-GLIBC_2.2 send F
 GLIBC_2.2 sendmsg F
 GLIBC_2.2 sendto F
 GLIBC_2.2 sigaction F
diff --git a/sysdeps/unix/sysv/linux/send.c b/sysdeps/unix/sysv/linux/send.c
index 283e09e2f3..f29a7de349 100644
--- a/sysdeps/unix/sysv/linux/send.c
+++ b/sysdeps/unix/sysv/linux/send.c
@@ -32,6 +32,4 @@  __libc_send (int fd, const void *buf, size_t len, int flags)
 }
 weak_alias (__libc_send, send)
 weak_alias (__libc_send, __send)
-#ifdef HAVE_INTERNAL_SEND_SYMBOL
 libc_hidden_def (__send)
-#endif
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index f60266d245..8d4a802c03 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -40,7 +40,6 @@  GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pthread_setspecific F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
-GLIBC_2.2 __send F
 GLIBC_2.2 __sigaction F
 GLIBC_2.2 _pthread_cleanup_pop F
 GLIBC_2.2 _pthread_cleanup_pop_restore F
@@ -148,7 +147,6 @@  GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 sem_trywait F
 GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
-GLIBC_2.2 send F
 GLIBC_2.2 sendmsg F
 GLIBC_2.2 sendto F
 GLIBC_2.2 sigaction F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index f60266d245..8d4a802c03 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -40,7 +40,6 @@  GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pthread_setspecific F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
-GLIBC_2.2 __send F
 GLIBC_2.2 __sigaction F
 GLIBC_2.2 _pthread_cleanup_pop F
 GLIBC_2.2 _pthread_cleanup_pop_restore F
@@ -148,7 +147,6 @@  GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 sem_trywait F
 GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
-GLIBC_2.2 send F
 GLIBC_2.2 sendmsg F
 GLIBC_2.2 sendto F
 GLIBC_2.2 sigaction F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index bb22a8fbc5..34b5cf8b04 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -18,7 +18,6 @@  GLIBC_2.0 __pthread_mutexattr_init F
 GLIBC_2.0 __pthread_mutexattr_settype F
 GLIBC_2.0 __pthread_once F
 GLIBC_2.0 __pthread_setspecific F
-GLIBC_2.0 __send F
 GLIBC_2.0 __sigaction F
 GLIBC_2.0 _pthread_cleanup_pop F
 GLIBC_2.0 _pthread_cleanup_pop_restore F
@@ -71,7 +70,6 @@  GLIBC_2.0 sem_init F
 GLIBC_2.0 sem_post F
 GLIBC_2.0 sem_trywait F
 GLIBC_2.0 sem_wait F
-GLIBC_2.0 send F
 GLIBC_2.0 sendmsg F
 GLIBC_2.0 sendto F
 GLIBC_2.0 sigaction F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index a7d6b3deea..42585ba3ce 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -40,7 +40,6 @@  GLIBC_2.2 __pthread_rwlock_wrlock F
 GLIBC_2.2 __pthread_setspecific F
 GLIBC_2.2 __pwrite64 F
 GLIBC_2.2 __res_state F
-GLIBC_2.2 __send F
 GLIBC_2.2 __sigaction F
 GLIBC_2.2 _pthread_cleanup_pop F
 GLIBC_2.2 _pthread_cleanup_pop_restore F
@@ -148,7 +147,6 @@  GLIBC_2.2 sem_timedwait F
 GLIBC_2.2 sem_trywait F
 GLIBC_2.2 sem_unlink F
 GLIBC_2.2 sem_wait F
-GLIBC_2.2 send F
 GLIBC_2.2 sendmsg F
 GLIBC_2.2 sendto F
 GLIBC_2.2 sigaction F
diff --git a/sysdeps/unix/sysv/linux/sysdep.h b/sysdeps/unix/sysv/linux/sysdep.h
index bff83e5bcd..3ef72dc805 100644
--- a/sysdeps/unix/sysv/linux/sysdep.h
+++ b/sysdeps/unix/sysv/linux/sysdep.h
@@ -95,10 +95,6 @@ 
  (long) (val), \
  (long) (((uint64_t) (val)) >> 32)
 
-/* Exports the __send symbol on send.c linux implementation (some ABI have
-   it missing due the usage of a old generic version without it).  */
-#define HAVE_INTERNAL_SEND_SYMBOL	1
-
 /* Export the ___brk_addr symbol on brk.c implementation (some ABIs export
    it due and old crtstuff.c code).  */
 #define HAVE_INTERNAL_BRK_ADDR_SYMBOL   0
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index eb769489f6..0065e7843d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -40,7 +40,6 @@  GLIBC_2.2.5 __pthread_rwlock_wrlock F
 GLIBC_2.2.5 __pthread_setspecific F
 GLIBC_2.2.5 __pwrite64 F
 GLIBC_2.2.5 __res_state F
-GLIBC_2.2.5 __send F
 GLIBC_2.2.5 __sigaction F
 GLIBC_2.2.5 _pthread_cleanup_pop F
 GLIBC_2.2.5 _pthread_cleanup_pop_restore F
@@ -148,7 +147,6 @@  GLIBC_2.2.5 sem_timedwait F
 GLIBC_2.2.5 sem_trywait F
 GLIBC_2.2.5 sem_unlink F
 GLIBC_2.2.5 sem_wait F
-GLIBC_2.2.5 send F
 GLIBC_2.2.5 sendmsg F
 GLIBC_2.2.5 sendto F
 GLIBC_2.2.5 sigaction F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 2d669e82d9..13ac2abbb3 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -38,7 +38,6 @@  GLIBC_2.16 __pthread_unregister_cancel_restore F
 GLIBC_2.16 __pthread_unwind_next F
 GLIBC_2.16 __pwrite64 F
 GLIBC_2.16 __res_state F
-GLIBC_2.16 __send F
 GLIBC_2.16 __sigaction F
 GLIBC_2.16 _pthread_cleanup_pop F
 GLIBC_2.16 _pthread_cleanup_pop_restore F
@@ -168,7 +167,6 @@  GLIBC_2.16 sem_timedwait F
 GLIBC_2.16 sem_trywait F
 GLIBC_2.16 sem_unlink F
 GLIBC_2.16 sem_wait F
-GLIBC_2.16 send F
 GLIBC_2.16 sendmsg F
 GLIBC_2.16 sendto F
 GLIBC_2.16 sigaction F