Commit Graph

227 Commits

Author SHA1 Message Date
kamil
501e6bc911 Optimize signal6 in t_ptrace_wait
Reduce timeout to 5 seconds. This tests timeouts and this change saves
time.

PR kern/51918

Sponsored by <The NetBSD Foundation>
2017-03-28 01:40:39 +00:00
kamil
c6dfd176d2 Mark signal6 as failing due to timeout not regular failure
This test is marked as PR kern/51918.

Timeout has been reported on i386, amd64, alpha, sparc, sparc64, evbarm.
xen.

Sponsored by <The NetBSD Foundation>
2017-03-28 01:00:33 +00:00
skrll
8ff4d6477a kern/52012 kern/52018 kern/52019 were all fixed by christos 2017-03-25 10:07:55 +00:00
kre
1cd3fe6ea7 Since it is unlikely that any of this really wants to test whether
[v]fork() produces pid==1 (init) (if it were useful to test that, an
entirely different test would be appropriate) change the tests so
they check for [v]fork() failure, as probably intended, instead.
2017-03-03 12:23:26 +00:00
kamil
81ccb321cb Mark syscall1 broken in t_ptrace_wait*
Mark this test broken with kern/52012 as the tracee does not stop on syscall
entry. Check for siginfo(2) in syscall1 and unveil two new bugs.

PR kern/52012: PT_SYSCALL does not stop on syscall entry
PR kern/52018: ptrace(2) PT_SYSCALL generates SIGTRAP without si_code
PR kern/52019: ptrace(2) PT_SYSCALL generate SIGTRAP to the parent but
               returns SIGSTOP in PT_GET_SIGINFO

Sponsored by <The NetBSD Foundation>
2017-03-01 08:05:15 +00:00
kamil
ad0426b8f6 Mark resume1 and syscallemu1 tests broken in t_ptrace_wait*
resume1:
    PR kern/51995 ptrace(2) PT_RESUME is not reliable

syscallemu1:
    PR kern/52012 PT_SYSCALL does not stop on syscall entry

Sponsored by <The NetBSD Foundation>
2017-02-28 13:29:52 +00:00
kamil
d2c80310bc Add new test syscallemu1 in t_ptrace_wait*
syscallemu1:
    Verify that exit(2) can be intercepted with PT_SYSCALLEMU

This test is failing as PT_SYSCALL does not stop the process on syscall
entry. This renders PT_SYSCALL broken on NetBSD.

Sponsored by <The NetBSD Foundation>
2017-02-28 13:19:50 +00:00
christos
e89750009c kill stray q 2017-02-25 18:18:29 +00:00
christos
5661ffc1f0 make bitfields unsigned 2017-02-25 16:45:24 +00:00
kamil
5447864424 Add new test syscall1 in t_ptrace_wait*
syscall1:
    Verify that getpid(2) can be traced with PT_SYSCALL

Enforce usage of syscall(2), it should prevent failing on any possible
optimizations in future as a libc can ship this information not through
syscall (shared struct with kernel or similar).

Sponsored by <The NetBSD Foundation>
2017-02-24 06:17:48 +00:00
kamil
fb0af2ac33 Improve PT_SET_SIGMASK and PT_GET_SIGMASK API in ptrace(2)
Use proper check for LW_SYSTEM, don't depend on PT_GETREGS/PT_SETREGS.
Don't allow to mask SA_CANTMASK signals with PT_SET_SIGMASK (this covers
SIGSTOP and SIGKILL).

Add new ATF tests:
 - setsigmask5
   Verify that sigmask cannot be set to SIGKILL

 - setsigmask6
   Verify that sigmask cannot be set to SIGSTOP

Sponsored by <The NetBSD Foundation>
2017-02-23 00:50:09 +00:00
kamil
f9b2093d06 Introduce new ptrace(2) API to allow/prevent exection of LWP
Introduce new API for debuggers to allow/prevent execution of the specified
thread.

