aboutsummaryrefslogtreecommitdiff
path: root/tests/README
diff options
context:
space:
mode:
authorLuca Dariz <luca@orpolo.org>2024-01-11 22:08:57 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2024-01-13 22:42:53 +0100
commite813641e2fef0fba5a2de9e5a44fd00ab95a86d0 (patch)
treec617b8841d38d7aa74f4fccd353b81bab83df11f /tests/README
parent7538b56278a95d87b9a4ddec01e5679376cc5b13 (diff)
downloadgnumach-e813641e2fef0fba5a2de9e5a44fd00ab95a86d0.tar.gz
gnumach-e813641e2fef0fba5a2de9e5a44fd00ab95a86d0.tar.bz2
gnumach-e813641e2fef0fba5a2de9e5a44fd00ab95a86d0.zip
add basic user-space tests with qemu
* configure.ac: move test fragment to have USER32 * tests/Makefrag.am: add user tests * tests/README: add basic info on how to run and debug user tests * tests/configfrag.ac: allow the test compiler/flags to be autoconfigured or customized * tests/grub.cfg.single.template: add minimal grub config to boot a module * tests/include/device/cons.h: add a simplified version of device/cons.h usable for tests * tests/include/kern/printf.h: symlink to kern/printf.h * tests/include/mach/mig_support.h: add basic version for user-space tests * tests/include/syscalls.h: add prototypes for syscalls used in tests. * tests/include/testlib.h: add definitions for common test functionalities * tests/include/util/atoi.h: symlink to util/atoi.h * tests/run-qemu.sh.template: add a simple qemu test runner * tests/start.S: add arch-specific entry point * tests/syscalls.S: generate syscalls entry points * tests/test-hello.c: add basic smoke test * tests/testlib.c: add the minimal functionality to run a user-space executable and reboot the system, and some test helpers. * tests/user-qemu.mk: add rules to build simple user-space test modules, including generating mig stubs. The tests reuse some kernel code (like printf(), mach_atoi(), mem*(), str*() functions) so we can use the freestanding environment and not depend on glibc. Message-ID: <20240111210907.419689-1-luca@orpolo.org>
Diffstat (limited to 'tests/README')
-rw-r--r--tests/README37
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/README b/tests/README
new file mode 100644
index 00000000..3dacc184
--- /dev/null
+++ b/tests/README
@@ -0,0 +1,37 @@
+
+There are some basic tests that can be run qith qemu. You can run all the tests with
+
+ $ make check
+
+or selectively with:
+
+ $ make run-hello
+
+Also, you can debug the existing tests, or a new one, by starting on one shell
+
+ $ make debug-hello
+
+and on another shell you can attach with gdb, load the symbols of the
+bootstrap module and break on its _start():
+
+ $ gdb gnumach
+ ...
+ (gdb) target remote :1234
+ ...
+ (gdb) b setup_main
+ Breakpoint 11 at 0xffffffff81019d60: file ../kern/startup.c, line 98.
+ (gdb) c
+ Continuing.
+
+ Breakpoint 11, setup_main () at ../kern/startup.c:98
+ 98 cninit();
+ (gdb) add-symbol-file ../gnumach/build-64/module-task
+ Reading symbols from ../gnumach/build-64/module-task...
+ (gdb) b _start
+ Breakpoint 12 at 0x40324a: _start. (2 locations)
+ (gdb) c
+ Continuing.
+
+ Breakpoint 12, _start () at ../tests/testlib.c:96
+ 96 {
+ (gdb)