Commit Graph

1568 Commits

Author SHA1 Message Date
kamil 1a5f018b01 Enhance the support of LLVM sanitizers
Define _REENTRANT for MKSANITIZER build. This is needed for at least stdio
code. This caused new build issued with duplicated symbols in few places
and rump kernel code picking different code paths borrowed from libc.
Handle all this in one go.

Add bsd.sanitizer.mk to share common code used by programs and libraries.

Switch from realall to beforeinstall target in .syms files. This is more
reliable in MKSANITIZER.
2019-08-27 22:48:53 +00:00
kamil 1101023c0c Fix build of t_ubsan/t_ubsanxx under MKSANITIZER
Do not link micro-ubsan runtime for disabled tests.

This avoids double symbols linked into a single binary.
2019-08-15 08:17:32 +00:00
martin 7f7ec27799 Re-enable the QEMU specific timing limits, but only an increased upper
limit for now - let's see if that works on the test-bed.
2019-08-11 11:42:23 +00:00
martin 98d251c113 PR lib/54440: adapt the FreeBSD change to this test and calculate time
differences more exact, allowing between 0 and 1 s delay between the
expected wakeup and the actual event happening.
Also convert the QEMU special case code to the same scheme, but for now
disable it (with XXX mark) and see if the proper timing limits fix that
case too.
If not, we will re-enable the QEMU special case.
2019-08-10 07:36:15 +00:00
christos 92bbbea0b3 PR/54414: Valery Ushakov: add a test for wcsrtombs(3) doesn't update the
source argument on conversion error
2019-07-28 13:46:45 +00:00
martin 653f037ebe PR misc/54382: whenever open(2) is called with O_CREAT, make sure to
pass an open mode argument.
2019-07-16 17:29:17 +00:00
gson b9a5a0bbdb In the setitimer_old test case, allow for time passing between the two
setitimer() calls.  Should fix PR kern/54370.
2019-07-13 12:44:02 +00:00
maya 36592171e1 return return atf_no_error() instead of 0 for consistency.
suggested by moritzbuhl in https://github.com/NetBSD/src/pull/11/
2019-07-09 16:24:01 +00:00
gson 7753bf0b70 Update require.memory to match the increased rlimit. 2019-07-09 13:59:25 +00:00
kamil c4f0499ad5 Avoid GCC warning on NetBSD/i386
Cast note_hdr.n_namesz to ssize_t through size_t to avoid potential
signedness bit shifts.
2019-07-01 02:04:37 +00:00
blymn f3430e9b6f Fix test for pad and enable it. 2019-06-30 22:37:11 +00:00
blymn afb56d5385 Enable mvscanw test since libcurses is now correct. 2019-06-30 22:21:33 +00:00
mgorny dba7737605 Add a test for verifying procinfo note inside coredumps.
Add a first test for triggering a core dump in the debugged process
(via PT_DUMPCORE) and verifying it.  The test finds procinfo note
and checks its contents.

The core dump is processed through libelf.  However, it only provides
for finding all note segments (or sections?).  I had to implement
finding and processing individual notes myself.  I've added
a core_find_note() function that will be reused in future tests.

Reviewed by kamil.
2019-06-30 21:20:04 +00:00
blymn edb52aabb2 Enable beep test, return is correct. 2019-06-26 22:18:44 +00:00
mgorny c2ad96ff63 Implement PT_GETXSTATE and PT_SETXSTATE
Introduce two new ptrace() requests: PT_GETXSTATE and PT_SETXSTATE,
that provide access to the extended (and extensible) set of FPU
registers on amd64 and i386.  At the moment, this covers AVX (YMM)
and AVX-512 (ZMM, opmask) registers.  It can be easily extended
to cover further register types without breaking backwards
compatibility.

PT_GETXSTATE issues the XSAVE instruction with all kernel-supported
extended components enabled.  The data is copied into 'struct xstate'
(which -- unlike the XSAVE area itself -- has stable format
and offsets).

