Module Name: src Committed By: kamil Date: Wed Apr 12 18:18:00 UTC 2017
Modified Files: src/sys/arch/aarch64/include: ptrace.h src/sys/arch/alpha/include: ptrace.h src/sys/arch/amd64/include: ptrace.h src/sys/arch/arm/include: ptrace.h src/sys/arch/hppa/include: ptrace.h src/sys/arch/m68k/include: ptrace.h src/sys/arch/mips/include: ptrace.h src/sys/arch/sh3/include: ptrace.h src/sys/arch/sparc/include: ptrace.h src/sys/arch/vax/include: ptrace.h src/tests/lib/libc/sys: t_ptrace_wait.c Log Message: Add new macro PTRACE_BREAKPOINT_ASM in <sys/ptrace.h> MD part This macro ships with a MD-specific assembly instruction triggering a software breakpoint. Missing instruction for powerpc targets. This code is used in ATF tests (lib/libc/sys/t_ptrace_wait). Original patch by Nick Hudson, thanks! To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/aarch64/include/ptrace.h cvs rdiff -u -r1.8 -r1.9 src/sys/arch/alpha/include/ptrace.h cvs rdiff -u -r1.11 -r1.12 src/sys/arch/amd64/include/ptrace.h cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/include/ptrace.h cvs rdiff -u -r1.7 -r1.8 src/sys/arch/hppa/include/ptrace.h cvs rdiff -u -r1.11 -r1.12 src/sys/arch/m68k/include/ptrace.h cvs rdiff -u -r1.15 -r1.16 src/sys/arch/mips/include/ptrace.h cvs rdiff -u -r1.13 -r1.14 src/sys/arch/sh3/include/ptrace.h cvs rdiff -u -r1.10 -r1.11 src/sys/arch/sparc/include/ptrace.h cvs rdiff -u -r1.8 -r1.9 src/sys/arch/vax/include/ptrace.h cvs rdiff -u -r1.3 -r1.4 src/tests/lib/libc/sys/t_ptrace_wait.c 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/aarch64/include/ptrace.h diff -u src/sys/arch/aarch64/include/ptrace.h:1.4 src/sys/arch/aarch64/include/ptrace.h:1.5 --- src/sys/arch/aarch64/include/ptrace.h:1.4 Fri Sep 25 16:05:17 2015 +++ src/sys/arch/aarch64/include/ptrace.h Wed Apr 12 18:17:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.4 2015/09/25 16:05:17 christos Exp $ */ +/* $NetBSD: ptrace.h,v 1.5 2017/04/12 18:17:59 kamil Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -57,6 +57,7 @@ #define PTRACE_REG_INTRV(r) (r)->r_reg[0] #define PTRACE_BREAKPOINT ((const uint8_t[]) { 0xd4, 0x20, 0x01, 0xa0 }) +#define PTRACE_BREAKPOINT_ASM __asm __volatile(".word 0xa00120d4" ::: "memory") #define PTRACE_BREAKPOINT_SIZE 4 #elif defined(__arm__) Index: src/sys/arch/alpha/include/ptrace.h diff -u src/sys/arch/alpha/include/ptrace.h:1.8 src/sys/arch/alpha/include/ptrace.h:1.9 --- src/sys/arch/alpha/include/ptrace.h:1.8 Fri Sep 25 16:05:17 2015 +++ src/sys/arch/alpha/include/ptrace.h Wed Apr 12 18:17:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.8 2015/09/25 16:05:17 christos Exp $ */ +/* $NetBSD: ptrace.h,v 1.9 2017/04/12 18:17:59 kamil Exp $ */ /* * Copyright (c) 1994 Christopher G. Demetriou @@ -53,4 +53,5 @@ #define PTRACE_REG_INTRV(r) (r)->r_regs[R_V0] #define PTRACE_BREAKPOINT ((const uint8_t[]) { 0x80, 0x00, 0x00, 0x00 }) +#define PTRACE_BREAKPOINT_ASM __asm __volatile("bpt" ::: "memory") #define PTRACE_BREAKPOINT_SIZE 4 Index: src/sys/arch/amd64/include/ptrace.h diff -u src/sys/arch/amd64/include/ptrace.h:1.11 src/sys/arch/amd64/include/ptrace.h:1.12 --- src/sys/arch/amd64/include/ptrace.h:1.11 Sat Apr 8 00:25:49 2017 +++ src/sys/arch/amd64/include/ptrace.h Wed Apr 12 18:17:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.11 2017/04/08 00:25:49 kamil Exp $ */ +/* $NetBSD: ptrace.h,v 1.12 2017/04/12 18:17:59 kamil Exp $ */ /* * Copyright (c) 1993 Christopher G. Demetriou @@ -64,6 +64,7 @@ #define PTRACE_REG_INTRV(r) (r)->regs[_REG_RAX] #define PTRACE_BREAKPOINT ((const uint8_t[]) { 0xcc }) +#define PTRACE_BREAKPOINT_ASM __asm __volatile ("int3" : : : "memory") #define PTRACE_BREAKPOINT_SIZE 1 #define PTRACE_BREAKPOINT_ADJ 1 Index: src/sys/arch/arm/include/ptrace.h diff -u src/sys/arch/arm/include/ptrace.h:1.10 src/sys/arch/arm/include/ptrace.h:1.11 --- src/sys/arch/arm/include/ptrace.h:1.10 Sat Apr 8 00:25:49 2017 +++ src/sys/arch/arm/include/ptrace.h Wed Apr 12 18:17:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.10 2017/04/08 00:25:49 kamil Exp $ */ +/* $NetBSD: ptrace.h,v 1.11 2017/04/12 18:17:59 kamil Exp $ */ /* * Copyright (c) 1995 Frank Lancaster @@ -64,5 +64,7 @@ #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, 0xff }) +#define PTRACE_BREAKPOINT ((const uint8_t[]) { 0xe7, 0xff, 0xff, 0xfe }) +#define PTRACE_BREAKPOINT_INSN 0xe7fffffe +#define PTRACE_BREAKPOINT_ASM __asm __volatile (".word " ___STRING(PTRACE_BREAKPOINT_INSN) ) #define PTRACE_BREAKPOINT_SIZE 4 Index: src/sys/arch/hppa/include/ptrace.h diff -u src/sys/arch/hppa/include/ptrace.h:1.7 src/sys/arch/hppa/include/ptrace.h:1.8 --- src/sys/arch/hppa/include/ptrace.h:1.7 Sat Apr 8 00:25:49 2017 +++ src/sys/arch/hppa/include/ptrace.h Wed Apr 12 18:17:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.7 2017/04/08 00:25:49 kamil Exp $ */ +/* $NetBSD: ptrace.h,v 1.8 2017/04/12 18:17:59 kamil Exp $ */ /* $OpenBSD: ptrace.h,v 1.2 1998/12/01 03:05:44 mickey Exp $ */ @@ -58,4 +58,5 @@ #define PTRACE_REG_INTRV(r) (r)->r_regs[28] #define PTRACE_BREAKPOINT ((const uint8_t[]) { 0x00, 0x01, 0x00, 0x04 }) +#define PTRACE_BREAKPOINT_ASM __asm __volatile("break %0, %1" :: "i" (HPPA_BREAK_KERNEL), "i" (HPPA_BREAK_SS) : "memory") #define PTRACE_BREAKPOINT_SIZE 4 Index: src/sys/arch/m68k/include/ptrace.h diff -u src/sys/arch/m68k/include/ptrace.h:1.11 src/sys/arch/m68k/include/ptrace.h:1.12 --- src/sys/arch/m68k/include/ptrace.h:1.11 Sat Apr 8 00:25:49 2017 +++ src/sys/arch/m68k/include/ptrace.h Wed Apr 12 18:18:00 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.11 2017/04/08 00:25:49 kamil Exp $ */ +/* $NetBSD: ptrace.h,v 1.12 2017/04/12 18:18:00 kamil Exp $ */ /* * Copyright (c) 1993 Christopher G. Demetriou @@ -59,6 +59,7 @@ #define PTRACE_REG_INTRV(r) (r)->r_regs[0] #define PTRACE_BREAKPOINT ((const uint8_t[]) { 0x4e, 0x4f }) +#define PTRACE_BREAKPOINT_ASM __asm __volatile("trap #15" ::: "memory") #define PTRACE_BREAKPOINT_SIZE 2 #endif /* !_M68K_PTRACE_H_ */ Index: src/sys/arch/mips/include/ptrace.h diff -u src/sys/arch/mips/include/ptrace.h:1.15 src/sys/arch/mips/include/ptrace.h:1.16 --- src/sys/arch/mips/include/ptrace.h:1.15 Sat Apr 8 00:25:49 2017 +++ src/sys/arch/mips/include/ptrace.h Wed Apr 12 18:18:00 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.15 2017/04/08 00:25:49 kamil Exp $ */ +/* $NetBSD: ptrace.h,v 1.16 2017/04/12 18:18:00 kamil Exp $ */ /* * Copyright (c) 1992, 1993 @@ -67,6 +67,7 @@ #define PTRACE_REG_INTRV(r) (r)->r_regs[2] #define PTRACE_BREAKPOINT ((const uint8_t[]) { 0x00, 0x00, 0x00, 0x0d }) +#define PTRACE_BREAKPOINT_ASM __asm __volatile("break") #define PTRACE_BREAKPOINT_SIZE 4 /* Index: src/sys/arch/sh3/include/ptrace.h diff -u src/sys/arch/sh3/include/ptrace.h:1.13 src/sys/arch/sh3/include/ptrace.h:1.14 --- src/sys/arch/sh3/include/ptrace.h:1.13 Sat Apr 8 00:25:49 2017 +++ src/sys/arch/sh3/include/ptrace.h Wed Apr 12 18:18:00 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.13 2017/04/08 00:25:49 kamil Exp $ */ +/* $NetBSD: ptrace.h,v 1.14 2017/04/12 18:18:00 kamil Exp $ */ /* * Copyright (c) 1993 Christopher G. Demetriou @@ -71,7 +71,9 @@ #define PTRACE_REG_SP(r) r->r_r15 #define PTRACE_REG_INTV(r) r->r_r0 +#define PTRACE_BREAKPOINT_TRAP 0xc3 #define PTRACE_BREAKPOINT ((const uint8_t[]) { 0xc3, 0xc3 }) +#define PTRACE_BREAKPOINT_ASM __asm __volatile("trapa %0" :: "i"(PTRACE_BREAKPOINT_TRAP)) #define PTRACE_BREAKPOINT_SIZE 2 #ifdef _KERNEL Index: src/sys/arch/sparc/include/ptrace.h diff -u src/sys/arch/sparc/include/ptrace.h:1.10 src/sys/arch/sparc/include/ptrace.h:1.11 --- src/sys/arch/sparc/include/ptrace.h:1.10 Fri Nov 25 14:10:31 2016 +++ src/sys/arch/sparc/include/ptrace.h Wed Apr 12 18:18:00 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.10 2016/11/25 14:10:31 christos Exp $ */ +/* $NetBSD: ptrace.h,v 1.11 2017/04/12 18:18:00 kamil Exp $ */ /* * Copyright (c) 1992, 1993 @@ -64,4 +64,5 @@ #define PTRACE_REG_INTRV(r) ((register_t)(r)->r_out[0]) #define PTRACE_BREAKPOINT ((const uint8_t[]) { 0x91, 0xd0, 0x20, 0x01 }) +#define PTRACE_BREAKPOINT_ASM __asm __volatile("ta 1") #define PTRACE_BREAKPOINT_SIZE 4 Index: src/sys/arch/vax/include/ptrace.h diff -u src/sys/arch/vax/include/ptrace.h:1.8 src/sys/arch/vax/include/ptrace.h:1.9 --- src/sys/arch/vax/include/ptrace.h:1.8 Tue Apr 11 07:45:36 2017 +++ src/sys/arch/vax/include/ptrace.h Wed Apr 12 18:18:00 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.8 2017/04/11 07:45:36 skrll Exp $ */ +/* $NetBSD: ptrace.h,v 1.9 2017/04/12 18:18:00 kamil Exp $ */ /* * Copyright (c) 1994 Ludd, University of Lule}, Sweden. @@ -54,4 +54,5 @@ #define PTRACE_REG_INTRV(r) (r)->r0 #define PTRACE_BREAKPOINT ((const uint8_t[]) { 0x03 }) +#define PTRACE_BREAKPOINT_ASM __asm __volatile("bpt") #define PTRACE_BREAKPOINT_SIZE 1 Index: src/tests/lib/libc/sys/t_ptrace_wait.c diff -u src/tests/lib/libc/sys/t_ptrace_wait.c:1.3 src/tests/lib/libc/sys/t_ptrace_wait.c:1.4 --- src/tests/lib/libc/sys/t_ptrace_wait.c:1.3 Mon Apr 10 16:45:57 2017 +++ src/tests/lib/libc/sys/t_ptrace_wait.c Wed Apr 12 18:18:00 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: t_ptrace_wait.c,v 1.3 2017/04/10 16:45:57 kamil Exp $ */ +/* $NetBSD: t_ptrace_wait.c,v 1.4 2017/04/12 18:18:00 kamil Exp $ */ /*- * Copyright (c) 2016 The NetBSD Foundation, Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: t_ptrace_wait.c,v 1.3 2017/04/10 16:45:57 kamil Exp $"); +__RCSID("$NetBSD: t_ptrace_wait.c,v 1.4 2017/04/12 18:18:00 kamil Exp $"); #include <sys/param.h> #include <sys/types.h> @@ -5771,10 +5771,11 @@ ATF_TC_BODY(signal3, tc) FORKEE_ASSERT(raise(sigval) == 0); printf("Before raising software breakpoint from child\n"); -#if defined(__x86_64__) - __asm__ __volatile__ ("int3\n;"); + +#ifdef PTRACE_BREAKPOINT_ASM + PTRACE_BREAKPOINT_ASM; #else - /* port me */ + /* port me */ #endif printf("Before exiting of the child process\n"); @@ -5831,9 +5832,6 @@ ATF_TC_BODY(signal4, tc) int happy; #if defined(__arm__) - /* PT_STEP not supported on arm 32-bit */ - atf_tc_expect_fail("PR kern/51918 PR kern/52119"); -#else atf_tc_expect_fail("PR kern/52119"); #endif