diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-04-24 11:09:00 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-07-07 14:10:58 -0300 |
commit | b1ccfc061feee9ce616444ded8e1cd5acf9fa97f (patch) | |
tree | fc6cf960f68245bcbf045df47955c253a94504d8 /stdio-common | |
parent | e4e11b1dba261cb650e631978622bf3b4a4d8c37 (diff) | |
download | glibc-b1ccfc061feee9ce616444ded8e1cd5acf9fa97f.tar.gz glibc-b1ccfc061feee9ce616444ded8e1cd5acf9fa97f.tar.xz glibc-b1ccfc061feee9ce616444ded8e1cd5acf9fa97f.zip |
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 <carlos@redhat.com>
Diffstat (limited to 'stdio-common')
-rw-r--r-- | stdio-common/psiginfo.c | 2 | ||||
-rw-r--r-- | stdio-common/psignal.c | 2 | ||||
-rw-r--r-- | stdio-common/siglist.c | 8 |
3 files changed, 7 insertions, 5 deletions
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 <signal.h> #include <libintl.h> -const char *const _sys_siglist[NSIG] = +const char *const __sys_siglist[NSIG] = { #define init_sig(sig, abbrev, desc) [sig] = desc, #include <siglist.h> #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 <siglist.h> #undef init_sig }; + +#include <siglist-compat.c> |