New ptrace(2) operations:

     PT_RESUME     Allow execution of a specified thread, change its state
                   from suspended to continued.  The addr argument is unused.
                   The data argument specifies the LWP ID.

                   This call is equivalent to _lwp_continue(2) called by a
                   traced process.  This call does not change the general
                   process state from stopped to continued.

     PT_SUSPEND    Prevent execution of a specified thread, change its state
                   from continued to suspended.  The addr argument is unused.
                   The data argument specifies the requested LWP ID.

                   This call is equivalent to _lwp_suspend(2) called by a
                   traced process.  This call does not change the general
                   process state from continued to stopped.

This interface is modeled after FreeBSD, however with NetBSD specific arguments
passed to ptrace(2) -- FreeBSD passes only thread id, NetBSD passes process and
thread id.

Extend PT_LWPINFO operation in ptrace(2) to report suspended threads. In the
ptrace_lwpinfo structure in pl_event next to PL_EVENT_NONE and PL_EVENT_SIGNAL
add new value PL_EVENT_SUSPENDED.

Add new errno(2) value EDEADLK that might be returned by ptrace(2). It prevents
dead-locking in a scenario of resuming a process or thread that is prevented
from execution. This fixes bug that old API was vulnerable to this scenario.

Kernel bump delayed till introduction of PT_GETDBREGS/PT_SETDBREGS soon.

Add new ATF tests:
 - resume1
   Verify that a thread can be suspended by a debugger and later
   resumed by the debugger

 - suspend1
   Verify that a thread can be suspended by a debugger and later
   resumed by a tracee

 - suspend2
   Verify that the while the only thread within a process is
   suspended, the whole process cannot be unstopped

Sponsored by <The NetBSD Foundation>
2017-02-22 23:43:43 +00:00
kamil
b4bf2c1aa5 Add kernel/arch/x86 ATF tests for CPU Debug Registers for amd64 and i386
This moves kernel/arch/amd64 tests, the ones to be shared between amd64 and
i386, into kernel/arch/x86. This covers all Debug Register tests.

kernel/arch/amd64 is reduced to regs1
kernel/arch/i386 is reduced to regs1

kernel/arch/x86 tests:
 - dbregs_print
 - dbregs_preserve_dr0
 - dbregs_preserve_dr1
 - dbregs_preserve_dr2
 - dbregs_preserve_dr3
 - dbregs_preserve_dr0_yield
 - dbregs_preserve_dr1_yield
 - dbregs_preserve_dr2_yield
 - dbregs_preserve_dr3_yield
 - dbregs_preserve_dr0_continued
 - dbregs_preserve_dr1_continued
 - dbregs_preserve_dr2_continued
 - dbregs_preserve_dr3_continued
 - dbregs_dr0_trap_variable_writeonly_byte
 - dbregs_dr1_trap_variable_writeonly_byte
 - dbregs_dr2_trap_variable_writeonly_byte
 - dbregs_dr3_trap_variable_writeonly_byte
 - dbregs_dr0_trap_variable_writeonly_2bytes
 - dbregs_dr1_trap_variable_writeonly_2bytes
 - dbregs_dr2_trap_variable_writeonly_2bytes
 - dbregs_dr3_trap_variable_writeonly_2bytes
 - dbregs_dr0_trap_variable_writeonly_4bytes
 - dbregs_dr1_trap_variable_writeonly_4bytes
 - dbregs_dr2_trap_variable_writeonly_4bytes
 - dbregs_dr3_trap_variable_writeonly_4bytes
 - dbregs_dr0_trap_variable_readwrite_write_byte
 - dbregs_dr1_trap_variable_readwrite_write_byte
 - dbregs_dr2_trap_variable_readwrite_write_byte
 - dbregs_dr3_trap_variable_readwrite_write_byte
 - dbregs_dr0_trap_variable_readwrite_write_2bytes
 - dbregs_dr1_trap_variable_readwrite_write_2bytes
 - dbregs_dr2_trap_variable_readwrite_write_2bytes
 - dbregs_dr3_trap_variable_readwrite_write_2bytes
 - dbregs_dr0_trap_variable_readwrite_write_4bytes
 - dbregs_dr1_trap_variable_readwrite_write_4bytes
 - dbregs_dr2_trap_variable_readwrite_write_4bytes
 - dbregs_dr3_trap_variable_readwrite_write_4bytes
 - dbregs_dr0_trap_variable_readwrite_read_byte
 - dbregs_dr1_trap_variable_readwrite_read_byte
 - dbregs_dr2_trap_variable_readwrite_read_byte
 - dbregs_dr3_trap_variable_readwrite_read_byte
 - dbregs_dr0_trap_variable_readwrite_read_2bytes
 - dbregs_dr1_trap_variable_readwrite_read_2bytes
 - dbregs_dr2_trap_variable_readwrite_read_2bytes
 - dbregs_dr3_trap_variable_readwrite_read_2bytes
 - dbregs_dr0_trap_variable_readwrite_read_4bytes
 - dbregs_dr1_trap_variable_readwrite_read_4bytes
 - dbregs_dr2_trap_variable_readwrite_read_4bytes
 - dbregs_dr3_trap_variable_readwrite_read_4bytes
 - dbregs_dr0_trap_code
 - dbregs_dr1_trap_code
 - dbregs_dr2_trap_code
 - dbregs_dr3_trap_code
 - dbregs_dr0_dont_inherit_lwp
 - dbregs_dr1_dont_inherit_lwp
 - dbregs_dr2_dont_inherit_lwp
 - dbregs_dr3_dont_inherit_lwp
 - dbregs_dr6_dont_inherit_lwp
 - dbregs_dr7_dont_inherit_lwp
 - dbregs_dr0_dont_inherit_execve
 - dbregs_dr1_dont_inherit_execve
 - dbregs_dr2_dont_inherit_execve
 - dbregs_dr3_dont_inherit_execve
 - dbregs_dr6_dont_inherit_execve
 - dbregs_dr7_dont_inherit_execve

