diff options
author | Joseph Myers <joseph@codesourcery.com> | 2018-09-17 12:41:14 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2018-09-17 12:41:14 +0000 |
commit | 89983cb37c9319806a551e8fe9f3a11ff8f973e1 (patch) | |
tree | 46cb7527923336191e884a33db20cd36a84cebf5 | |
parent | 3f7f1d180d6f1cef2c4ea83f5bda76516a75212a (diff) | |
download | glibc-89983cb37c9319806a551e8fe9f3a11ff8f973e1.tar.gz glibc-89983cb37c9319806a551e8fe9f3a11ff8f973e1.tar.xz glibc-89983cb37c9319806a551e8fe9f3a11ff8f973e1.zip |
Update siginfo constants from Linux kernel (bug 21286).
As of Linux 4.17, siginfo headers in the Linux kernel have been largely unified across architectures (so various constants are defined with common values in include/uapi/asm-generic/siginfo.h even if not all architectures can generate those particular constants). This patch makes glibc reflect that unification and the current set of constants in that header as of Linux 4.18. Various constants are added to bits/siginfo-consts.h (under the same feature test macro conditions as the other constants with the same prefix), and removed from the ia64 bits/siginfo-consts-arch.h where they were previously there - this is not limited to constants added by the unification. Nothing is done about macros that are defined in include/uapi/asm-generic/siginfo.h with names with leading '__' (some of those are ia64-specific ones that remain in the ia64 bits/siginfo-consts-arch.h without the leading '__' there). A consequence of these changes is that TRAP_HWBKPT becomes available on AArch64 and all other architectures as requested in bug 21286. Tested for x86_64; tested with build-many-glibcs.py for ia64. [BZ #21286] * sysdeps/unix/sysv/linux/bits/siginfo-consts.h (SI_DETHREAD): New constant. [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8] (ILL_BADIADDR): Likewise. [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8] (FPE_FLTUNK): Likewise. [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8] (FPE_CONDTRAP): Likewise. [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8] (SEGV_ACCADI): Likewise. [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8] (SEGV_ADIDERR): Likewise. [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8] (SEGV_ADIPERR): Likewise. [__USE_XOPEN_EXTENDED] (TRAP_BRANCH): Likewise. [__USE_XOPEN_EXTENDED] (TRAP_HWBKPT): Likewise. [__USE_XOPEN_EXTENDED] (TRAP_UNK): Likweise. * sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h (ILL_BADIADDR): Remove constant. (TRAP_BRANCH): Likewise. (TRAP_HWBKPT): Likewise.
-rw-r--r-- | ChangeLog | 19 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/siginfo-consts.h | 31 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h | 13 |
3 files changed, 46 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog index 99a560f233..1532d35b94 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2018-09-17 Joseph Myers <joseph@codesourcery.com> + + [BZ #21286] + * sysdeps/unix/sysv/linux/bits/siginfo-consts.h (SI_DETHREAD): New + constant. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8] (ILL_BADIADDR): Likewise. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8] (FPE_FLTUNK): Likewise. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8] (FPE_CONDTRAP): Likewise. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8] (SEGV_ACCADI): Likewise. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8] (SEGV_ADIDERR): Likewise. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8] (SEGV_ADIPERR): Likewise. + [__USE_XOPEN_EXTENDED] (TRAP_BRANCH): Likewise. + [__USE_XOPEN_EXTENDED] (TRAP_HWBKPT): Likewise. + [__USE_XOPEN_EXTENDED] (TRAP_UNK): Likweise. + * sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h + (ILL_BADIADDR): Remove constant. + (TRAP_BRANCH): Likewise. + (TRAP_HWBKPT): Likewise. + 2018-09-14 Joseph Myers <joseph@codesourcery.com> [BZ #23656] diff --git a/sysdeps/unix/sysv/linux/bits/siginfo-consts.h b/sysdeps/unix/sysv/linux/bits/siginfo-consts.h index 193bd9c471..d69d27d922 100644 --- a/sysdeps/unix/sysv/linux/bits/siginfo-consts.h +++ b/sysdeps/unix/sysv/linux/bits/siginfo-consts.h @@ -35,7 +35,9 @@ enum { SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */ - SI_TKILL = -6, /* Sent by tkill. */ + SI_DETHREAD = -7, /* Sent by execve killing subsidiary + threads. */ + SI_TKILL, /* Sent by tkill. */ SI_SIGIO, /* Sent by queued SIGIO. */ #if __SI_ASYNCIO_AFTER_SIGIO SI_ASYNCIO, /* Sent by AIO completion. */ @@ -51,6 +53,7 @@ enum SI_KERNEL = 0x80 /* Send by kernel. */ #define SI_ASYNCNL SI_ASYNCNL +#define SI_DETHREAD SI_DETHREAD #define SI_TKILL SI_TKILL #define SI_SIGIO SI_SIGIO #define SI_ASYNCIO SI_ASYNCIO @@ -81,8 +84,10 @@ enum # define ILL_PRVREG ILL_PRVREG ILL_COPROC, /* Coprocessor error. */ # define ILL_COPROC ILL_COPROC - ILL_BADSTK /* Internal stack error. */ + ILL_BADSTK, /* Internal stack error. */ # define ILL_BADSTK ILL_BADSTK + ILL_BADIADDR /* Unimplemented instruction address. */ +# define ILL_BADIADDR ILL_BADIADDR }; /* `si_code' values for SIGFPE signal. */ @@ -102,8 +107,12 @@ enum # define FPE_FLTRES FPE_FLTRES FPE_FLTINV, /* Floating point invalid operation. */ # define FPE_FLTINV FPE_FLTINV - FPE_FLTSUB /* Subscript out of range. */ + FPE_FLTSUB, /* Subscript out of range. */ # define FPE_FLTSUB FPE_FLTSUB + FPE_FLTUNK = 14, /* Undiagnosed floating-point exception. */ +# define FPE_FLTUNK FPE_FLTUNK + FPE_CONDTRAP /* Trap on condition. */ +# define FPE_CONDTRAP FPE_CONDTRAP }; /* `si_code' values for SIGSEGV signal. */ @@ -115,8 +124,14 @@ enum # define SEGV_ACCERR SEGV_ACCERR SEGV_BNDERR, /* Bounds checking failure. */ # define SEGV_BNDERR SEGV_BNDERR - SEGV_PKUERR /* Protection key checking failure. */ + SEGV_PKUERR, /* Protection key checking failure. */ # define SEGV_PKUERR SEGV_PKUERR + SEGV_ACCADI, /* ADI not enabled for mapped object. */ +# define SEGV_ACCADI SEGV_ACCADI + SEGV_ADIDERR, /* Disrupting MCD error. */ +# define SEGV_ADIDERR SEGV_ADIDERR + SEGV_ADIPERR /* Precise MCD exception. */ +# define SEGV_ADIPERR SEGV_ADIPERR }; /* `si_code' values for SIGBUS signal. */ @@ -141,8 +156,14 @@ enum { TRAP_BRKPT = 1, /* Process breakpoint. */ # define TRAP_BRKPT TRAP_BRKPT - TRAP_TRACE /* Process trace trap. */ + TRAP_TRACE, /* Process trace trap. */ # define TRAP_TRACE TRAP_TRACE + TRAP_BRANCH, /* Process taken branch trap. */ +# define TRAP_BRANCH TRAP_BRANCH + TRAP_HWBKPT, /* Hardware breakpoint/watchpoint. */ +# define TRAP_HWBKPT TRAP_HWBKPT + TRAP_UNK /* Undiagnosed trap. */ +# define TRAP_UNK TRAP_UNK }; # endif diff --git a/sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h b/sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h index 4c5c4da516..5ef8af4ac7 100644 --- a/sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h +++ b/sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h @@ -5,9 +5,7 @@ /* `si_code' values for SIGILL signal. */ enum { - ILL_BADIADDR = ILL_BADSTK + 1, /* Unimplemented instruction address. */ -#define ILL_BADIADDR ILL_BADIADDR - ILL_BREAK + ILL_BREAK = ILL_BADIADDR + 1 #define ILL_BREAK ILL_BREAK }; @@ -33,13 +31,4 @@ enum #define SEGV_PSTKOVF SEGV_PSTKOVF }; -/* `si_code' values for SIGTRAP signal. */ -enum -{ - TRAP_BRANCH = TRAP_TRACE + 1, -#define TRAP_BRANCH TRAP_BRANCH - TRAP_HWBKPT -#define TRAP_HWBKPT TRAP_HWBKPT -}; - #endif |