Module Name: src Committed By: kamil Date: Thu Dec 15 12:04:18 UTC 2016
Modified Files: src/distrib/sets/lists/comp: md.amd64 md.i386 src/sys/arch/amd64/amd64: machdep.c netbsd32_machdep.c process_machdep.c trap.c src/sys/arch/amd64/conf: files.amd64 src/sys/arch/amd64/include: proc.h ptrace.h userret.h src/sys/arch/i386/conf: files.i386 src/sys/arch/i386/i386: machdep.c process_machdep.c src/sys/arch/i386/include: proc.h ptrace.h userret.h src/sys/arch/x86/include: Makefile dbregs.h src/sys/arch/x86/x86: vm_machdep.c src/sys/arch/xen/conf: files.xen src/sys/compat/netbsd32: netbsd32_ptrace.c src/sys/kern: sys_ptrace.c sys_ptrace_common.c src/sys/sys: ptrace.h Added Files: src/sys/arch/x86/x86: dbregs.c Log Message: Add support for hardware assisted watchpoints/breakpoints API in ptrace(2) Add new ptrace(2) calls: - PT_COUNT_WATCHPOINTS - count the number of available hardware watchpoints - PT_READ_WATCHPOINT - read struct ptrace_watchpoint from the kernel state - PT_WRITE_WATCHPOINT - write new struct ptrace_watchpoint state, this includes enabling and disabling watchpoints The ptrace_watchpoint structure contains MI and MD parts: typedef struct ptrace_watchpoint { int pw_index; /* HW Watchpoint ID (count from 0) */ lwpid_t pw_lwpid; /* LWP described */ struct mdpw pw_md; /* MD fields */ } ptrace_watchpoint_t; For example amd64 defines MD as follows: struct mdpw { void *md_address; int md_condition; int md_length; }; These calls are protected with the __HAVE_PTRACE_WATCHPOINTS guard. Tested on amd64, initial support added for i386 and XEN. Sponsored by <The NetBSD Foundation> To generate a diff of this commit: cvs rdiff -u -r1.239 -r1.240 src/distrib/sets/lists/comp/md.amd64 cvs rdiff -u -r1.159 -r1.160 src/distrib/sets/lists/comp/md.i386 cvs rdiff -u -r1.237 -r1.238 src/sys/arch/amd64/amd64/machdep.c cvs rdiff -u -r1.97 -r1.98 src/sys/arch/amd64/amd64/netbsd32_machdep.c cvs rdiff -u -r1.29 -r1.30 src/sys/arch/amd64/amd64/process_machdep.c cvs rdiff -u -r1.87 -r1.88 src/sys/arch/amd64/amd64/trap.c cvs rdiff -u -r1.87 -r1.88 src/sys/arch/amd64/conf/files.amd64 cvs rdiff -u -r1.19 -r1.20 src/sys/arch/amd64/include/proc.h cvs rdiff -u -r1.7 -r1.8 src/sys/arch/amd64/include/ptrace.h cvs rdiff -u -r1.9 -r1.10 src/sys/arch/amd64/include/userret.h cvs rdiff -u -r1.375 -r1.376 src/sys/arch/i386/conf/files.i386 cvs rdiff -u -r1.766 -r1.767 src/sys/arch/i386/i386/machdep.c cvs rdiff -u -r1.86 -r1.87 src/sys/arch/i386/i386/process_machdep.c cvs rdiff -u -r1.42 -r1.43 src/sys/arch/i386/include/proc.h cvs rdiff -u -r1.15 -r1.16 src/sys/arch/i386/include/ptrace.h cvs rdiff -u -r1.11 -r1.12 src/sys/arch/i386/include/userret.h cvs rdiff -u -r1.20 -r1.21 src/sys/arch/x86/include/Makefile cvs rdiff -u -r1.1 -r1.2 src/sys/arch/x86/include/dbregs.h cvs rdiff -u -r0 -r1.1 src/sys/arch/x86/x86/dbregs.c cvs rdiff -u -r1.26 -r1.27 src/sys/arch/x86/x86/vm_machdep.c cvs rdiff -u -r1.142 -r1.143 src/sys/arch/xen/conf/files.xen cvs rdiff -u -r1.2 -r1.3 src/sys/compat/netbsd32/netbsd32_ptrace.c cvs rdiff -u -r1.2 -r1.3 src/sys/kern/sys_ptrace.c cvs rdiff -u -r1.6 -r1.7 src/sys/kern/sys_ptrace_common.c cvs rdiff -u -r1.49 -r1.50 src/sys/sys/ptrace.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.