Sponsored by <The NetBSD Foundation>
2017-02-22 01:07:13 +00:00
kamil
10e522e132 Add new tests dbregs_dr*_dont_inherit_execve in arch/amd64
Added tests:
 - dbregs_dr0_dont_inherit_execve
 - dbregs_dr1_dont_inherit_execve
 - dbregs_dr2_dont_inherit_execve
 - dbregs_dr3_dont_inherit_execve
 - dbregs_dr6_dont_inherit_execve
 - dbregs_dr7_dont_inherit_execve

Debug Registers must no be inherited after exec() call.

Sponsored by <The NetBSD Foundation>
2017-02-21 08:40:16 +00:00
kamil
2473483dae Protect dbregs_dr*_dont_inherit_lwp in arch/amd64 with HAVE_DBREGS
The code for debug registers isn't in HEAD and it might break the build.

Sponsored by <The NetBSD Foundation>
2017-02-20 06:48:49 +00:00
kamil
69781b08f0 Add new tests dbregs_dr[67]_dont_inherit_lwp in arch/amd64
New tests:
 - dbregs_dr6_dont_inherit_lwp
 - dbregs_dr7_dont_inherit_lwp

Debug Registers are set always per-LWP and they are never inherited.
If a user wants to reuse them, there is need to set trap on thread creation
(PTRACE_LWP_CREATE) and set them from a debugger on newly created LWP.

Sponsored by <The NetBSD Foundation>
2017-02-20 06:18:48 +00:00
kamil
89cfb5786e Fix more issues with compat to i386 in arch/amd64 tests for Debug Registers
Stop compating the number of available registers with 16, it's amd64
specific. i386 ships with 8 Debug Registers.

Sponsored by <The NetBSD Foundation>
2017-02-20 05:47:59 +00:00
kamil
87307ca799 Add new tests dbregs_dr*_dont_inherit_lwp and improve i386 compat
Add new tests:
 - dbregs_dr0_dont_inherit_lwp
 - dbregs_dr1_dont_inherit_lwp
 - dbregs_dr2_dont_inherit_lwp
 - dbregs_dr3_dont_inherit_lwp

Fix memcmp(3) usage when comparing registers. Comparing with len is
incorrect as it should be len*sizeof(register) or just sizeof(registers).

Don't check for 16 Debug Registers, it's amd64 specific and not portable
to i386.

Don't compare registers before and after triggering a trap, it's a bug that
was hidden by incorrect usage of memcmp(3).

