modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20001229-1.c (about) 1 /* This testcase originally provoked an unaligned access fault on Alpha. 2 3 Since Digital Unix and Linux (and probably others) by default fix 4 these up in the kernel, the failure was not visible unless one 5 is sitting at the console examining logs. 6 7 So: If we know how, ask the kernel to deliver SIGBUS instead so 8 that the test case visibly fails. */ 9 10 #if defined(__alpha__) && defined(__linux__) 11 #include <asm/sysinfo.h> 12 #include <asm/unistd.h> 13 14 static inline int 15 setsysinfo(unsigned long op, void *buffer, unsigned long size, 16 int *start, void *arg, unsigned long flag) 17 { 18 syscall(__NR_osf_setsysinfo, op, buffer, size, start, arg, flag); 19 } 20 21 static void __attribute__((constructor)) 22 trap_unaligned(void) 23 { 24 unsigned int buf[2]; 25 buf[0] = SSIN_UACPROC; 26 buf[1] = UAC_SIGBUS | UAC_NOPRINT; 27 setsysinfo(SSI_NVPAIRS, buf, 1, 0, 0, 0); 28 } 29 #endif /* alpha */ 30 31 void foo(char *a, char *b) { } 32 33 void showinfo() 34 { 35 char uname[33] = "", tty[38] = "/dev/"; 36 foo(uname, tty); 37 } 38 39 int main() 40 { 41 showinfo (); 42 exit (0); 43 }