[LTP] [PATCH v3] syscalls/signal06: loop being clobbered by syscall on clang
Edward Liaw
edliaw@google.com
Sat Aug 20 01:27:06 CEST 2022
Indicate to the compiler that the syscall will modify registers rcx
and r11 to prevent loop from getting clobbered.
Signed-off-by: Edward Liaw <edliaw@google.com>
---
I added an output operand for the result so that the compiler would know
that rax is clobbered as well.
---
testcases/kernel/syscalls/signal/signal06.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/testcases/kernel/syscalls/signal/signal06.c b/testcases/kernel/syscalls/signal/signal06.c
index 64f886ee3..cf0706ea4 100644
--- a/testcases/kernel/syscalls/signal/signal06.c
+++ b/testcases/kernel/syscalls/signal/signal06.c
@@ -72,8 +72,8 @@ void test(void)
while (D == VALUE && loop < LOOPS) {
/* sys_tkill(pid, SIGHUP); asm to avoid save/reload
* fp regs around c call */
- asm ("" : : "a"(__NR_tkill), "D"(pid), "S"(SIGHUP));
- asm ("syscall" : : : "ax");
+ int unused;
+ asm volatile ("syscall" : "=a"(unused) : "a"(__NR_tkill), "D"(pid), "S"(SIGHUP) : "rcx", "r11");
loop++;
}
--
2.37.2.609.g9ff673ca1a-goog
More information about the ltp
mailing list