aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2010-10-11 10:58:31 -0400
committerUlrich Drepper <drepper@gmail.com>2010-10-11 10:58:31 -0400
commitb76b818e6fe2061e778b3a9bbe63c554c3f9b3c1 (patch)
tree419c31b08cd21e8146b689035e766a22192a2fc2
parent1751705d1c4e8b7aba391391d1d8d88fe8c9d8b8 (diff)
downloadglibc-b76b818e6fe2061e778b3a9bbe63c554c3f9b3c1.tar
glibc-b76b818e6fe2061e778b3a9bbe63c554c3f9b3c1.tar.gz
glibc-b76b818e6fe2061e778b3a9bbe63c554c3f9b3c1.tar.bz2
glibc-b76b818e6fe2061e778b3a9bbe63c554c3f9b3c1.zip
psiginfo relied too much on sys_siglist.
-rw-r--r--ChangeLog4
-rw-r--r--NEWS2
-rw-r--r--stdio-common/psiginfo.c23
3 files changed, 26 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 8515aa1b99..bc6cfa79e7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2010-10-11 Ulrich Drepper <drepper@gmail.com>
+ [BZ #12108]
+ * stdio-common/psiginfo.c (psiginfo): Don't expext SIGRTMIN..SIGRTMAX
+ to have entries in sys_siglist.
+
[BZ #12093]
* sysdeps/unix/sysv/linux/check_pf.c (__check_pf): ->ifa_addr might
be NULL.
diff --git a/NEWS b/NEWS
index 832dd20758..fcb1b57b55 100644
--- a/NEWS
+++ b/NEWS
@@ -10,7 +10,7 @@ Version 2.13
* The following bugs are resolved with this release:
3268, 7066, 10851, 11611, 11640, 11701, 11840, 11856, 11883, 11903, 11904,
- 11968, 11979, 12005, 12037, 12067, 12077, 12092, 12093, 12107
+ 11968, 11979, 12005, 12037, 12067, 12077, 12092, 12093, 12107, 12108
* New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark
diff --git a/stdio-common/psiginfo.c b/stdio-common/psiginfo.c
index 49b86ec34a..627c21c640 100644
--- a/stdio-common/psiginfo.c
+++ b/stdio-common/psiginfo.c
@@ -85,9 +85,28 @@ psiginfo (const siginfo_t *pinfo, const char *s)
const char *desc;
if (pinfo->si_signo >= 0 && pinfo->si_signo < NSIG
- && (desc = INTUSE(_sys_siglist)[pinfo->si_signo]) != NULL)
+ && ((desc = INTUSE(_sys_siglist)[pinfo->si_signo]) != NULL
+ || (pinfo->si_signo >= SIGRTMIN && pinfo->si_signo < SIGRTMAX)))
{
- fprintf (fp, "%s (", _(desc));
+ if (desc == NULL)
+ {
+ if (pinfo->si_signo - SIGRTMIN < SIGRTMAX - pinfo->si_signo)
+ {
+ if (pinfo->si_signo == SIGRTMIN)
+ fprintf (fp, "SIGRTMIN (");
+ else
+ fprintf (fp, "SIGRTMIN+%d (", pinfo->si_signo - SIGRTMIN);
+ }
+ else
+ {
+ if (pinfo->si_signo == SIGRTMAX)
+ fprintf (fp, "SIGRTMAX (");
+ else
+ fprintf (fp, "SIGRTMAX-%d (", SIGRTMAX - pinfo->si_signo);
+ }
+ }
+ else
+ fprintf (fp, "%s (", _(desc));
const char *base = NULL;
const uint8_t *offarr = NULL;