public inbox for libc-stable@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 2.34] debug: Mark libSegFault.so as NODELETE
@ 2023-07-20 16:53 Florian Weimer
  2023-07-21 14:33 ` Carlos O'Donell
  0 siblings, 1 reply; 2+ messages in thread
From: Florian Weimer @ 2023-07-20 16:53 UTC (permalink / raw)
  To: libc-alpha; +Cc: libc-stable

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.

Submitting this for 2.34 because libSegFault.so was removed in 2.35.
Verified using readelf -dW that NODELETE is now set on libSegFault.so.
(Note that there is no lib prefix on the LDFLAGS variable.)

---
 debug/Makefile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/debug/Makefile b/debug/Makefile
index 71248e0d45..9fbc40dc69 100644
--- a/debug/Makefile
+++ b/debug/Makefile
@@ -213,6 +213,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))

base-commit: cad3adf4ddeada37912c1c13b59a2ea5dd5d2832


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH 2.34] debug: Mark libSegFault.so as NODELETE
  2023-07-20 16:53 [PATCH 2.34] debug: Mark libSegFault.so as NODELETE Florian Weimer
@ 2023-07-21 14:33 ` Carlos O'Donell
  0 siblings, 0 replies; 2+ messages in thread
From: Carlos O'Donell @ 2023-07-21 14:33 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha; +Cc: libc-stable

On 7/20/23 12:53, Florian Weimer via Libc-stable wrote:
> 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.

Agreed. This is a safe default to take given the usage of this DSO.

LGTM for backport into all stables branches with libSegFault.so.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>

> Submitting this for 2.34 because libSegFault.so was removed in 2.35.
> Verified using readelf -dW that NODELETE is now set on libSegFault.so.
> (Note that there is no lib prefix on the LDFLAGS variable.)
> 
> ---
>  debug/Makefile | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/debug/Makefile b/debug/Makefile
> index 71248e0d45..9fbc40dc69 100644
> --- a/debug/Makefile
> +++ b/debug/Makefile
> @@ -213,6 +213,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))
> 
> base-commit: cad3adf4ddeada37912c1c13b59a2ea5dd5d2832
> 

-- 
Cheers,
Carlos.


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-07-21 14:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-20 16:53 [PATCH 2.34] debug: Mark libSegFault.so as NODELETE Florian Weimer
2023-07-21 14:33 ` Carlos O'Donell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).