summaryrefslogtreecommitdiff
path: root/tests/kernel
AgeCommit message (Collapse)Author
2018-02-03* Use 'struct testmsg' rather than 'struct mymsg' (avoids a conflictpgoyette
with FreeBSD) * Fix a broken call to open(2) with O_CREAT and no permission argument. * ANSIfy function definitions. * Improve failure messages. From freebsd.org via Brooks Davis - Thanks!
2018-01-09Add EVFILT_FSmartin
2017-12-30Double the nanosleep() time to make the test work more reliably on mymartin
dual CPU alpha (where previously we sometimes ended up with no delay at all).
2017-12-14Use SCRIPTS instead of PROGS to avoid strip(1) if STRIPFLAG=-s.nakayama
2017-12-12PR/52812: scole_mail: src/tests/kernel/t_timeleft.c doesn't compile with ↵christos
MKRUMP=no It needs libpthread regardless MKRUMP..
2017-12-10Add tests to make sure that the program name is what it is supposed to be.christos
2017-12-08fix usage.christos
2017-12-08make _lwp_park return the remaining time to sleep in the "ts" argumentchristos
if it is a relative timestamp, as discussed in tech-kern. XXX: pullup-8
2017-12-07Add trapsignal tests that make sure that traps don't end up spinningchristos
indefinitely, discussed in tech-kern.
2017-12-06add a test to check that the interpreter is preserved when executing scripts.christos
2017-04-16Stress rump hyperentropy a little harder.riastradh
2017-04-03Remove tests/kernel/t_ptrace* from the treekamil
ptrace(2) tests have been moved to tests/lib/libc/sys Sponsored by <The NetBSD Foundation>
2017-04-02Remove kernel/arch/{amd64,i386,x86} testskamil
These files were merged with kernel/t_ptrace_wait* This removes MD test files. Sponsored by <The NetBSD Foundation>
2017-04-02Merge kernel/t_ptrace_wait with kernel/arch/amd64/t_ptrace_waitkamil
This aims to remove MD-specific tests files for ptrace(2). Prefix i386 and amd64 tests with unique strings "i386_" and "x86_64_". This removes conflicts with generic tests. Sponsored by <The NetBSD Foundation>
2017-04-02Merge kernel/t_ptrace_wait with kernel/arch/i386/t_ptrace_waitkamil
This aims to remove MD-specific tests files for ptrace(2). Sponsored by <The NetBSD Foundation>
2017-04-02Merge kernel/t_ptrace_wait with kernel/arch/x86/t_ptrace_waitkamil
This aims to remove MD-specific tests files for ptrace(2). Sponsored by <The NetBSD Foundation>
2017-04-02Correct another string about securelevel in t_ptracekamil
Change: Test must be run with securelevel >= 1 To: Test must be run with securelevel >= 0 In attach_pid1_securelevel. Sponsored by <The NetBSD Foundation>
2017-04-02Deduplicate code in step* tests in t_ptrace_wait*kamil
No functional change. Sponsored by <The NetBSD Foundation>
2017-04-01Correct securelevel in attach_pid1_securelevelkamil
Assert that a debugger cannot attach to PID 1 with securelevel >= 0 (as root) instead of >= 1. Sponsored by <The NetBSD Foundation>
2017-04-01Try to fix Clang/LLVM buildkamil
Initialize a local variable.
2017-04-01Refactor dbregs_dr*_dont_inherit_execve ATF tests for x86/kamil
Eliminate duplicated code. Sponsored by <The NetBSD Foundation>
2017-03-30Remove deuplicated code in dbregs_dr[01234]_dont_inherit_lwpkamil
Currently remove tests for dbregs_dr[67]_dont_inherit_lwp. Sponsored by <The NetBSD Foundation>
2017-03-30Eliminate code duplication in the x86 dbregs_dr[0123]_trap_variable* testskamil
This is work in progress to remove no longer needed code overhead shared between tests. Sponsored by <The NetBSD Foundation>
2017-03-29Deduplicate shared code in dbregs_preserve_dr[0123]{,_yield,_continued}kamil
Move common function code into shared subroutine. While there remove checks for defined(HAVE_DBREGS). All x86 ports offer debug register accessors. Sponsored by <The NetBSD Foundation>
2017-03-28Explain expected behavior for PTRACE_FORK events in t_ptrace_wait*kamil
PR kern/52117 ptrace(2) PTRACE_FORK fails on some platforms Add message similar to: We expect two SIGTRAP events, for child 22199 (TRAP_CHLD, pe_report_event=PTRACE_FORK, state.pe_other_pid=child2) and for child2 (TRAP_CHLD, pe_report_event=PTRACE_FORK, state.pe_other_pid=child) This should make the expected behavior more clear. Sponsored by <The NetBSD Foundation>
2017-03-28Mark PT_STEP tests in t_ptrace_wait* as broken on ARMkamil
There is a definition of PT_STEP for userland, but no implementation in the kernel. PR kern/52119 PT_STEP not supported on arm 32-bit Sponsored by <The NetBSD Foundation>
2017-03-28Set timeout expected in resume1 (t_ptrace_wait*)kamil
Mark timeout for this test 5 sec. It sometimes works sometimes does not. Add a local sleep(3) at the end to get consisten report about timeouting always. PR kern/51995 Sponsored by <The NetBSD Foundation>
2017-03-28Mark fork1 and siginfo5 as broken on sparc, sparc64, evbarm and alphakamil
PR kern/52117 ptrace(2) PTRACE_FORK fails on some platforms These tests work on amd64, i386 and xen. They are part of t_ptrace_wait*. Sponsored by <The NetBSD Foundation>
2017-03-28Optimize signal6 in t_ptrace_waitkamil
Reduce timeout to 5 seconds. This tests timeouts and this change saves time. PR kern/51918 Sponsored by <The NetBSD Foundation>
2017-03-28Mark signal6 as failing due to timeout not regular failurekamil
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-25kern/52012 kern/52018 kern/52019 were all fixed by christosskrll
2017-03-03Since it is unlikely that any of this really wants to test whetherkre
[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-01Mark syscall1 broken in t_ptrace_wait*kamil
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-02-28Mark resume1 and syscallemu1 tests broken in t_ptrace_wait*kamil
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-28Add new test syscallemu1 in t_ptrace_wait*kamil
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-25kill stray qchristos
2017-02-25make bitfields unsignedchristos
2017-02-24Add new test syscall1 in t_ptrace_wait*kamil
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-23Improve PT_SET_SIGMASK and PT_GET_SIGMASK API in ptrace(2)kamil
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-22Introduce new ptrace(2) API to allow/prevent exection of LWPkamil
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-22Add kernel/arch/x86 ATF tests for CPU Debug Registers for amd64 and i386kamil
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-21Add new tests dbregs_dr*_dont_inherit_execve in arch/amd64kamil
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-20Protect dbregs_dr*_dont_inherit_lwp in arch/amd64 with HAVE_DBREGSkamil
The code for debug registers isn't in HEAD and it might break the build. Sponsored by <The NetBSD Foundation>
2017-02-20Add new tests dbregs_dr[67]_dont_inherit_lwp in arch/amd64kamil
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-20Fix more issues with compat to i386 in arch/amd64 tests for Debug Registerskamil
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-20Add new tests dbregs_dr*_dont_inherit_lwp and improve i386 compatkamil
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-20Add new tests dbregs_dr[0123]_trap_code in arch/amd64kamil
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-20Add new tests dbregs_dr*_trap_variable_readwrite_read_*byte* in arch/amd64kamil
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-20Add new tests dbregs_dr*_trap_variable_readwrite_write_*byte* in arch/amd64kamil
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-19Extend dbregs_dr*_trap_variable tests to 1-2-4 byte traps in arch/amd64kamil
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>