diff options
author | dzwdz | 2022-10-18 18:39:14 +0200 |
---|---|---|
committer | dzwdz | 2022-10-18 18:39:14 +0200 |
commit | 6bb22b0a144646788f8c14bce1bde147693da780 (patch) | |
tree | 8c498167dcf9aeeab7552d7780dcf47d233672b6 /src/user/app | |
parent | b3f0606f7d206f355647f5c266aadea137e93429 (diff) |
user/tests: more info when a test crashes
Diffstat (limited to 'src/user/app')
-rw-r--r-- | src/user/app/tests/tests.c | 7 | ||||
-rw-r--r-- | src/user/app/tests/tests.h | 5 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/user/app/tests/tests.c b/src/user/app/tests/tests.c index 14225ac..e4b4d37 100644 --- a/src/user/app/tests/tests.c +++ b/src/user/app/tests/tests.c @@ -2,6 +2,9 @@ #include <camellia/syscalls.h> #include <unistd.h> +__attribute__((visibility("hidden"))) +extern char _image_base[]; + FILE *fail_trig; void run_test(void (*fn)()) { @@ -10,7 +13,9 @@ void run_test(void (*fn)()) { exit(0); } else { /* successful tests must return 0 */ - if (_syscall_await() != 0) test_fail(); + if (_syscall_await() != 0) { + test_failf("0x%x, base 0x%x", (void*)fn - (void*)_image_base, _image_base); + } } } diff --git a/src/user/app/tests/tests.h b/src/user/app/tests/tests.h index e9b06e5..e93653e 100644 --- a/src/user/app/tests/tests.h +++ b/src/user/app/tests/tests.h @@ -29,4 +29,9 @@ int forkpipe(FILE **f, handle_t *h); fflush(fail_trig); \ exit(0); \ } while (0) +#define test_failf(fmt, ...) do { \ + fprintf(fail_trig, "%s():%u " fmt, __func__, __LINE__, __VA_ARGS__); \ + fflush(fail_trig); \ + exit(0); \ +} while (0) #define test(cond) if (!(cond)) test_fail(); |