PT_SETXSTATE issues the XRSTOR instruction to restore the register
values from user-provided 'struct xstate'.  The function replaces only
the specific XSAVE components that are listed in 'xs_rfbm' field,
making it possible to issue partial updates.

Both syscalls take a 'struct iovec' pointer rather than a direct
argument.  This requires the caller to explicitly specify the buffer
size.  As a result, existing code will continue to work correctly
when the structure is extended (performing partial reads/updates).
2019-06-26 12:30:12 +00:00
blymn 6e08cf3636 Fixed mvscanw test but leave disabled for the moment, the return for
mvscanw is incorrect in libcurses, we need a major lib version bump
to correct it.
2019-06-25 22:19:29 +00:00
kamil 177438b064 Add mkfifo{,at}(2) mode in mknod{,at}(2) as requested by POSIX
mknod with mode & S_IFIFO and dev=0 shall behave like mkfifo.

Update the documentation to reflect this state.

Add ATF tests.

This is an in-kernel implementation as typically user-space programs use
mkfifo(2) directly, however whenever there is need to bypass libc (like in
valgrind) then portable POSIX software calls the mknod syscall.

Noted on tech-kern@ by Greg Troxel.
2019-06-20 03:31:53 +00:00
kamil 6923eb2928 Allow to conditionally enable LWP ATF tests in t_ptrace_wait*
By default the tests are disabled.
2019-06-18 21:14:26 +00:00
kamil 0937aecd4c Enable vfork(2) ATF tests in t_ptrace_wait*
The racing issues are gone in my local setup.
2019-06-13 20:26:06 +00:00
kamil 3d6a33dc1e Add new ATF ptrace(2) tests for posix_spawn, reusing tests for fork/vfork
New tests:
 - posix_spawn_detach_spawner
 - posix_spawn_kill_spawner
 - posix_spawn_singalmasked
 - posix_spawn_singalignored

All test pass.
2019-06-12 17:07:11 +00:00
kamil 3bdf3dd9d4 Add new PTRACE_POSIX_SPAWN tests in ptrace(3)
Add test:
 - eventmask_preserved_posix_spawn
 - fork9..fork16
 - vfork9..vfork16
 - posix_spawn1..16

New tests verify semantics of PTRACE_POSIX_SPAWN.

All tests pass.
2019-06-11 23:30:05 +00:00
blymn 1c4bb036d6 Fixed bug in curses library keyname, test now passes. 2019-06-11 10:23:36 +00:00
blymn aa404db794 Bracket strings being validated with markers to ensure sneaky whitespeace
is noticed.
2019-06-11 10:22:35 +00:00
blymn 347a95cdfb Fix dupwin test. 2019-06-11 08:09:35 +00:00
blymn 77b858f20e fix derwin test. 2019-06-11 08:00:38 +00:00
kamil 0b4f3508ae Add posix_spawn(3) ATF tests in t_ptrace_wait*
New tests verify whether forking process reports forking events to a
debugger.

Right now there is no support in the kernel for this system.
2019-06-10 22:16:06 +00:00
kamil 9faafe843f Add more verbosity to debug messages in t_ptrace_wait
Log func() file:line for each debug message.

Most messages are similar one with the other and this change allows easier
navigation in the code.
2019-06-10 21:18:04 +00:00
blymn 1a6faca1b0 Add a script that allows a check file to be created by cutting and
pasting the contents of the square brackets in the "Excess nn bytes
from slave" message emitted when the director is running in verbose
mode (-v).
2019-06-09 07:54:55 +00:00
blymn 94110ecce1 Adjust check files for changes in cursor positioning. 2019-06-09 07:49:42 +00:00
blymn 437fe1c40c Add an extra parameter to the h_run function so flags can be passed
to the director.
2019-06-09 07:48:47 +00:00
maxv d1002cd7eb Change the NVMM API to reduce data movements. Sent to tech-kern@. 2019-06-08 07:27:44 +00:00
mgorny d3a3574d75 Fix alignment of SSE filling data 2019-06-04 12:17:42 +00:00
mgorny e00cc41d74 Add more debug to register writing tests 2019-06-04 12:17:05 +00:00
kre 9c62ddd5c1 Deal with fallout from the addition of
KERN_PROC_CWD in sysctl(3)
That is kern.proc.$$.KERN_PROC_CWD (I think - not that it matters here)

