<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/109573>109573</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Linux/preinstalled_signal.cpp FAILs on Linux/sparc64
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
rorth
</td>
</tr>
</table>
<pre>
With ASan testing enabled on SPARC as per PR #107405, the
```
AddressSanitizer-sparc-linux-dynamic :: TestCases/Linux/preinstalled_signal.cpp
```
test `FAIL`s on Linux/sparc64. There are several issues here:
- The sparc layout of `struct KernelSigaction`/`struct sigaction` differs from other targets:`
```
@@ -34,6 +34,13 @@ struct KernelSigaction {
#if defined(__mips__)
unsigned long flags;
__sighandler_t handler;
+#elif defined(__sparc__)
+ __sighandler_t handler;
+ __sigset_t mask;
+# if __WORDSIZE == 64
+ int __glibc_reserved0;
+# endif
+ int flags;
#else
__sighandler_t handler;
unsigned long flags;
```
- When using `syscall(__NR_rt_sigaction)`, the `syscall` returns `EINVAL`. As can be seen in glibc `sysdeps/unix/sysv/linux/sparc/sparc{32,64}/libc_sigaction.c` (`STUB)`, the sparc version of the syscall takes an additional arg, however the stub functions passed there aren't exported from `libc` and thus cannot be used outside.
- When using `sigaction` instead, several assertions fail. The problem turns out to be that those `sigaction` calls trigger the interceptor, which again changes the order in which `AsanInitInternal` and `Init` are called.
- The same behaviour can be seen e.g. on Linux/i386 when using `sigaction` instead of `syscall(__NR_rt_sigaction)`.
It seems the test relies heavily on the (undefined!?) relative execution order of `AsanInitInternal` `and `Init`, falling apart if that
changes for whatever reason.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVVFv4zYM_jXKCxFDkRMnfshD0l6AYofbob3tgL0YskXb2imSIcnpdb9-oJy0aa9DBwRIIlHkx48fSRmC7izilq32bHU7k2Psnd9652M_q5162n7XsYfdg7QQMURtO0Ara4MKnIWHr7v7G5ABBvTw9R6YyBd8veQrJm4g9sj4LeM7VvDzJ_0F2CnlMYQHaXXU_6Cfh0H6Zm60HX_O1ZOVR90Ay3cs38E3DPFGBgxMHD6TAROHwaO2IUpjUFWUgDRZMwzvRiPUwAp-2N19ZgUPBPviJ4UtlhnAtx49gvQIAU_opQEdwogB6JyQJF9zsoP0Cox8cmME15LzEP3YRPgNvUXzoDvZRO0sYRCHl-twdQFKty36AK13R3CxRw9R-g5joHAX9O-mxJacLTnM8yUTNwUwsU-_Fjmcb96HA2y9P1eAiVy3oLDVFhUTm6o66iFUFRPlpUYw2iQNBcbZDloju8Dy_fN1RcT30iqDvopw_vVswcSeiRzNmzCJu6s4TOz_j6vJJGCsIhxl-PEmDIBuoaq-_35_-3D31ydg-S3Lb6FYXgXRNkJVdUbXTeUxoD-h4r_4Qat0--bVm9RTWuEs7Y-wf8Dj28KeVfa9RwtjoGYj9TyFRhqT-PtyX_lYvQhJlElkqdmubQsOHuPobaDTT3df_tyR-jOAXYBGWqhJ6WhBW0icnB8rHKjRRqtTfzyFExMHc90uz9_rfS5If0u2vk1GdfMCLGsIAhMbVvCHb3_sXwOdOuiEPpAsXTsdTtAhyh8YQFqQSmnyJQ1I39Hb3j1Sd07mcayhHW0KF2CQIaCim6mPLRPrCPhzcD6imrqMFZxQEjJpyXZMXFgXiY6R3rsxBq0w-49KXDcwTSCUinBdZgZh8BOeVmozzRUYvKsNHmEqBw2N6Chg7GWE2LuAv_gmIgJEr7vunK62EX2DQ3SeIj72uulBdlJbaHppOwzJzHmFnoo6GbCC74K0d1bHO3JgpblkzwpOx-mvxxQRVfZqzskjQo29PGk3-leqwazLrgepzjcFPH7I1WVafiTo7Lod7iLFPE75pWnu0eg0muVJmyfCkdQvNqN9njULlh-YKMlWRn1CwJ_YjGkMThxNUN5jhxX8NUFEeCuNoczkIH2kcUPVmwBe-G-dh8dexiRRjzI4m83UNldlXsoZbhdrUZTlpiyXs34rNryWquFNIUqUq3Jd8nVRy7xQi3qBopnpreBiyUsheLkq8mXW5KhU0-Ji1aAQuGFLjkdSmTGnY-Z8N0sra7vg5Wqdz4ys0YS014Ww-DgtNCYErXm_pUfzeuwCW3KjQwwvbqKOBrcf7FqgffreMp2N3mz7GIe0x8SBiUOnYz_WWeOONCfM6fI1H7z7G5tIAkrblonDGf1pK_4NAAD__762vYI">