[LTP] [PATCH] {rt_, }sigsuspend01: Fix build for non-glibc platforms
Alistair Strachan
astrachan@google.com
Fri Jun 22 23:57:09 CEST 2018
The tests dig inside the sigset_t to check if the kernel reverted any
changes made to the signal mask. This is done by comparing the first
32 signal flag bits by dereferencing the sigset_t and reading __val[0],
which is an unsigned long. If the field is not called __val (with
Android's bionic it is called '__bits' instead) the build breaks.
Change the tests to use memcmp for the first sizeof(unsigned long) bits,
which should be equivalent. This makes the test more portable.
Signed-off-by: Alistair Strachan <astrachan@google.com>
---
testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c | 4 +++-
testcases/kernel/syscalls/sigsuspend/sigsuspend01.c | 3 ++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c b/testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c
index 19e2eb66a..c8c228a47 100644
--- a/testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c
+++ b/testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c
@@ -26,6 +26,7 @@
#include <stdio.h>
#include <signal.h>
#include <errno.h>
+#include <string.h>
#include "test.h"
#include "lapi/syscalls.h"
@@ -91,7 +92,8 @@ int main(int ac, char **av)
if (TEST_RETURN == -1) {
tst_brkm(TFAIL | TTERRNO, cleanup,
"rt_sigprocmask failed");
- } else if (set1.__val[0] != set2.__val[0]) {
+ } else if (memcmp(&set1, &set2,
+ sizeof(unsigned long))) {
tst_brkm(TFAIL | TTERRNO, cleanup,
"rt_sigsuspend failed to "
"preserve signal mask");
diff --git a/testcases/kernel/syscalls/sigsuspend/sigsuspend01.c b/testcases/kernel/syscalls/sigsuspend/sigsuspend01.c
index b9542e705..a846f6330 100644
--- a/testcases/kernel/syscalls/sigsuspend/sigsuspend01.c
+++ b/testcases/kernel/syscalls/sigsuspend/sigsuspend01.c
@@ -121,7 +121,8 @@ int main(int ac, char **av)
tst_resm(TFAIL, "sigprocmask() Failed "
"to get previous signal mask "
"of process");
- } else if (sigset2.__val[0] != sigset1.__val[0]) {
+ } else if (memcmp(&sigset1, &sigset2,
+ sizeof(unsigned long))) {
tst_resm(TFAIL, "sigsuspend failed to "
"preserve signal mask");
} else {
More information about the ltp
mailing list