hurd: Avoid more libc.so local PLTs
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Tue, 3 Apr 2018 00:34:31 +0000 (00:34 +0000)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Tue, 3 Apr 2018 00:36:33 +0000 (00:36 +0000)
* hurd/catch-signal.c (__hurd_catch_signal): Call __libc_siglongjmp
instead if siglongjmp.
(hurd_safe_memmove): Call __libc_longjmp instead of longjmp.
* hurd/hurdfault.c (faulted): Call __libc_longjmp instead of longjmp.
* include/setjmp.h (__libc_siglongjmp, __libc_longjmp): New hidden
prototypes.
* libio/iolibio.h (_IO_puts): New hidden prototype.
* libio/ioputs.c (_IO_puts): New hidden def.
* setjmp/longjmp.c (__libc_longjmp, __libc_siglongjmp): New hidden
defs.
* sysdeps/mach/hurd/sigwait.c (__sigwait): Call __libc_longjmp instead
of longjmp.

ChangeLog
hurd/catch-signal.c
hurd/hurdfault.c
include/setjmp.h
libio/iolibio.h
libio/ioputs.c
setjmp/longjmp.c
sysdeps/mach/hurd/sigwait.c

index 9e2dfa9..0b54ed7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
        _hurd_fd_error_signal): Add hidden prototype.
        [_HURD_FD_H_HIDDEN_DEF] (_hurd_fd_error, _hurd_fd_error_signal): Add
        hidden def.
+       * hurd/catch-signal.c (__hurd_catch_signal): Call __libc_siglongjmp
+       instead if siglongjmp.
+       (hurd_safe_memmove): Call __libc_longjmp instead of longjmp.
+       * hurd/hurdfault.c (faulted): Call __libc_longjmp instead of longjmp.
+       * include/setjmp.h (__libc_siglongjmp, __libc_longjmp): New hidden
+       prototypes.
+       * libio/iolibio.h (_IO_puts): New hidden prototype.
+       * libio/ioputs.c (_IO_puts): New hidden def.
+       * setjmp/longjmp.c (__libc_longjmp, __libc_siglongjmp): New hidden
+       defs.
+       * sysdeps/mach/hurd/sigwait.c (__sigwait): Call __libc_longjmp instead
+       of longjmp.
 
        * sysdeps/mach/hurd/localplt.data: New file.
 
index 56ce865..a00ccef 100644 (file)
@@ -32,7 +32,7 @@ __hurd_catch_signal (sigset_t sigset,
      instance calling hurd_catch_signal again would then dump core.  */
   sigjmp_buf buf;
   void throw (int signo, long int sigcode, struct sigcontext *scp)
-    { siglongjmp (buf, scp->sc_error ?: EGRATUITOUS); }
+    { __libc_siglongjmp (buf, scp->sc_error ?: EGRATUITOUS); }
 
   struct hurd_signal_preemptor preemptor =
     {
@@ -121,7 +121,7 @@ hurd_safe_memmove (void *dest, const void *src, size_t nbytes)
 {
   jmp_buf buf;
   void throw (int signo, long int sigcode, struct sigcontext *scp)
-    { longjmp (buf, scp->sc_error ?: EGRATUITOUS); }
+    { __libc_longjmp (buf, scp->sc_error ?: EGRATUITOUS); }
 
   struct hurd_signal_preemptor src_preemptor =
     {
index 39a4522..c42d5e7 100644 (file)
@@ -152,7 +152,7 @@ faulted (void)
     __libc_fatal ("BUG: unexpected fault in signal thread\n");
 
   _hurdsig_fault_preemptor.signals = 0;
-  longjmp (_hurdsig_fault_env, 1);
+  __libc_longjmp (_hurdsig_fault_env, 1);
 }
 
 static char faultstack[1024];
index 263bc64..682ff4b 100644 (file)
@@ -24,6 +24,9 @@ extern void __libc_siglongjmp (sigjmp_buf env, int val)
 extern void __libc_longjmp (sigjmp_buf env, int val)
      __attribute__ ((noreturn));
 
+libc_hidden_proto (__libc_siglongjmp)
+libc_hidden_proto (__libc_longjmp)
+
 libc_hidden_proto (_setjmp)
 libc_hidden_proto (__sigsetjmp)
 
index 69e1c0e..6c94fe6 100644 (file)
@@ -41,6 +41,7 @@ extern char* _IO_gets (char*);
 extern void _IO_perror (const char*) __THROW;
 extern int _IO_printf (const char*, ...);
 extern int _IO_puts (const char*);
+libc_hidden_proto (_IO_puts)
 extern int _IO_scanf (const char*, ...);
 extern void _IO_setbuffer (FILE *, char*, size_t) __THROW;
 libc_hidden_proto (_IO_setbuffer)
index 0a80fb7..c9967c3 100644 (file)
@@ -46,3 +46,4 @@ _IO_puts (const char *str)
 }
 
 weak_alias (_IO_puts, puts)
+libc_hidden_def (_IO_puts)
index a2a7065..0555d6d 100644 (file)
@@ -46,4 +46,6 @@ strong_alias (__libc_siglongjmp, __libc_longjmp)
 weak_alias (__libc_siglongjmp, _longjmp)
 weak_alias (__libc_siglongjmp, longjmp)
 weak_alias (__libc_siglongjmp, siglongjmp)
+libc_hidden_def (__libc_longjmp)
+libc_hidden_def (__libc_siglongjmp)
 #endif
index ce17cce..321ab46 100644 (file)
@@ -59,7 +59,7 @@ __sigwait (const sigset_t *set, int *sig)
     handler (int sig)
     {
       assert (sig == signo);
-      longjmp (buf, 1);
+      __libc_longjmp (buf, 1);
     }
 
   wait = __mach_reply_port ();