The attached revised patch disables three 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. It also skips the c-c++-common/asan/rlimit-mmap-test-1.c on darwin since that target lacks RLIMIT_AS in setrlimit. Tested without regression on both x86_64-apple-darwin10 and x86_64-unknown-linux-gnu. Okay for gcc trunk? Jack ps This patch leaves the failures in c-c++-common/asan/global-overflow-1.c and c-c++-common/asan/stack-overflow-1.c as the only unresolved parts of PR55679 on darwin.
gcc/testsuite/
2012-12-16 Jack Howarth <howa...@bromo.med.uc.edu> PR sanitizer/55679 * g++.dg/asan/interception-test-1.C: Skip on darwin. * c-c++-common/asan/rlimit-mmap-test-1.c: Likewise. * lib/target-supports.exp (check_effective_target_swapcontext): Use check_no_compiler_messages to test support in ucontext.h. Index: gcc/testsuite/lib/target-supports.exp =================================================================== --- gcc/testsuite/lib/target-supports.exp (revision 194538) +++ 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 executable { + #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 Index: gcc/testsuite/g++.dg/asan/interception-test-1.C =================================================================== --- gcc/testsuite/g++.dg/asan/interception-test-1.C (revision 194538) +++ 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/c-c++-common/asan/rlimit-mmap-test-1.c =================================================================== --- gcc/testsuite/c-c++-common/asan/rlimit-mmap-test-1.c (revision 194538) +++ gcc/testsuite/c-c++-common/asan/rlimit-mmap-test-1.c (working copy) @@ -2,6 +2,7 @@ /* { dg-do run { target setrlimit } } */ /* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */ +// { dg-skip-if "Darwin lacks RLIMIT_AS in setrlimit" { *-*-darwin* } } /* { dg-shouldfail "asan" } */ #include <stdlib.h>