]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix hppa local PLT entries for sigprocmask (bug 18124).
authorJoseph Myers <joseph@codesourcery.com>
Thu, 15 Feb 2018 21:01:25 +0000 (21:01 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Thu, 15 Feb 2018 21:01:25 +0000 (21:01 +0000)
When adding/updating localplt.data for various architectures to get
the compilation tests passing everywhere, I generally made it reflect
the existing state of what local PLT entries were actually seen,
rather than an ideal state with as few as possible such entries,
mainly for functions that are intended to be interposable.

This patch eliminates some local PLT entries for hppa by using
__sigprocmask instead of sigprocmask in getcontext and setcontext.
The specific case of sigprocmask called by setcontext is the third of
four items in bug 18124 (the other three have already been fixed for
2.26 or earlier releases).  Note that hppa-specific localplt.data
entries for __sigsetjmp, _IO_funlockfile and __errno_location remain,
but the causes / fixes are less immediately obvious from source
inspection.

Tested (compilation tests only) with build-many-glibcs.py for
hppa-linux-gnu.

[BZ #18124]
* sysdeps/hppa/bsd-setjmp.S: Include <sysdep.h>.
(setjmp): Use HIDDEN_JUMPTARGET with __sigsetjmp.
* sysdeps/unix/sysv/linux/hppa/getcontext.S (__getcontext): Call
__sigprocmask instead of sigprocmask.
* sysdeps/unix/sysv/linux/hppa/setcontext.S (__setcontext):
Likewise.
* sysdeps/unix/sysv/linux/hppa/localplt.data: Remove entries for
__sigsetjmp and sigprocmask.

ChangeLog
sysdeps/unix/sysv/linux/hppa/getcontext.S
sysdeps/unix/sysv/linux/hppa/localplt.data
sysdeps/unix/sysv/linux/hppa/setcontext.S

index 9007ceaf985ef22ee4ace986195c53ddc7eb9b15..9bc1c16d2a968465af67e3fad42a94f3f9a8cf4c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2018-02-15  Joseph Myers  <joseph@codesourcery.com>
 
+       [BZ #18124]
+       * sysdeps/hppa/bsd-setjmp.S: Include <sysdep.h>.
+       (setjmp): Use HIDDEN_JUMPTARGET with __sigsetjmp.
+       * sysdeps/unix/sysv/linux/hppa/getcontext.S (__getcontext): Call
+       __sigprocmask instead of sigprocmask.
+       * sysdeps/unix/sysv/linux/hppa/setcontext.S (__setcontext):
+       Likewise.
+       * sysdeps/unix/sysv/linux/hppa/localplt.data: Remove entries for
+       __sigsetjmp and sigprocmask.
+
        [BZ #15105]
        * include/argz.h (argz_next): Use libc_hidden_proto.
        (__argz_next): Likewise.
index 4261f6080094f46b300d444d2c8d09e3c24f83c0..b8f978fde85770d6967b6d80665fc508519f2c52 100644 (file)
@@ -160,7 +160,7 @@ ENTRY(__getcontext)
        /* sigprocmask(SIG_BLOCK, NULL, &ucp->uc_sigmask);  */
        ldo     oSIGMASK(%r26), %r24
        copy    %r0, %r25
-       bl      sigprocmask, %r2
+       bl      __sigprocmask, %r2
        ldi     SIG_BLOCK, %r26
 
        /* Epilogue */
index 3279c0af05010e2611a4bfa0937ba2104df70cab..5f3475de191778f6816ed472d5af1f8da483fbae 100644 (file)
@@ -8,7 +8,6 @@ libc.so: memalign
 libc.so: realloc
 libc.so: __sigsetjmp
 libc.so: _IO_funlockfile
-libc.so: sigprocmask
 libc.so: __errno_location
 libm.so: matherr
 libpthread.so: __errno_location
index 8dc0ecf0d85e5920b974552838002879aa539544..d5ebc7c4f67dac9fd44defd7e68e9840eb3d5ce6 100644 (file)
@@ -43,7 +43,7 @@ ENTRY(__setcontext)
        /* sigprocmask(SIG_BLOCK, &ucp->uc_sigmask, NULL);  */
        copy    %r0, %r24
        ldo     oSIGMASK(%r3), %r25
-       bl      sigprocmask, %r2
+       bl      __sigprocmask, %r2
        ldi     SIG_SETMASK, %r26
 
        comib,<>,n 0,%ret0,.Lerror