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>

Reply via email to