summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog30
-rw-r--r--FAQ.in30
-rw-r--r--linuxthreads/ChangeLog5
-rw-r--r--linuxthreads/Versions3
-rw-r--r--linuxthreads/pthread.c12
-rw-r--r--linuxthreads/signals.c5
-rw-r--r--linuxthreads/spinlock.h2
-rw-r--r--localedata/ChangeLog81
-rw-r--r--sysdeps/unix/sysv/linux/Versions2
-rw-r--r--sysdeps/unix/sysv/linux/arm/sigaction.c7
-rw-r--r--sysdeps/unix/sysv/linux/i386/sigaction.c5
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sigaction.c5
-rw-r--r--sysdeps/unix/sysv/linux/sigaction.c7
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c8
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c8
15 files changed, 165 insertions, 45 deletions
diff --git a/ChangeLog b/ChangeLog
index 475b668797..19389326ce 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+2000-07-06  Ulrich Drepper  <drepper@redhat.com>
+
+	* include/signal.h: Declare __libc_sigaction.
+	* sysdeps/unix/sysv/linux/Versions: Export __libc_sigaction.
+	* sysdeps/unix/sysv/linux/sigaction.c: Add __libc_sigaction alias.
+	* sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise.
+	* sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
+	* sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c: Likewise.
+
+	* configure.in: Fix CLAGS-memprofstat.c definition after
+	2000-06-19 change.
+	Patch by Bradford W. Johnson <bradford@math.umn.edu>.
+
+2000-07-06  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Pass 0
+	instead of NULL to elf_machine_fixup_plt t argument.
+	* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/mmap64.c (__mmap64): Add
+	cast.
+
+2000-07-06  Andreas Jaeger  <aj@suse.de>
+
+	* crypt/Makefile (LDLIBS-cert): Removed.
+	(LDLIBS-md5c-test): Removed.
+	($(objpfx)cert): Renamed from cert.out to fix dependencies.
+	($(objpfx)md5c-test): Likewise for md5c-test.out.
+
 2000-07-06  Andreas Jaeger  <aj@suse.de>
 
 	* sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): The type
diff --git a/FAQ.in b/FAQ.in
index 348a8607cd..d010ef8e93 100644
--- a/FAQ.in
+++ b/FAQ.in
@@ -217,8 +217,8 @@ errors while linking before deciding there is a problem.
 ??addon	What are these `add-ons'?
 
 {UD} To avoid complications with export rules or external source code some
-optional parts of the libc are distributed as separate packages (e.g., the
-crypt package, see ?crypt).
+optional parts of the libc are distributed as separate packages, e.g., the
+linuxthreads package.
 
 To use these packages as part of GNU libc, just unpack the tarfiles in the
 libc source directory and tell the configuration script about them using the
@@ -227,7 +227,7 @@ to find all the add-on packages in your source tree.  This may not work.  If
 it doesn't, or if you want to select only a subset of the add-ons, give a
 comma-separated list of the add-ons to enable:
 
-	configure --enable-add-ons=crypt,linuxthreads
+	configure --enable-add-ons=linuxthreads
 
 for example.
 
@@ -237,9 +237,13 @@ else.  The existing makefiles do most of the work; only some few stub rules
 must be written to get everything running.
 
 Most add-ons are tightly coupled to a specific GNU libc version.  Please
-check that the add-ons work with the GNU libc.  For example the crypt and
-linuxthreads add-ons have the same numbering scheme as the libc and will in
-general only work with the corresponding libc.
+check that the add-ons work with the GNU libc.  For example the linuxthreads
+add-on has the same numbering scheme as the libc and will in general only
+work with the corresponding libc.
+
+{AJ} With glibc 2.2 the crypt add-on and with glibc 2.1 the localedata
+add-on have been integrated into the normal glibc distribution, crypt and
+localedata are therefore not anymore add-ons.
 
 ??	My XXX kernel emulates a floating-point coprocessor for me.
 	Should I enable --with-fp?
@@ -472,20 +476,8 @@ versions of some string functions.  These can only be used with GCC.  See
 	`crypt' and `setkey'.  Why aren't these functions in the
 	libc anymore?
 
-{UD} The US places restrictions on exporting cryptographic programs and
-source code.  Until this law gets abolished we cannot ship the cryptographic
-functions together with glibc.
-
-The functions are available, as an add-on (see ?addon).  People in the US
-may get it from the same place they got GNU libc from.  People outside the
-US should get the code from ftp.gwdg.de [134.76.11.100] in the directory
-pub/linux/glibc, or another archive site outside the USA.  The README explains
-how to install the sources.
 