Sponsored by <The NetBSD Foundation>
2017-02-20 05:40:51 +00:00
kamil
6a2fda314b Add new tests dbregs_dr[0123]_trap_code in arch/amd64
Add new tests:
 - dbregs_dr0_trap_code
 - dbregs_dr1_trap_code
 - dbregs_dr2_trap_code
 - dbregs_dr3_trap_code

This is the final set of tests for trap types that are supposed to be
supported by all amd64 CPUs.

Traps for code (instruction) execution must be set to 1 byte, otherwise
they are undefined. x86 code traps must point to the first byte of an
instruction.

Sponsored by <The NetBSD Foundation>
2017-02-20 02:56:03 +00:00
kamil
29b683511e Add new tests dbregs_dr*_trap_variable_readwrite_read_*byte* in arch/amd64
Add new tests:
 - dbregs_dr0_trap_variable_readwrite_read_byte
 - dbregs_dr1_trap_variable_readwrite_read_byte
 - dbregs_dr2_trap_variable_readwrite_read_byte
 - dbregs_dr3_trap_variable_readwrite_read_byte
 - dbregs_dr0_trap_variable_readwrite_read_2bytes
 - dbregs_dr1_trap_variable_readwrite_read_2bytes
 - dbregs_dr2_trap_variable_readwrite_read_2bytes
 - dbregs_dr3_trap_variable_readwrite_read_2bytes
 - dbregs_dr0_trap_variable_readwrite_read_4bytes
 - dbregs_dr1_trap_variable_readwrite_read_4bytes
 - dbregs_dr2_trap_variable_readwrite_read_4bytes
 - dbregs_dr3_trap_variable_readwrite_read_4bytes

Sponsored by <The NetBSD Foundation>
2017-02-20 01:34:53 +00:00
kamil
6b2b7082a4 Add new tests dbregs_dr*_trap_variable_readwrite_write_*byte* in arch/amd64
Add new tests:
 - dbregs_dr0_trap_variable_readwrite_write_byte
 - dbregs_dr1_trap_variable_readwrite_write_byte
 - dbregs_dr2_trap_variable_readwrite_write_byte
 - dbregs_dr3_trap_variable_readwrite_write_byte
 - dbregs_dr0_trap_variable_readwrite_write_2bytes
 - dbregs_dr1_trap_variable_readwrite_write_2bytes
 - dbregs_dr2_trap_variable_readwrite_write_2bytes
 - dbregs_dr3_trap_variable_readwrite_write_2bytes
 - dbregs_dr0_trap_variable_readwrite_write_4bytes
 - dbregs_dr1_trap_variable_readwrite_write_4bytes
 - dbregs_dr2_trap_variable_readwrite_write_4bytes
 - dbregs_dr3_trap_variable_readwrite_write_4bytes

Sponsored by <The NetBSD Foundation>
2017-02-20 01:21:47 +00:00
kamil
ef053d8fe1 Extend dbregs_dr*_trap_variable tests to 1-2-4 byte traps in arch/amd64
Replace the following tests:
 - dbregs_dr0_trap_variable
 - dbregs_dr1_trap_variable
 - dbregs_dr2_trap_variable
 - dbregs_dr3_trap_variable

With new ones:
 - dbregs_dr0_trap_variable_writeonly_byte
 - dbregs_dr1_trap_variable_writeonly_byte
 - dbregs_dr2_trap_variable_writeonly_byte
 - dbregs_dr3_trap_variable_writeonly_byte
 - dbregs_dr0_trap_variable_writeonly_2bytes
 - dbregs_dr1_trap_variable_writeonly_2bytes
 - dbregs_dr2_trap_variable_writeonly_2bytes
 - dbregs_dr3_trap_variable_writeonly_2bytes
 - dbregs_dr0_trap_variable_writeonly_4bytes
 - dbregs_dr1_trap_variable_writeonly_4bytes
 - dbregs_dr2_trap_variable_writeonly_4bytes
 - dbregs_dr3_trap_variable_writeonly_4bytes

All tests pass with my local implementation of debug registers. Once the
interface will be verified, I will prepare it for commit to HEAD.

Sponsored by <The NetBSD Foundation>
2017-02-19 23:58:30 +00:00
kamil
ca883d3170 Add checks for si_code in dbregs_dr[0123]_trap_variable in ATF arch/amd64
Validate that debug register traps generate appropriate SIGTRAP signal with
TRAP_DBREG property in si_code.

