Module Name: src
Committed By: christos
Date: Wed Dec 27 19:35:05 UTC 2017
Modified Files:
src/sys/arch/arm/include: ptrace.h
Log Message:
PR/52867: Martin Husemann: arm sofware breakpoint asm is slightly off
ARM uses an undefined instruction to emulate a software breakpoint.
However, the ptrace.h instruction on the one hand, and gdb/the kernel
disagree on the exact value.
This causes PTRACE_BREAKPOINT_ASM to generate a SIGILL instead of a SIGTRAP.
To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/include/ptrace.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/arm/include/ptrace.h
diff -u src/sys/arch/arm/include/ptrace.h:1.11 src/sys/arch/arm/include/ptrace.h:1.12
--- src/sys/arch/arm/include/ptrace.h:1.11 Wed Apr 12 14:17:59 2017
+++ src/sys/arch/arm/include/ptrace.h Wed Dec 27 14:35:05 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ptrace.h,v 1.11 2017/04/12 18:17:59 kamil Exp $ */
+/* $NetBSD: ptrace.h,v 1.12 2017/12/27 19:35:05 christos Exp $ */
/*
* Copyright (c) 1995 Frank Lancaster
@@ -64,7 +64,12 @@
#define PTRACE_REG_SP(_r) (_r)->r_sp
#define PTRACE_REG_INTRV(_r) (_r)->r[0]
-#define PTRACE_BREAKPOINT ((const uint8_t[]) { 0xe7, 0xff, 0xff, 0xfe })
-#define PTRACE_BREAKPOINT_INSN 0xe7fffffe
+#ifdef __ARMEB__
+#define PTRACE_BREAKPOINT ((const uint8_t[]) { 0xfe, 0xde, 0xff, 0xe7 })
+#define PTRACE_BREAKPOINT_INSN 0xfedeffe7
+#else
+#define PTRACE_BREAKPOINT ((const uint8_t[]) { 0xe7, 0xff, 0xde, 0xfe })
+#define PTRACE_BREAKPOINT_INSN 0xe7ffdefe
+#endif
#define PTRACE_BREAKPOINT_ASM __asm __volatile (".word " ___STRING(PTRACE_BREAKPOINT_INSN) )
#define PTRACE_BREAKPOINT_SIZE 4