psiginfo relied too much on sys_siglist.
authorUlrich Drepper <drepper@gmail.com>
Mon, 11 Oct 2010 14:58:31 +0000 (10:58 -0400)
committerUlrich Drepper <drepper@gmail.com>
Mon, 11 Oct 2010 14:58:31 +0000 (10:58 -0400)
ChangeLog
NEWS
stdio-common/psiginfo.c

index 8515aa1..bc6cfa7 100644 (file)
--- 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 832dd20..fcb1b57 100644 (file)
--- 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
 
index 49b86ec..627c21c 100644 (file)
@@ -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;