about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-09-17 12:41:14 +0000
committerJoseph Myers <joseph@codesourcery.com>2018-09-17 12:41:14 +0000
commit89983cb37c9319806a551e8fe9f3a11ff8f973e1 (patch)
tree46cb7527923336191e884a33db20cd36a84cebf5
parent3f7f1d180d6f1cef2c4ea83f5bda76516a75212a (diff)
downloadglibc-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--ChangeLog19
-rw-r--r--sysdeps/unix/sysv/linux/bits/siginfo-consts.h31
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h13
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