The effect is that -lrump now requires -lrumpvfs

This set of changes fixes (I believe) regular dynamic builds,
more might be required for static builds (will be verified soon).
2019-06-01 06:59:17 +00:00
maya 6eb8aac828 Print result of function we tested (sinf),
not of function we didn't test (sin).

no need to print 17 digits for a float.

from Riastradh.
2019-05-27 00:24:37 +00:00
maya 5d16d0ee65 on i386 with FLT_EVAL_METHOD=2, the computation inside cosf was done in
binary80 arithmetic and never rounded to binary32 at the end, so it
appeared farther from the correctly rounded result in binary32 than expected.

Force binary32 using volatile float.

PR lib/54232: lib/libm/t_cos:cosf_angles regression on i386

From Riastradh.
2019-05-27 00:10:36 +00:00
blymn ae5e88e264 Add more tests for curses 2019-05-26 09:54:32 +00:00
blymn 81750f8bcd Start supporting wide char tests. 2019-05-26 07:47:37 +00:00
blymn 002c700f46 Adjust copywin test to work correctly with updated curses.
This fixes PR 54231
2019-05-26 07:28:14 +00:00
kamil 1a993279dc Add new user_va0_disable* tests in t_ptrace_wait*
Add tests:
 - user_va0_disable_pt_continue
 - user_va0_disable_pt_syscall
 - user_va0_disable_pt_detach

Assert that setting PC to 0x0 in PT_CONTINUE/PT_SYSCALL/PT_DETACH for
vm.user_va0_disable==0 is disallowed.
2019-05-25 03:25:08 +00:00
kamil 3978be2006 Add get_user_va0_disable() in t_ptrace_wait.h
Add a utility function to check vm.user_va0_disable.
2019-05-25 03:22:53 +00:00
blymn 84da1bf133 Add option to specify an alternate library location to allow testing
a development library version without installing it.
2019-05-19 22:34:23 +00:00
bad 48e354a3ed Get rid of all the -lrumpdev and -lrumpvfs that are no longer needed
after moving rump's mainbus from rumpdev to rumpkern.

Produces the same atf-run results as before.
2019-05-13 17:55:07 +00:00
blymn ac3404f424 Provide correct validation after curses change. 2019-05-12 02:37:24 +00:00
maxv bfb4017486 Rework the machine configuration interface.
Provide three ranges in the conf space: <libnvmm:0-100>, <MI:100-200> and
<MD:200-...>. Remove nvmm_callbacks_register(), and replace it by the conf
op NVMM_MACH_CONF_CALLBACKS, handled by libnvmm. The callbacks are now
per-machine, and the emulators should now do:

-	nvmm_callbacks_register(&cbs);
+	nvmm_machine_configure(&mach, NVMM_MACH_CONF_CALLBACKS, &cbs);

This provides more granularity, for example if the process runs two VMs
and wants different callbacks for each.
2019-05-11 07:31:56 +00:00
mgorny 989594cf4b Add PT_SET*REGS tests for mm/xmm registers. 2019-05-10 18:07:10 +00:00
mgorny d0d1caee46 Remove obsolete size asserts. 2019-05-10 17:34:26 +00:00
mgorny d8aacecd69 Use newly-filled i386 reg structs in PT_GETFPREGS & PT_GETXMMREGS tests. 2019-05-10 16:28:00 +00:00
mgorny 2d583f722a Add tests for PT_SETREGS 2019-05-10 16:24:35 +00:00
mgorny 873249d162 Add ptrace() tests for reading mm* and xmm* registers 2019-05-09 13:07:35 +00:00