mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
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>
This commit is contained in:
@ -49,20 +49,16 @@
|
||||
static const char *fname;
|
||||
|
||||
|
||||
/* We better should not use `strerror' since it can call far too many
|
||||
other functions which might fail. Do it here ourselves. */
|
||||
/* Print the signal number SIGNAL. Either strerror or strsignal might
|
||||
call local internal functions and these in turn call far too many
|
||||
other functions and might even allocate memory which might fail. */
|
||||
static void
|
||||
write_strsignal (int fd, int signal)
|
||||
{
|
||||
if (signal < 0 || signal >= _NSIG || _sys_siglist[signal] == NULL)
|
||||
{
|
||||
char buf[30];
|
||||
char *ptr = _itoa_word (signal, &buf[sizeof (buf)], 10, 0);
|
||||
WRITE_STRING ("signal ");
|
||||
write (fd, buf, &buf[sizeof (buf)] - ptr);
|
||||
}
|
||||
else
|
||||
WRITE_STRING (_sys_siglist[signal]);
|
||||
char buf[30];
|
||||
char *ptr = _itoa_word (signal, &buf[sizeof (buf)], 10, 0);
|
||||
WRITE_STRING ("signal ");
|
||||
write (fd, buf, &buf[sizeof (buf)] - ptr);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user