The attached revised patch disables two asan tests introduced in r194458
which are invalid
on darwin. The g++.dg/asan/interception-test-1.C test should be dg-skip-if'd
on darwin since
mac function interposition is used instead of interception. The
c-c++-common/asan/swapcontext-test-1.c
test is invalid as ucontext support was deprecated in darwin10 and removed
completely
in darwin11. The current implementation of check_effective_target_swapcontext in
lib/target-supports.exp doesn't catch the deprecation of ucontext support on
darwin
because it doesn't try to parse the ucontext.h include file. The attached patch
changes the check_effective_target_swapcontext to use check_no_compiler_messages
with compilation of ucontext.h. Tested without regression on both
x86_64-apple-darwin10
and x86_64-unknown-linux-gnu. Okay for gcc trunk?
Jack
gcc/testsuite/
2012-12-14 Jack Howarth <[email protected]>
PR sanitizer/55679
* g++.dg/asan/interception-test-1.C: Skip on darwin.
* lib/target-supports.exp (check_effective_target_swapcontext): Use
check_no_compiler_messages to test support in ucontext.h.
Index: gcc/testsuite/g++.dg/asan/interception-test-1.C
===================================================================
--- gcc/testsuite/g++.dg/asan/interception-test-1.C (revision 194483)
+++ gcc/testsuite/g++.dg/asan/interception-test-1.C (working copy)
@@ -3,6 +3,7 @@
// { dg-do run }
// { dg-options "-fno-builtin-malloc -fno-builtin-free" }
// { dg-shouldfail "asan" }
+// { dg-skip-if "Darwin uses mac function interposition" { *-*-darwin* } }
#include <stdlib.h>
#include <stdio.h>
Index: gcc/testsuite/lib/target-supports.exp
===================================================================
--- gcc/testsuite/lib/target-supports.exp (revision 194495)
+++ gcc/testsuite/lib/target-supports.exp (working copy)
@@ -736,7 +736,14 @@ proc check_effective_target_setrlimit {}
# Return 1 if the target supports swapcontext, 0 otherwise.
proc check_effective_target_swapcontext {} {
- return [check_function_available "swapcontext"]
+ return [check_no_compiler_messages swapcontext object {
+ #include <ucontext.h>
+ int main (void)
+ {
+ ucontext_t orig_context,child_context;
+ if (swapcontext(&child_context, &orig_context) < 0) { }
+ }
+ }]
}
# Return 1 if compilation with -pthread is error-free for trivial