-If you already have the crypt code on your system the reason for the failure
-is probably that you did not link with -lcrypt.  The crypto functions are in
-a separate library to make it possible to export GNU libc binaries from the
-US.
+Removed.  Does not apply anymore.
 
 ??	When I use GNU libc on my Linux system by linking against
 	the libc.so which comes with glibc all I get is a core dump.
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index d825934e28..9af0269f65 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,5 +1,10 @@
 2000-07-06  Ulrich Drepper  <drepper@redhat.com>
 
+	* Version: Export __sigaction.
+	* signals.c: Define __sigaction alias.  Use __libc_sigaction instead
+	of __sigaction.
+	* pthread.c: Use __libc_sigaction instead of __sigaction.
+
 	* condvar.c: Implement pthread_condattr_getpshared and
 	pthread_condattr_setpshared.
 	* mutex.c: Implement pthread_mutexattr_getpshared and
diff --git a/linuxthreads/Versions b/linuxthreads/Versions
index 94a18e528c..c52d88f4e1 100644
--- a/linuxthreads/Versions
+++ b/linuxthreads/Versions
@@ -85,6 +85,9 @@ libpthread {
 
     # The error functions.
     __errno_location; __h_errno_location;
+
+    # Must be preemptible
+    __sigaction;
   }
   GLIBC_2.1 {
     # Functions with changed interface.
diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c
index a3f829f9ac..2700a29fb1 100644
--- a/linuxthreads/pthread.c
+++ b/linuxthreads/pthread.c
@@ -379,15 +379,15 @@ static void pthread_initialize(void)
   sa.sa_handler = pthread_handle_sigrestart;
   sigemptyset(&sa.sa_mask);
   sa.sa_flags = 0;
-  __sigaction(__pthread_sig_restart, &sa, NULL);
+  __libc_sigaction(__pthread_sig_restart, &sa, NULL);
   sa.sa_handler = pthread_handle_sigcancel;
   // sa.sa_flags = 0;
-  __sigaction(__pthread_sig_cancel, &sa, NULL);
+  __libc_sigaction(__pthread_sig_cancel, &sa, NULL);
   if (__pthread_sig_debug > 0) {
     sa.sa_handler = pthread_handle_sigdebug;
     sigemptyset(&sa.sa_mask);
     // sa.sa_flags = 0;
-    __sigaction(__pthread_sig_debug, &sa, NULL);
+    __libc_sigaction(__pthread_sig_debug, &sa, NULL);
   }
   /* Initially, block __pthread_sig_restart. Will be unblocked on demand. */
   sigemptyset(&mask);
@@ -768,10 +768,10 @@ void __pthread_kill_other_threads_np(void)
   sigemptyset(&sa.sa_mask);
   sa.sa_flags = 0;
   sa.sa_handler = SIG_DFL;
-  __sigaction(__pthread_sig_restart, &sa, NULL);
-  __sigaction(__pthread_sig_cancel, &sa, NULL);
+  __libc_sigaction(__pthread_sig_restart, &sa, NULL);
+  __libc_sigaction(__pthread_sig_cancel, &sa, NULL);
   if (__pthread_sig_debug > 0)
-    __sigaction(__pthread_sig_debug, &sa, NULL);
+    __libc_sigaction(__pthread_sig_debug, &sa, NULL);
 }
 weak_alias (__pthread_kill_other_threads_np, pthread_kill_other_threads_np)
 