Sponsored by <The NetBSD Foundation>
2017-02-19 22:09:29 +00:00
kamil
59fed38a43 Synchronize struct dbreg with FreeBSD - rename field member .dbregs to .dr
Currently this code is disabled in HEAD and the dbreg struct has to be
committed first in order to be used. Before enabling it I'm working on
reducing needless differences with FreeBSD and Linux.

Sponsored by <The NetBSD Foundation>
2017-02-18 04:30:34 +00:00
kamil
38578ed3f8 Fix dbregs_dr[0123]_trap_variable in arch/amd64/t_ptrace_wait*
Add missing PT_CONTINUE between two wait(2)-like calls.

Sponsored by <The NetBSD Foundation>
2017-02-18 02:28:21 +00:00
kamil
0c10bdf293 Switch back arch/amd64/t_ptrace_wait.c to r1.6 and restore original DBREGS
This is preparation to replace watchpoint API to dbregs.

Sponsored by <The NetBSD Foundation>
2017-02-16 15:57:45 +00:00
kamil
f0303273a0 Reintroduce ATF_TP_ADD_TC_HAVE_DBREGS for t_ptrace_wait* ATF tests
PT_GETDBREGS & PT_SETDBREGS API will replace the current one for
watchpoints.

Sponsored by <The NetBSD Foundation>
2017-02-15 20:58:22 +00:00
kamil
61aff29627 Introduce new interface in ptrace(2) - PT_GET_SIGMASK and PT_SET_SIGMASK
Add new interface to add ability to get/set signal mask of a tracee.
It has been inspired by Linux PTRACE_GETSIGMASK and PTRACE_SETSIGMASK, but
adapted for NetBSD API.

This interface is used for checkpointing software to set/restore context
of a process including signal mask like criu or just to track this property
in reverse-execution software like Record and Replay Framework (rr).


Add new ATF tests for this interface
====================================
getsigmask1:
    Verify that plain PT_SET_SIGMASK can be called

getsigmask2:
    Verify that PT_SET_SIGMASK reports correct mask from tracee

setsigmask1:
    Verify that plain PT_SET_SIGMASK can be called with empty mask

setsigmask2:
    Verify that sigmask is preserved between PT_GET_SIGMASK and
    PT_SET_SIGMASK

setsigmask3:
    Verify that sigmask is preserved between PT_GET_SIGMASK, process
    resumed and PT_SET_SIGMASK

setsigmask4:
    Verify that new sigmask is visible in tracee


Kernel ABI bump delayed as there are more interfaces to come in ptrace(2).

Sponsored by <The NetBSD Foundation>
2017-02-12 06:09:52 +00:00
kamil
be61ec4715 Remove debug printf(3)
No functional change.

Sponsored by <The NetBSD Foundation>
2017-01-27 16:43:07 +00:00
kamil
71f5b91f6d Add new tests signal{9,10} in t_ptrace_wait{,3,4,6,id,pid}
signal9:
    Verify that masking SIGTRAP in tracee does not stop tracer from
    catching PTRACE_LWP_CREATE breakpoint

signal10:
    Verify that masking SIGTRAP in tracee does not stop tracer from
    catching PTRACE_LWP_EXIT breakpoint

Both tests are broken and linked with PR kern/51918.

Sponsored by <The NetBSD Foundation>
2017-01-27 16:35:47 +00:00
kamil
a7e8e90e67 Add new test signal8 in t_ptrace_wait{,3,4,6,id,pid}
signal8:
    Verify that masking SIGTRAP in tracee does not stop tracer from
    catching PTRACE_VFORK_DONE breakpoint

This test is marked as broken and linked with PR kern/51918.

Sponsored by <The NetBSD Foundation>
2017-01-27 16:06:23 +00:00
kamil
fa3933b2b8 Add new tests signal[67] in t_ptrace_wait{4,6,id,pid}
signal6:
    Verify that masking SIGTRAP in tracee does not stop tracer from
    catching PTRACE_FORK breakpoint

signal7:
    Verify that masking SIGTRAP in tracee does not stop tracer from
    catching PTRACE_VFORK breakpoint

