glibc/sysdeps/unix/sysv/linux/hppa/localplt.data
Joseph Myers 3785b31c16 Fix hppa local PLT entries for sigprocmask (bug 18124).
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.
2018-02-15 21:01:25 +00:00

25 lines
763 B
Plaintext

# See scripts/check-localplt.awk for how this file is processed.
# PLT use is required for the malloc family and for matherr because
# users can define their own functions and have library internals call them.
libc.so: calloc
libc.so: free
libc.so: malloc
libc.so: memalign
libc.so: realloc
libc.so: __sigsetjmp
libc.so: _IO_funlockfile
libc.so: __errno_location
libm.so: matherr
libpthread.so: __errno_location
# The main malloc is interposed into the dynamic linker, for
# allocations after the initial link (when dlopen is used).
ld.so: malloc
ld.so: calloc
ld.so: realloc
ld.so: free
# The TLS-enabled version of these functions is interposed from libc.so.
ld.so: _dl_signal_error
ld.so: _dl_catch_error
ld.so: _dl_signal_exception
ld.so: _dl_catch_exception