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:39:46 +0200
commitaef97dc952a6af0cbf4b2408993745fa97d89a2b (patch)
treee5d966fa6e8885c836740f9b85befbd13420dc7f
parenteed27b3e46d0c92eb8bff6b2b5d7059a70996a8b (diff)
downloadglibc-aef97dc952a6af0cbf4b2408993745fa97d89a2b.tar.gz
glibc-aef97dc952a6af0cbf4b2408993745fa97d89a2b.tar.xz
glibc-aef97dc952a6af0cbf4b2408993745fa97d89a2b.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 3f66666c6c..60d69397f9 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))