signal6 fails due to PR kern/51918
signal6 fails due to PR kern/51918 and PR kern/51630

Sponsored by <The NetBSD Foundation>
2017-01-27 00:34:52 +00:00
kamil
ac522b683c Add new test signal5 in t_ptrace_wait{,3,4,6,id,pid}
signal5:
    Verify that masking SIGTRAP in tracee does not stop tracer from
    catching exec() breakpoint

signal5 is failing and linked with PR kern/51918

Sponsored by <The NetBSD Foundation>
2017-01-26 22:46:19 +00:00
kamil
a34102a3aa Add new test signal4 in t_ptrace_wait{,3,4,6,id,pid}
signal4:
    Verify that masking SIGTRAP in tracee does not stop tracer from
    catching single step trap

signal4 is marked as failing and referenced with PR kern/51918.

Sponsored by <The NetBSD Foundation>
2017-01-26 22:32:48 +00:00
kamil
a17a9cedbb Add new tests signal[23] in t_ptrace_wait{,3,4,6,id,pid}
signal2:
    Verify that masking SIGTRAP in tracee stops tracer from
    catching this raised signal

signal3:
    Verify that masking SIGTRAP in tracee does not stop tracer from
    catching software breakpoints

signal3 is marked as failing and refrenced with PR kern/51918
Currently signal3 requires code for other architectures than x86_64

Sponsored by <The NetBSD Foundation>
2017-01-26 20:15:44 +00:00
kamil
7da544b6ff Add new test signal1 in t_ptrace_wait{,3,4,6,id,pid}
signal1:
    Verify that masking single unrelated signal does not stop tracer
    from catching other signals

Sponsored by <The NetBSD Foundation>
2017-01-26 17:03:21 +00:00
kamil
905db9de05 Add io_read_auxv1 in t_ptrace_wait{,3,4,6,id,pid}
io_read_auxv1:
    Verify PT_READ_AUXV called for tracee

Sponsored by <The NetBSD Foundation>
2017-01-25 17:01:57 +00:00
kamil
3a94491317 Use siginfo_t to validate tests/kernel/arch/amd64/t_ptrace_wait*
This change makes sure that the fired expected watchpoint with expected
property. It's done with PT_GET_SIGINFO and checking SIGTRAP codes.

Sponsored by <The NetBSD Foundation>
2017-01-18 05:14:34 +00:00
kamil
4e1719ea5b Refactor ptrace_watchpoint structure to allow extensions
Add new field pw_type in the ptrace_watchpoint structure.

amd64 and i386 offer the current set of watchpoints as
PTRACE_PW_TYPE_DBREGS.

On other archs than x86, there are readily available different types of
hardware assisted watchpoints like for code-only or data-only registers on
ARM. Also in future there is an option to implement MMU-based watchpoints
and future per-port or per-cpu extensions.

Next step is to alter this interface on x86 to generate SIGTRAP with
si_code TRAP_HWWTRAP with additional information on occurred event:
 - which watchpoint fired,
 - additional watchpoint-type specific information, like on amd64 with
   PTRACE_PW_TYPE_DBREGS.:
   * only watchpoint fired
   * watchpoint fired and single step occurred

Adjust ATF tests for the pw_type change.

Sponsored by <The NetBSD Foundation>
2017-01-16 21:35:59 +00:00
christos
153621e321 PR/51871: Ngie Cooper: add fcntl.h for O_* fcntl/open constants 2017-01-14 20:57:24 +00:00
kamil
ac2c008382 Add additional check for pe_report_event in lwp_{create,exit}1
This caught bug that currently PTRACE_LWP_EXIT is reported as
PTRACE_LWP_CREATE.

Sponsored by <The NetBSD Foundation>
2017-01-14 19:17:10 +00:00
kamil
6413a1acf0 Introduce PTRACE_LWP_{CREATE,EXIT} in ptrace(2) and TRAP_LWP in siginfo(5)
Add interface in ptrace(2) to track thread (LWP) events:
 - birth,
 - termination.

The purpose of this thread is to keep track of the current thread state in
a tracee and apply e.g. per-thread designed hardware assisted watchpoints.

