]> granicus.if.org Git - strace/commitdiff
Enhance decoding of kernel-generated signals
authorDmitry V. Levin <ldv@altlinux.org>
Thu, 10 Mar 2011 23:14:47 +0000 (23:14 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Thu, 10 Mar 2011 23:14:47 +0000 (23:14 +0000)
* signal.c (printsiginfo) [LINUX]: Do not print uninteresting
zero-initialized fields.

signal.c

index cab13ee487748449b97e35389fdad8dd6ef6b750..b47b831c1c9c92e14e6a6b40f1da1fe9a9b865e7 100644 (file)
--- a/signal.c
+++ b/signal.c
@@ -738,6 +738,8 @@ printsiginfo(siginfo_t *sip, int verbose)
 #endif
 #ifdef LINUX
                        default:
+                               if (!sip->si_ptr)
+                                       break;
                                if (!verbose)
                                        tprintf(", ...");
                                else
@@ -783,13 +785,16 @@ printsiginfo(siginfo_t *sip, int verbose)
                                break;
 #ifdef LINUX
                        default:
-                               tprintf(", si_pid=%lu, si_uid=%lu, ",
-                                       (unsigned long) sip->si_pid,
-                                       (unsigned long) sip->si_uid);
+                               if (sip->si_pid || sip->si_uid)
+                                       tprintf(", si_pid=%lu, si_uid=%lu",
+                                               (unsigned long) sip->si_pid,
+                                               (unsigned long) sip->si_uid);
+                               if (!sip->si_ptr)
+                                       break;
                                if (!verbose)
-                                       tprintf("...");
+                                       tprintf("...");
                                else {
-                                       tprintf("si_value={int=%u, ptr=%#lx}",
+                                       tprintf("si_value={int=%u, ptr=%#lx}",
                                                sip->si_int,
                                                (unsigned long) sip->si_ptr);
                                }