diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_x86_64.inc b/compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_x86_64.inc index e084b84ab118..5ccb83a236bd 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_x86_64.inc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_x86_64.inc @@ -13,7 +13,8 @@ static uptr internal_syscall(u64 nr) { u64 retval; - asm volatile("syscall" : "=a"(retval) : "a"(nr) : "rcx", "r11"); + asm volatile("syscall" : "=a"(retval) : "a"(nr) : "rcx", "r11", + "memory", "cc"); return retval; } @@ -21,7 +22,7 @@ template static uptr internal_syscall(u64 nr, T1 arg1) { u64 retval; asm volatile("syscall" : "=a"(retval) : "a"(nr), "D"((u64)arg1) : - "rcx", "r11"); + "rcx", "r11", "memory", "cc"); return retval; } @@ -29,7 +30,7 @@ template static uptr internal_syscall(u64 nr, T1 arg1, T2 arg2) { u64 retval; asm volatile("syscall" : "=a"(retval) : "a"(nr), "D"((u64)arg1), - "S"((u64)arg2) : "rcx", "r11"); + "S"((u64)arg2) : "rcx", "r11", "memory", "cc"); return retval; } @@ -37,7 +38,7 @@ template static uptr internal_syscall(u64 nr, T1 arg1, T2 arg2, T3 arg3) { u64 retval; asm volatile("syscall" : "=a"(retval) : "a"(nr), "D"((u64)arg1), - "S"((u64)arg2), "d"((u64)arg3) : "rcx", "r11"); + "S"((u64)arg2), "d"((u64)arg3) : "rcx", "r11", "memory", "cc"); return retval; } @@ -47,7 +48,7 @@ static uptr internal_syscall(u64 nr, T1 arg1, T2 arg2, T3 arg3, T4 arg4) { asm volatile("mov %5, %%r10;" "syscall" : "=a"(retval) : "a"(nr), "D"((u64)arg1), "S"((u64)arg2), "d"((u64)arg3), "r"((u64)arg4) : - "rcx", "r11", "r10"); + "rcx", "r11", "r10", "memory", "cc"); return retval; } @@ -59,7 +60,7 @@ static uptr internal_syscall(u64 nr, T1 arg1, T2 arg2, T3 arg3, T4 arg4, "mov %6, %%r8;" "syscall" : "=a"(retval) : "a"(nr), "D"((u64)arg1), "S"((u64)arg2), "d"((u64)arg3), "r"((u64)arg4), "r"((u64)arg5) : - "rcx", "r11", "r10", "r8"); + "rcx", "r11", "r10", "r8", "memory", "cc"); return retval; } @@ -73,7 +74,8 @@ static uptr internal_syscall(u64 nr, T1 arg1, T2 arg2, T3 arg3, T4 arg4, "mov %7, %%r9;" "syscall" : "=a"(retval) : "a"(nr), "D"((u64)arg1), "S"((u64)arg2), "d"((u64)arg3), "r"((u64)arg4), "r"((u64)arg5), - "r"((u64)arg6) : "rcx", "r11", "r10", "r8", "r9"); + "r"((u64)arg6) : "rcx", "r11", "r10", "r8", "r9", + "memory", "cc"); return retval; }