138a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin/* 238a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl> 338a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl> 438a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * Copyright (c) 1993-1996 Rick Sladkey <jrs@world.std.com> 538a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl> 638a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * Copyright (c) 2001 John Hughes <john@Calva.COM> 738a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * Copyright (c) 2013 Denys Vlasenko <vda.linux@googlemail.com> 838a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * Copyright (c) 2011-2015 Dmitry V. Levin <ldv@altlinux.org> 938a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com> 1038a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * All rights reserved. 1138a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * 1238a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * Redistribution and use in source and binary forms, with or without 1338a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * modification, are permitted provided that the following conditions 1438a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * are met: 1538a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * 1. Redistributions of source code must retain the above copyright 1638a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * notice, this list of conditions and the following disclaimer. 1738a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * 2. Redistributions in binary form must reproduce the above copyright 1838a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * notice, this list of conditions and the following disclaimer in the 1938a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * documentation and/or other materials provided with the distribution. 2038a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * 3. The name of the author may not be used to endorse or promote products 2138a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * derived from this software without specific prior written permission. 2238a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * 2338a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 2438a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 2538a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 2638a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2738a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2838a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2938a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 3038a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3138a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 3238a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3338a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin */ 3438a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin 35537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#include "defs.h" 36537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 37a0b62498fd9a1fb05018e102b08c72eb510fdc4cElvira Khabirova#include DEF_MPERS_TYPE(siginfo_t) 38a0b62498fd9a1fb05018e102b08c72eb510fdc4cElvira Khabirova 390e946ab2c26f3cb6f27cb99ddf0f5581bef16781Dmitry V. Levin#include <signal.h> 40d2eaf67486748263dfe84e735767f3651066a754Mike Frysinger#include <linux/audit.h> 410e946ab2c26f3cb6f27cb99ddf0f5581bef16781Dmitry V. Levin 42a0b62498fd9a1fb05018e102b08c72eb510fdc4cElvira Khabirova#include MPERS_DEFS 43a0b62498fd9a1fb05018e102b08c72eb510fdc4cElvira Khabirova 44a0b62498fd9a1fb05018e102b08c72eb510fdc4cElvira Khabirova#ifndef IN_MPERS 450e946ab2c26f3cb6f27cb99ddf0f5581bef16781Dmitry V. Levin#include "printsiginfo.h" 46a0b62498fd9a1fb05018e102b08c72eb510fdc4cElvira Khabirova#endif 470e946ab2c26f3cb6f27cb99ddf0f5581bef16781Dmitry V. Levin 48d2eaf67486748263dfe84e735767f3651066a754Mike Frysinger#include "xlat/audit_arch.h" 49537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#include "xlat/sigbus_codes.h" 50537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#include "xlat/sigchld_codes.h" 51537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#include "xlat/sigfpe_codes.h" 52537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#include "xlat/sigill_codes.h" 53537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#include "xlat/siginfo_codes.h" 54537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#include "xlat/sigpoll_codes.h" 55537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#include "xlat/sigprof_codes.h" 56537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#include "xlat/sigsegv_codes.h" 57537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#include "xlat/sigsys_codes.h" 58537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#include "xlat/sigtrap_codes.h" 59537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 60537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#ifdef SIGEMT 61537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin# include "xlat/sigemt_codes.h" 62537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#endif 63537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 64537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#ifndef SI_FROMUSER 65537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin# define SI_FROMUSER(sip) ((sip)->si_code <= 0) 66537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#endif 67537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 68537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levinstatic void 69537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levinprintsigsource(const siginfo_t *sip) 70537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin{ 713595f4ae15ad50fae917fdd1871eece4e928fb3aElvira Khabirova tprintf(", si_pid=%u, si_uid=%u", 723595f4ae15ad50fae917fdd1871eece4e928fb3aElvira Khabirova (unsigned int) sip->si_pid, 733595f4ae15ad50fae917fdd1871eece4e928fb3aElvira Khabirova (unsigned int) sip->si_uid); 74537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin} 75537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 76537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levinstatic void 77537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levinprintsigval(const siginfo_t *sip, bool verbose) 78537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin{ 79537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if (!verbose) 80537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprints(", ..."); 81537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin else 823595f4ae15ad50fae917fdd1871eece4e928fb3aElvira Khabirova tprintf(", si_value={int=%d, ptr=%#lx}", 83537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin sip->si_int, 84537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin (unsigned long) sip->si_ptr); 85537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin} 86537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 87537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levinstatic void 88537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levinprint_si_code(int si_signo, int si_code) 89537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin{ 90537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin const char *code = xlookup(siginfo_codes, si_code); 91537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 92537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if (!code) { 93537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin switch (si_signo) { 94537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGTRAP: 95537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin code = xlookup(sigtrap_codes, si_code); 96537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 97537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGCHLD: 98537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin code = xlookup(sigchld_codes, si_code); 99537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 100537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGPOLL: 101537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin code = xlookup(sigpoll_codes, si_code); 102537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 103537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGPROF: 104537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin code = xlookup(sigprof_codes, si_code); 105537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 106537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGILL: 107537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin code = xlookup(sigill_codes, si_code); 108537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 109537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#ifdef SIGEMT 110537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGEMT: 111537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin code = xlookup(sigemt_codes, si_code); 112537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 113537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#endif 114537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGFPE: 115537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin code = xlookup(sigfpe_codes, si_code); 116537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 117537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGSEGV: 118537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin code = xlookup(sigsegv_codes, si_code); 119537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 120537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGBUS: 121537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin code = xlookup(sigbus_codes, si_code); 122537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 123537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGSYS: 124537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin code = xlookup(sigsys_codes, si_code); 125537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 126537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin } 127537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin } 128537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 129537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if (code) 130537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprints(code); 131537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin else 132537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprintf("%#x", si_code); 133537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin} 134537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 135537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levinstatic void 136537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levinprint_si_info(const siginfo_t *sip, bool verbose) 137537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin{ 138537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if (sip->si_errno) { 139537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprints(", si_errno="); 140537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if ((unsigned) sip->si_errno < nerrnos 141537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin && errnoent[sip->si_errno]) 142537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprints(errnoent[sip->si_errno]); 143537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin else 144537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprintf("%d", sip->si_errno); 145537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin } 146537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 147537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if (SI_FROMUSER(sip)) { 148537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin switch (sip->si_code) { 149537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SI_USER: 150537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin printsigsource(sip); 151537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 152537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SI_TKILL: 153537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin printsigsource(sip); 154537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 155537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#if defined HAVE_SIGINFO_T_SI_TIMERID && defined HAVE_SIGINFO_T_SI_OVERRUN 156537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SI_TIMER: 157537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprintf(", si_timerid=%#x, si_overrun=%d", 158537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin sip->si_timerid, sip->si_overrun); 159537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin printsigval(sip, verbose); 160537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 161537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#endif 162537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin default: 163537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin printsigsource(sip); 164537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if (sip->si_ptr) 165537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin printsigval(sip, verbose); 166537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 167537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin } 168537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin } else { 169537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin switch (sip->si_signo) { 170537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGCHLD: 171537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin printsigsource(sip); 172537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprints(", si_status="); 173537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if (sip->si_code == CLD_EXITED) 174537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprintf("%d", sip->si_status); 175537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin else 176537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin printsignal(sip->si_status); 177537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if (!verbose) 178537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprints(", ..."); 179537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin else 180537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprintf(", si_utime=%llu, si_stime=%llu", 181537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin (unsigned long long) sip->si_utime, 182537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin (unsigned long long) sip->si_stime); 183537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 184537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGILL: case SIGFPE: 185537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGSEGV: case SIGBUS: 186537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprintf(", si_addr=%#lx", 187537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin (unsigned long) sip->si_addr); 188537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 189537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGPOLL: 190537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin switch (sip->si_code) { 191537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case POLL_IN: case POLL_OUT: case POLL_MSG: 192537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprintf(", si_band=%ld", 193537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin (long) sip->si_band); 194537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 195537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin } 196537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 197537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#ifdef HAVE_SIGINFO_T_SI_SYSCALL 198537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin case SIGSYS: 199d2eaf67486748263dfe84e735767f3651066a754Mike Frysinger tprintf(", si_call_addr=%#lx, si_syscall=__NR_%s, si_arch=", 200537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin (unsigned long) sip->si_call_addr, 201d2eaf67486748263dfe84e735767f3651066a754Mike Frysinger syscall_name(sip->si_syscall)); 202d2eaf67486748263dfe84e735767f3651066a754Mike Frysinger printxval(audit_arch, sip->si_arch, "AUDIT_ARCH_???"); 203537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin break; 204537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#endif 205537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin default: 206537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if (sip->si_pid || sip->si_uid) 207537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin printsigsource(sip); 208537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if (sip->si_ptr) 209537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin printsigval(sip, verbose); 210537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin } 211537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin } 212537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin} 213537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 214a0b62498fd9a1fb05018e102b08c72eb510fdc4cElvira Khabirova#ifdef IN_MPERS 215a0b62498fd9a1fb05018e102b08c72eb510fdc4cElvira Khabirovastatic 216a0b62498fd9a1fb05018e102b08c72eb510fdc4cElvira Khabirova#endif 217537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levinvoid 218537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levinprintsiginfo(const siginfo_t *sip, bool verbose) 219537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin{ 220537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if (sip->si_signo == 0) { 221537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprints("{}"); 222537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin return; 223537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin } 224537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprints("{si_signo="); 225537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin printsignal(sip->si_signo); 226537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 227537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprints(", si_code="); 228537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin print_si_code(sip->si_signo, sip->si_code); 229537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 230537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#ifdef SI_NOINFO 231537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin if (sip->si_code != SI_NOINFO) 232537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin#endif 233537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin print_si_info(sip, verbose); 234537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 235537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin tprints("}"); 236537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin} 237537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin 238a0b62498fd9a1fb05018e102b08c72eb510fdc4cElvira KhabirovaMPERS_PRINTER_DECL(void, printsiginfo_at)(struct tcb *tcp, long addr) 239537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin{ 240537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin siginfo_t si; 241a528eb5b493d0c722e5a8744bd4be52aa32c9eddDmitry V. Levin 242a528eb5b493d0c722e5a8744bd4be52aa32c9eddDmitry V. Levin if (!umove_or_printaddr(tcp, addr, &si)) 243a528eb5b493d0c722e5a8744bd4be52aa32c9eddDmitry V. Levin printsiginfo(&si, verbose(tcp)); 244537c964fe9ad96b5b4c779af7a53a2b0850ade4eDmitry V. Levin} 245