diff --git a/linuxthreads/signals.c b/linuxthreads/signals.c
index 452d860f92..be9e5aa1a2 100644
--- a/linuxthreads/signals.c
+++ b/linuxthreads/signals.c
@@ -131,7 +131,7 @@ static void pthread_sighandler_rt(int signo, struct siginfo *si,
 
 /* The wrapper around sigaction.  Install our own signal handler
    around the signal. */
-int sigaction(int sig, const struct sigaction * act,
+int __sigaction(int sig, const struct sigaction * act,
               struct sigaction * oact)
 {
   struct sigaction newact;
@@ -159,7 +159,7 @@ int sigaction(int sig, const struct sigaction * act,
     }
   else
     newactp = NULL;
-  if (__sigaction(sig, newactp, oact) == -1)
+  if (__libc_sigaction(sig, newactp, oact) == -1)
     return -1;
   if (sig > 0 && sig < NSIG)
     {
@@ -172,6 +172,7 @@ int sigaction(int sig, const struct sigaction * act,
     }
   return 0;
 }
+strong_alias(__sigaction, sigaction)
 
 /* A signal handler that does nothing */
 static void pthread_null_sighandler(int sig) { }
diff --git a/linuxthreads/spinlock.h b/linuxthreads/spinlock.h
index 96f39551dd..6609ef71c9 100644
--- a/linuxthreads/spinlock.h
+++ b/linuxthreads/spinlock.h
@@ -107,7 +107,7 @@ static inline int __pthread_trylock (struct _pthread_fastlock * lock)
 #endif
 #if !defined HAS_COMPARE_AND_SWAP
   {
-    return (testandset(&lock->__spinlock) : EBUSY : 0)
+    return (testandset(&lock->__spinlock) ? EBUSY : 0);
   }
 #endif
 
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index a6bafc9a35..96d0753a25 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,84 @@
+2000-07-06  Jakub Jelinek  <jakub@redhat.com>
+
+	* locales/af_ZA (LC_TELEPHONE): Add int_prefix.
+	* locales/ar_SA (LC_TELEPHONE): Likewise.
+	* locales/be_BY (LC_TELEPHONE): Likewise.
+	* locales/bg_BG (LC_TELEPHONE): Likewise.
+	* locales/ca_ES (LC_TELEPHONE): Likewise.
+	* locales/da_DK (LC_TELEPHONE): Likewise.
+	* locales/de_BE (LC_TELEPHONE): Likewise.
+	* locales/de_CH (LC_TELEPHONE): Likewise.
+	* locales/de_LU (LC_TELEPHONE): Likewise.
+	* locales/el_GR (LC_TELEPHONE): Likewise.
+	* locales/en_AU (LC_TELEPHONE): Likewise.
+	* locales/en_BW (LC_TELEPHONE): Likewise.
+	* locales/en_CA (LC_TELEPHONE): Likewise.
+	* locales/en_CA,2.5 (LC_TELEPHONE): Likewise.
+	* locales/en_DK (LC_TELEPHONE): Likewise.
+	* locales/en_IE (LC_TELEPHONE): Likewise.
+	* locales/en_NZ (LC_TELEPHONE): Likewise.
+	* locales/en_ZA (LC_TELEPHONE): Likewise.
+	* locales/en_ZW (LC_TELEPHONE): Likewise.
+	* locales/es_AR (LC_TELEPHONE): Likewise.
+	* locales/es_BO (LC_TELEPHONE): Likewise.
+	* locales/es_CL (LC_TELEPHONE): Likewise.
+	* locales/es_CO (LC_TELEPHONE): Likewise.
+	* locales/es_DO (LC_TELEPHONE): Likewise.
+	* locales/es_EC (LC_TELEPHONE): Likewise.
+	* locales/es_ES (LC_TELEPHONE): Likewise.
+	* locales/es_GT (LC_TELEPHONE): Likewise.
+	* locales/es_HN (LC_TELEPHONE): Likewise.
+	* locales/es_MX (LC_TELEPHONE): Likewise.
+	* locales/es_PA (LC_TELEPHONE): Likewise.
+	* locales/es_PE (LC_TELEPHONE): Likewise.
+	* locales/es_PY (LC_TELEPHONE): Likewise.
+	* locales/es_SV (LC_TELEPHONE): Likewise.
+	* locales/es_US (LC_TELEPHONE): Likewise.
+	* locales/es_UY (LC_TELEPHONE): Likewise.
+	* locales/es_VE (LC_TELEPHONE): Likewise.
+	* locales/et_EE (LC_TELEPHONE): Likewise.
+	* locales/eu_ES (LC_TELEPHONE): Likewise.
+	* locales/fa_IR (LC_TELEPHONE): Likewise.
+	* locales/fi_FI (LC_TELEPHONE): Likewise.
+	* locales/fo_FO (LC_TELEPHONE): Likewise.
+	* locales/fr_BE (LC_TELEPHONE): Likewise.
+	* locales/fr_CA (LC_TELEPHONE): Likewise.
+	* locales/fr_CA,2.13 (LC_TELEPHONE): Likewise.
+	* locales/fr_CH (LC_TELEPHONE): Likewise.
+	* locales/fr_LU (LC_TELEPHONE): Likewise.
+	* locales/ga_IE (LC_TELEPHONE): Likewise.
+	* locales/gl_ES (LC_TELEPHONE): Likewise.
+	* locales/gv_GB (LC_TELEPHONE): Likewise.
+	* locales/he_IL (LC_TELEPHONE): Likewise.
+	* locales/hr_HR (LC_TELEPHONE): Likewise.
+	* locales/hu_HU (LC_TELEPHONE): Likewise.
+	* locales/id_ID (LC_TELEPHONE): Likewise.
+	* locales/in_ID (LC_TELEPHONE): Likewise.
+	* locales/is_IS (LC_TELEPHONE): Likewise.
+	* locales/it_CH (LC_TELEPHONE): Likewise.
+	* locales/it_IT (LC_TELEPHONE): Likewise.
+	* locales/iw_IL (LC_TELEPHONE): Likewise.
+	* locales/kl_GL (LC_TELEPHONE): Likewise.
+	* locales/ko_KR (LC_TELEPHONE): Likewise.
+	* locales/kw_GB (LC_TELEPHONE): Likewise.
+	* locales/lt_LT (LC_TELEPHONE): Likewise.
+	* locales/lv_LV (LC_TELEPHONE): Likewise.
+	* locales/mk_MK (LC_TELEPHONE): Likewise.
+	* locales/nl_BE (LC_TELEPHONE): Likewise.
+	* locales/nl_NL (LC_TELEPHONE): Likewise.
+	* locales/pl_PL (LC_TELEPHONE): Likewise.
+	* locales/pt_BR (LC_TELEPHONE): Likewise.
+	* locales/ro_RO (LC_TELEPHONE): Likewise.
+	* locales/ru_RU (LC_TELEPHONE): Likewise.
+	* locales/ru_UA (LC_TELEPHONE): Likewise.
+	* locales/sk_SK (LC_TELEPHONE): Likewise.
+	* locales/sl_SI (LC_TELEPHONE): Likewise.
+	* locales/sr_YU (LC_TELEPHONE): Likewise.
+	* locales/sv_FI (LC_TELEPHONE): Likewise.
+	* locales/th_TH (LC_TELEPHONE): Likewise.
+	* locales/tr_TR (LC_TELEPHONE): Likewise.
+	* locales/uk_UA (LC_TELEPHONE): Likewise.
+
 2000-07-05  NIIBE Yutaka  <gniibe@chroot.org>
 
 	* locales/th_TH: Update revision information.
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 483e0140ae..5b085620db 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -84,7 +84,7 @@ libc {
   }
   GLIBC_2.2 {
     # needed in other libraries.
-    __endmntent; __getmntent_r; __setmntent; __statfs;
+    __endmntent; __getmntent_r; __setmntent; __statfs; __libc_sigaction;
 
     # ipc ctl interface change.
     semctl; shmctl; msgctl;
diff --git a/sysdeps/unix/sysv/linux/arm/sigaction.c b/sysdeps/unix/sysv/linux/arm/sigaction.c
index 2e70b321ef..ae8b7f8e72 100644
--- a/sysdeps/unix/sysv/linux/arm/sigaction.c
+++ b/sysdeps/unix/sysv/linux/arm/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -55,7 +55,7 @@ extern void __default_rt_sa_restorer(void);
 /* If ACT is not NULL, change the action for SIG to *ACT.
    If OACT is not NULL, put the old action for SIG in *OACT.  */
 int
-__sigaction (sig, act, oact)
+__libc_sigaction (sig, act, oact)
      int sig;
      const struct sigaction *act;
      struct sigaction *oact;
@@ -147,4 +147,5 @@ __sigaction (sig, act, oact)
   return result;
 }
 
-weak_alias (__sigaction, sigaction)
+strong_alias (__libc_sigaction, __sigaction)
+weak_alias (__libc_sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/linux/i386/sigaction.c b/sysdeps/unix/sysv/linux/i386/sigaction.c
index 5e431218e9..c7493de6bb 100644
--- a/sysdeps/unix/sysv/linux/i386/sigaction.c
+++ b/sysdeps/unix/sysv/linux/i386/sigaction.c
@@ -55,7 +55,7 @@ static void restore (void) asm ("__restore");
 /* If ACT is not NULL, change the action for SIG to *ACT.
    If OACT is not NULL, put the old action for SIG in *OACT.  */
 int
-__sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
+__libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
 {
 #if __ASSUME_REALTIME_SIGNALS == 0
   struct old_kernel_sigaction k_newact, k_oldact;
@@ -146,7 +146,8 @@ __sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
 #endif
 }
 
-weak_alias (__sigaction, sigaction)
+strong_alias (__libc_sigaction, __sigaction)
+weak_alias (__libc_sigaction, sigaction)
 
 /* NOTE: Please think twice before making any changes to the bits of
    code below.  GDB needs some intimate knowledge about it to
diff --git a/sysdeps/unix/sysv/linux/ia64/sigaction.c b/sysdeps/unix/sysv/linux/ia64/sigaction.c
index c84964077b..3769abf0ea 100644
--- a/sysdeps/unix/sysv/linux/ia64/sigaction.c
+++ b/sysdeps/unix/sysv/linux/ia64/sigaction.c
@@ -38,7 +38,7 @@ extern int __syscall_rt_sigaction (int, const struct sigaction *,
 /* If ACT is not NULL, change the action for SIG to *ACT.
    If OACT is not NULL, put the old action for SIG in *OACT.  */
 int
-__sigaction (sig, act, oact)
+__libc_sigaction (sig, act, oact)
      int sig;
      const struct sigaction *act;
      struct sigaction *oact;
@@ -48,4 +48,5 @@ __sigaction (sig, act, oact)
   return INLINE_SYSCALL (rt_sigaction, 4, sig, act, oact, _NSIG / 8);
 }
 
-weak_alias (__sigaction, sigaction)
+strong_alias (__libc_sigaction, __sigaction)
+weak_alias (__libc_sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/linux/sigaction.c b/sysdeps/unix/sysv/linux/sigaction.c
index dc46bb1b5b..d97b8bf62d 100644
--- a/sysdeps/unix/sysv/linux/sigaction.c
+++ b/sysdeps/unix/sysv/linux/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -45,7 +45,7 @@ extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *,
 /* If ACT is not NULL, change the action for SIG to *ACT.
    If OACT is not NULL, put the old action for SIG in *OACT.  */
 int
-__sigaction (sig, act, oact)
+__libc_sigaction (sig, act, oact)
      int sig;
      const struct sigaction *act;
      struct sigaction *oact;
@@ -131,4 +131,5 @@ __sigaction (sig, act, oact)
 #endif
 }
 
-weak_alias (__sigaction, sigaction)
+string_alias (__libc_sigaction, __sigaction)
+weak_alias (__libc_sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c b/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
index b33feeb09c..2b6e58d5bd 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
@@ -1,5 +1,5 @@
 /* POSIX.1 sigaction call for Linux/SPARC.
-   Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Miguel de Icaza (miguel@nuclecu.unam.mx), 1997.
 
@@ -36,7 +36,8 @@ static void __sigreturn_stub (void);
 int __libc_missing_rt_sigs;
 
 int
-__sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
+__libc_sigaction (int sig, __const struct sigaction *act,
+		  struct sigaction *oact)
 {
   struct old_kernel_sigaction k_sigact, k_osigact;
   int ret;
@@ -134,7 +135,8 @@ __sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
   return -1;
 }
 
-weak_alias (__sigaction, sigaction);
+strong_alias (__libc_sigaction, __sigaction);
+weak_alias (__libc_sigaction, sigaction);
 
 static void
 __rt_sigreturn_stub (void)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c b/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c
index 87468fd409..3fba97fd51 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c
@@ -1,5 +1,5 @@
 /* POSIX.1 sigaction call for Linux/SPARC64.
-   Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Miguel de Icaza (miguel@nuclecu.unam.mx) and
    		  Jakub Jelinek (jj@ultra.linux.cz).
@@ -31,7 +31,8 @@
 static void __rt_sigreturn_stub (void);
 
 int
-__sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
+__libc_sigaction (int sig, __const struct sigaction *act,
+		  struct sigaction *oact)
 {
   int ret;
   struct kernel_sigaction kact, koact;
@@ -61,7 +62,8 @@ __sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
   return ret;
 }
 
-weak_alias (__sigaction, sigaction);
+strong_alias (__libc_sigaction, __sigaction);
+weak_alias (__libc_sigaction, sigaction);
 
 static void
 __rt_sigreturn_stub (void)