-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[sanitizer_common] Fix signal_line.cpp on SPARC #100535
[sanitizer_common] Fix signal_line.cpp on SPARC #100535
Conversation
``` SanitizerCommon-ubsan-sparc-Linux :: Linux/signal_line.cpp ``` currently `FAIL`s on Linux/sparc64 (32 and 64-bit) for `n == 2`. Instead of the expected `SIGSEGV`, the test dies with `SIGBUS`. `strace` reveals that this is due to a unaligned access: ``` --- SIGBUS {si_signo=SIGBUS, si_code=BUS_ADRALN, si_addr=0x1} --- ``` which is to be expected on a strict-alignment target like SPARC. Fixed by changing the invalid pointer to be better aligned. Tested on `sparc64-unknown-linux-gnu` and `x86_64-pc-linux-gnu`.
@llvm/pr-subscribers-compiler-rt-sanitizer Author: Rainer Orth (rorth) Changes
currently
which is to be expected on a strict-alignment target like SPARC. Fixed by changing the invalid pointer to be better aligned. Tested on Full diff: https://github.com/llvm/llvm-project/pull/100535.diff 1 Files Affected:
diff --git a/compiler-rt/test/sanitizer_common/TestCases/Linux/signal_line.cpp b/compiler-rt/test/sanitizer_common/TestCases/Linux/signal_line.cpp
index 208ece3e05af4..f1afd859c207a 100644
--- a/compiler-rt/test/sanitizer_common/TestCases/Linux/signal_line.cpp
+++ b/compiler-rt/test/sanitizer_common/TestCases/Linux/signal_line.cpp
@@ -20,7 +20,8 @@ int main(int argc, char **argv) {
// CHECK1: SUMMARY: [[SAN]]: SEGV {{.*}}signal_line.cpp:[[@LINE-2]]:[[TAB]] in main
if (n == 2)
- *((volatile int *)0x1) = __LINE__;
+ // Allow for strict-alignment targets that require natural alignment.
+ *((volatile int *)0x8) = __LINE__;
// CHECK2: #{{[0-9]+ .*}}main {{.*}}signal_line.cpp:[[@LINE-1]]:[[TAB:[0-9]+]]
// CHECK2: SUMMARY: [[SAN]]: SEGV {{.*}}signal_line.cpp:[[@LINE-2]]:[[TAB]] in main
}
|
/cherry-pick 94394ca |
``` SanitizerCommon-ubsan-sparc-Linux :: Linux/signal_line.cpp ``` currently `FAIL`s on Linux/sparc64 (32 and 64-bit) for `n == 2`. Instead of the expected `SIGSEGV`, the test dies with `SIGBUS`. `strace` reveals that this is due to a unaligned access: ``` --- SIGBUS {si_signo=SIGBUS, si_code=BUS_ADRALN, si_addr=0x1} --- ``` which is to be expected on a strict-alignment target like SPARC. Fixed by changing the invalid pointer to be better aligned. Tested on `sparc64-unknown-linux-gnu` and `x86_64-pc-linux-gnu`. (cherry picked from commit 94394ca)
/pull-request #101140 |
``` SanitizerCommon-ubsan-sparc-Linux :: Linux/signal_line.cpp ``` currently `FAIL`s on Linux/sparc64 (32 and 64-bit) for `n == 2`. Instead of the expected `SIGSEGV`, the test dies with `SIGBUS`. `strace` reveals that this is due to a unaligned access: ``` --- SIGBUS {si_signo=SIGBUS, si_code=BUS_ADRALN, si_addr=0x1} --- ``` which is to be expected on a strict-alignment target like SPARC. Fixed by changing the invalid pointer to be better aligned. Tested on `sparc64-unknown-linux-gnu` and `x86_64-pc-linux-gnu`. (cherry picked from commit 94394ca)
currently
FAIL
s on Linux/sparc64 (32 and 64-bit) forn == 2
. Instead of the expectedSIGSEGV
, the test dies withSIGBUS
.strace
reveals that this is due to a unaligned access:which is to be expected on a strict-alignment target like SPARC. Fixed by changing the invalid pointer to be better aligned.
Tested on
sparc64-unknown-linux-gnu
andx86_64-pc-linux-gnu
.