about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2023-07-20 18:31:48 +0200
committerFlorian Weimer <fweimer@redhat.com>2023-07-21 16:41:11 +0200
commit66b1fe1d4fa67714925ac381c18f8b9cffdb968a (patch)
tree9d6e013950c7d30b30dde6e7f57ee5642486c9d9
parent5ac4f45c1b1afdf5ab9ca0d4c0915fd6980bdccd (diff)
downloadglibc-66b1fe1d4fa67714925ac381c18f8b9cffdb968a.tar.gz
glibc-66b1fe1d4fa67714925ac381c18f8b9cffdb968a.tar.xz
glibc-66b1fe1d4fa67714925ac381c18f8b9cffdb968a.zip
debug: Mark libSegFault.so as NODELETE
The signal handler installed in the ELF constructor cannot easily
be removed again (because the program may have changed handlers
in the meantime).  Mark the object as NODELETE so that the registered
handler function is never unloaded.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
(cherry picked from commit 23ee92deea4c99d0e6a5f48fa7b942909b123ec5)
-rw-r--r--debug/Makefile2
1 files changed, 2 insertions, 0 deletions
diff --git a/debug/Makefile b/debug/Makefile
index 6351b7e9f4..48d03395a1 100644
--- a/debug/Makefile
+++ b/debug/Makefile
@@ -168,6 +168,8 @@ extra-libs-others = $(extra-libs)
 
 libSegFault-routines = segfault
 libSegFault-inhibit-o = $(filter-out .os,$(object-suffixes))
+# libSegFault.so installs a signal handler in its ELF constructor.
+LDFLAGS-SegFault.so = -Wl,--enable-new-dtags,-z,nodelete
 
 libpcprofile-routines = pcprofile
 libpcprofile-inhibit-o = $(filter-out .os,$(object-suffixes))