This interface reuses the EVENT_MASK and PROCESS_STATE interface, and
shares it with PTRACE_FORK, PTRACE_VFORK and PTRACE_VFORK_DONE.

Change the following structure:

typedef struct ptrace_state {
        int     pe_report_event;
        pid_t   pe_other_pid;
} ptrace_state_t;

to

typedef struct ptrace_state {
        int     pe_report_event;
        union {
                pid_t   _pe_other_pid;
                lwpid_t _pe_lwp;
        } _option;
} ptrace_state_t;

#define pe_other_pid    _option._pe_other_pid
#define pe_lwp          _option._pe_lwp

This keeps size of ptrace_state_t unchanged as both pid_t and lwpid_t are
defined as int32_t-like integer. This change does not break existing
prebuilt software and has minimal effect on necessity for source-code
changes. In summary, this change should be binary compatible and shouldn't
break build of existing software.


Introduce new siginfo(5) type for LWP events under the SIGTRAP signal:
TRAP_LWP. This change will help debuggers to distinguish exact source of
SIGTRAP.


Add two basic t_ptrace_wait* tests:
lwp_create1:
    Verify that 1 LWP creation is intercepted by ptrace(2) with
    EVENT_MASK set to PTRACE_LWP_CREATE

lwp_exit1:
    Verify that 1 LWP creation is intercepted by ptrace(2) with
    EVENT_MASK set to PTRACE_LWP_EXIT

All tests are passing.


Surfing the previous kernel ABI bump to 7.99.59 for PTRACE_VFORK{,_DONE}.

Sponsored by <The NetBSD Foundation>
2017-01-14 06:36:52 +00:00
kamil
14d6312469 Add new tests eventmask[34] in t_ptrace_wait{,3,4,6,id,pid}
eventmask3:
    Verify that PTRACE_VFORK in EVENT_MASK is preserved

eventmask4:
    Verify that PTRACE_VFORK_DONE in EVENT_MASK is preserved

Currently eventmask3 is failing and marked with PR kern/51630

Sponsored by <The NetBSD Foundation>
2017-01-14 04:37:55 +00:00
kamil
c35cdcf1bb Update t_ptrace_wait* tests for added support for PTRACE_VFORK{,_DONE}
PTRACE_VFORK and PTRACE_VFORK_DONE are now parts of <sys/ptrace.h>.

PTRACE_VFORK tests are still failing as the support for it is currently
a stub.

Sponsored by <The NetBSD Foundation>
2017-01-13 23:22:12 +00:00
christos
c54cb81102 Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
2017-01-13 21:30:39 +00:00
kre
97c5c4a143 Move the #ifndef/#define dance for the (currently) system undefined
PTRACE_VFORK* macros out of a function that is not always compiled
(as they are used in other functions that are.)   Unbreak the build.
2017-01-13 03:01:09 +00:00
kamil
314c5d1975 Add new tests vforkdone[12] in t_ptrace_wait{,3,4,6,id,pid}
vforkdone1:
    Verify that vfork(2) is intercepted by ptrace(2) with EVENT_MASK
    set to PTRACE_VFORK_DONE

vforkdone2:
    Verify that vfork(2) is intercepted by ptrace(2) with EVENT_MASK
    set to PTRACE_FORK | PTRACE_VFORK_DONE

As of now PTRACE_VFORK_DONE is undefined in <sys/ptrace.h>.

Sponsored by <The NetBSD Foundation>
2017-01-12 21:35:53 +00:00
christos
84802888eb need <sys/stat.h> 2017-01-10 22:10:22 +00:00
kamil
6f12d81bf6 Add new test siginfo6 in t_ptrace_wait{,3,6,6,id,pid} for ports with PT_STEP
siginfo6:
    Verify single PT_STEP call with signal information check

Sponsored by <The NetBSD Foundation>
2017-01-10 05:08:24 +00:00
kamil
d7bca94546 Add new test siginfo5 in t_ptrace_wait{,3,4,6,id,pid}
siginfo5:
    Verify that fork(2) is intercepted by ptrace(2) with EVENT_MASK
    set to PTRACE_FORK and reports correct signal information

Sponsored by <The NetBSD Foundation>
2017-01-10 00:54:22 +00:00