For what it's worth I'm more with Bruno on this. For the tests, the cost of these warnings outweighs the benefit.

It'd be OK with me to disable the troublesome warnings globally for the tests subdirectory, using -Wno-missing-prototypes or whatever.

For the -Wnull-dereference issue it may be worthwhile to use a circumlocution that fools GCC into not issuing the warning. After all, a compiler smart enough to warn about '*(volatile int *) 0 = 42' might also be smart enough to see that it's undefined behavior and therefore omit the assignment's effect entirely. Perhaps something like the attached (untested) patch?
diff --git a/tests/test-sigsegv-catch-stackoverflow2.c b/tests/test-sigsegv-catch-stackoverflow2.c
index b94d1310b..bfd4617a3 100644
--- a/tests/test-sigsegv-catch-stackoverflow2.c
+++ b/tests/test-sigsegv-catch-stackoverflow2.c
@@ -50,6 +50,7 @@ sigset_t mainsigset;
 
 volatile int pass = 0;
 uintptr_t page;
+int volatile *null_pointer_to_volatile;
 
 static void
 stackoverflow_handler_continuation (void *arg1, void *arg2, void *arg3)
@@ -183,7 +184,7 @@ main ()
       *(volatile int *) (page + 0x678) = 42;
       break;
     case 3:
-      *(volatile int *) 0 = 42;
+      *null_pointer_to_volatile = 42;
       break;
     case 4:
       break;

Reply via email to