From b1ccfc061feee9ce616444ded8e1cd5acf9fa97f Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Fri, 24 Apr 2020 11:09:00 -0300 Subject: signal: Move sys_siglist to a compat symbol The symbol was deprecated by strsignal and its usage imposes issues such as copy relocations. Its internal name is changed to __sys_siglist and __sys_sigabbrev to avoid static linking usage. The compat code is also refactored, since both Linux and Hurd usage the same strategy: export the same array with different object sizes. The libSegfault change avoids calling strsignal on the SIGFAULT signal handler (the current usage is already sketchy, adding a call that potentially issue locale internal function is even sketchier). Checked on x86_64-linux-gnu and i686-linux-gnu. I also run a check-abi on all affected platforms. Reviewed-by: Carlos O'Donell --- stdio-common/psiginfo.c | 2 +- stdio-common/psignal.c | 2 +- stdio-common/siglist.c | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) (limited to 'stdio-common') diff --git a/stdio-common/psiginfo.c b/stdio-common/psiginfo.c index 4d498d00aa..362de9e565 100644 --- a/stdio-common/psiginfo.c +++ b/stdio-common/psiginfo.c @@ -80,7 +80,7 @@ psiginfo (const siginfo_t *pinfo, const char *s) const char *desc; if (pinfo->si_signo >= 0 && pinfo->si_signo < NSIG - && ((desc = _sys_siglist[pinfo->si_signo]) != NULL + && ((desc = __sys_siglist[pinfo->si_signo]) != NULL #ifdef SIGRTMIN || (pinfo->si_signo >= SIGRTMIN && pinfo->si_signo < SIGRTMAX) #endif diff --git a/stdio-common/psignal.c b/stdio-common/psignal.c index de45e52734..1f217a3332 100644 --- a/stdio-common/psignal.c +++ b/stdio-common/psignal.c @@ -34,7 +34,7 @@ psignal (int sig, const char *s) else colon = ": "; - if (sig >= 0 && sig < NSIG && (desc = _sys_siglist[sig]) != NULL) + if (sig >= 0 && sig < NSIG && (desc = __sys_siglist[sig]) != NULL) (void) __fxprintf (NULL, "%s%s%s\n", s, colon, _(desc)); else { diff --git a/stdio-common/siglist.c b/stdio-common/siglist.c index 04082594a0..3e29aa8227 100644 --- a/stdio-common/siglist.c +++ b/stdio-common/siglist.c @@ -20,17 +20,19 @@ #include #include -const char *const _sys_siglist[NSIG] = +const char *const __sys_siglist[NSIG] = { #define init_sig(sig, abbrev, desc) [sig] = desc, #include #undef init_sig }; +libc_hidden_def (__sys_siglist) - -const char *const _sys_sigabbrev[NSIG] = +const char *const __sys_sigabbrev[NSIG] = { #define init_sig(sig, abbrev, desc) [sig] = abbrev, #include #undef init_sig }; + +#include -- cgit v1.2.3-70-g09d2