summaryrefslogtreecommitdiff
path: root/gcc/testsuite/lib
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2012-12-12 23:04:22 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2012-12-12 23:04:22 +0000
commitbf78b817a297a5cf4eadf8b140b4d243b203e7f8 (patch)
treef599eefbf765aa51ab18df6bffb69ac8e1d9817c /gcc/testsuite/lib
parent5cc4a786cd1f1dfd7d4263712584b8a27b4a2bb3 (diff)
downloadgcc-bf78b817a297a5cf4eadf8b140b4d243b203e7f8.tar.gz
* lib/gcc-dg.exp (${tool}_load): Handle non-existing
set_target_env_var the same as if it is empty list. (dg-set-target-env-var): Fix up error message. (set-target-env-var): Record both preexisting env var values as well as info that env wasn't set. (restore-target-env-var): Iterate on reversed list, if second sublist element is 1, setenv the env var to the third sublist element, otherwise unsetenv it. (gcc-dg-runtest): Don't initialize set_target_env_var. (dg-test): Unset set_target_env_var if it was set. * g++.dg/asan/deep-tail-call-1.C: Whitespace fixes. Don't rely on argc being one. * g++.dg/asan/interception-malloc-test-1.C: Only run on linux. Whitespace fixes. Avoid unnecessary * sizeof(char). * g++.dg/asan/deep-thread-stack-1.C: Add -lasan -lpthread to dg-options. Whitespace fixes. * g++.dg/asan/deep-stack-uaf-1.C: Skip for -flto. Whitespace fixes. * g++.dg/asan/interception-test-1.C: Whitespace fixes. * g++.dg/asan/interception-failure-test-1.C: Whitespace fixes. Avoid unnecessary * sizeof(char). Remove // CHECK: comment. * g++.dg/asan/default-options-1.C: Whitespace fixes. * g++.dg/asan/symbolize-callback-1.C: Whitespace fixes. Make first __asan_symbolize argument unnamed. Avoid unnecessary * sizeof(char). * g++.dg/asan/large-func-test-1.C: Whitespace fixes. Don't rely on argc being one. Allow both _Znwj and _Znwm as operator new. Ignore everything in the backtrace above operator new. Fix up dg-output regexps. * c-c++-common/asan/null-deref-1.c: Add -fno-omit-frame-pointer and for x86 -mno-omit-leaf-frame-pointer. Fix up dg-output regexps. * c-c++-common/asan/clone-test-1.c: Whitespace fixes. Return non-zero on failures. Avoid pointless PASS dg-output check. Remove bogus dg-shouldfail. * c-c++-common/asan/sanity-check-pure-c-1.c: Fix up dg-output regexps. Avoid unnecessary * sizeof(char). * c-c++-common/asan/heap-overflow-1.c: Fix up dg-output regexps. Don't rely on argc being one. * c-c++-common/asan/sleep-before-dying-1.c: Whitespace fixes. Avoid unnecessary * sizeof(char). * c-c++-common/asan/rlimit-mmap-test-1.c: Whitespace fixes. * c-c++-common/asan/stack-overflow-1.c: Fix up dg-output regexps. * c-c++-common/asan/global-overflow-1.c: Add -fno-builtin-memset. Fix up dg-output regexps. * c-c++-common/asan/strncpy-overflow-1.c: Fix up dg-output regexps. * c-c++-common/asan/memcmp-1.c: Don't rely on argc being one. * c-c++-common/asan/use-after-free-1.c: Fix up dg-output regexps. * c-c++-common/asan/swapcontext-test-1.c: Don't rely on argc being one. * c-c++-common/asan/force-inline-opt0-1.c: Remove dg-skip-if. * c-c++-common/asan/strip-path-prefix-1.c: Whitespace fixes. Avoid unnecessary * sizeof(char). 2012-12-12 Wei Mi <wmi@google.com> * lib/target-supports.exp (check_effective_target_dlopen, check_effective_target_clone, check_effective_target_setrlimit, check_effective_target_swapcontext): New procedures. * lib/gcc-dg.exp (${tool}_load): Handle dg-set-target-env-var. (dg-set-target-env-var, set-target-env-var, restore-target-env-var): New procedures. (gcc-dg-runtest): Set set_target_env_var. * g++.dg/asan/symbolize-callback-1.C: New test. * g++.dg/asan/shared-lib-test-1-so.cc: New file. * g++.dg/asan/deep-tail-call-1.C: New test. * g++.dg/asan/default-options-1.C: New test. * g++.dg/asan/interception-test-1.C: New test. * g++.dg/asan/dlclose-test-1-so.cc: New file. * g++.dg/asan/deep-thread-stack-1.C: New test. * g++.dg/asan/interception-malloc-test-1.C: New test. * g++.dg/asan/deep-stack-uaf-1.C: New test. * g++.dg/asan/large-func-test-1.C: New test. * g++.dg/asan/interception-failure-test-1.C: New test. * c-c++-common/asan/strip-path-prefix-1.c: New test. * c-c++-common/asan/force-inline-opt0-1.c: New test. * c-c++-common/asan/swapcontext-test-1.c: New test. * c-c++-common/asan/null-deref-1.c: New test. * c-c++-common/asan/global-overflow-1.c: New test. * c-c++-common/asan/strncpy-overflow-1.c: New test. * c-c++-common/asan/rlimit-mmap-test-1.c: New test. * c-c++-common/asan/stack-overflow-1.c: New test. * c-c++-common/asan/use-after-free-1.c: New test. * c-c++-common/asan/sanity-check-pure-c-1.c: New test. * c-c++-common/asan/clone-test-1.c: New test. * c-c++-common/asan/heap-overflow-1.c: New test. * c-c++-common/asan/sleep-before-dying-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@194458 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/lib')
-rw-r--r--gcc/testsuite/lib/gcc-dg.exp54
-rw-r--r--gcc/testsuite/lib/target-supports.exp20
2 files changed, 74 insertions, 0 deletions
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index c939c50a36c..f2161ea6526 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -254,7 +254,21 @@ if { [info procs ${tool}_load] != [list] \
proc ${tool}_load { program args } {
global tool
global shouldfail
+ global set_target_env_var
+
+ set saved_target_env_var [list]
+ if { [info exists set_target_env_var] \
+ && [llength $set_target_env_var] != 0 } {
+ if { [is_remote target] } {
+ return [list "unsupported" ""]
+ }
+ set-target-env-var
+ }
set result [eval [list saved_${tool}_load $program] $args]
+ if { [info exists set_target_env_var] \
+ && [llength $set_target_env_var] != 0 } {
+ restore-target-env-var
+ }
if { $shouldfail != 0 } {
switch [lindex $result 0] {
"pass" { set status "fail" }
@@ -266,6 +280,42 @@ if { [info procs ${tool}_load] != [list] \
}
}
+proc dg-set-target-env-var { args } {
+ global set_target_env_var
+ if { [llength $args] != 3 } {
+ error "dg-set-target-env-var: need two arguments"
+ return
+ }
+ lappend set_target_env_var [list [lindex $args 1] [lindex $args 2]]
+}
+
+proc set-target-env-var { } {
+ global set_target_env_var
+ upvar 1 saved_target_env_var saved_target_env_var
+ foreach env_var $set_target_env_var {
+ set var [lindex $env_var 0]
+ set value [lindex $env_var 1]
+ if [info exists env($var)] {
+ lappend saved_target_env_var [list $var 1 $env($var)]
+ } else {
+ lappend saved_target_env_var [list $var 0]
+ }
+ setenv $var $value
+ }
+}
+
+proc restore-target-env-var { } {
+ upvar 1 saved_target_env_var saved_target_env_var
+ foreach env_var [lreverse $saved_target_env_var] {
+ set var [lindex $env_var 0]
+ if [lindex $env_var 1] {
+ setenv $var [lindex $env_var 2]
+ } else {
+ unsetenv $var
+ }
+ }
+}
+
# Utility routines.
#
@@ -677,6 +727,7 @@ if { [info procs saved-dg-test] == [list] } {
global compiler_conditional_xfail_data
global shouldfail
global testname_with_flags
+ global set_target_env_var
if { [ catch { eval saved-dg-test $args } errmsg ] } {
set saved_info $errorInfo
@@ -697,6 +748,9 @@ if { [info procs saved-dg-test] == [list] } {
set additional_sources ""
set additional_prunes ""
set shouldfail 0
+ if [info exists set_target_env_var] {
+ unset set_target_env_var
+ }
unset_timeout_vars
if [info exists compiler_conditional_xfail_data] {
unset compiler_conditional_xfail_data
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index ef93ad1f56f..75436a660de 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -719,6 +719,26 @@ proc check_effective_target_mmap {} {
return [check_function_available "mmap"]
}
+# Return 1 if the target supports dlopen, 0 otherwise.
+proc check_effective_target_dlopen {} {
+ return [check_function_available "dlopen"]
+}
+
+# Return 1 if the target supports clone, 0 otherwise.
+proc check_effective_target_clone {} {
+ return [check_function_available "clone"]
+}
+
+# Return 1 if the target supports setrlimit, 0 otherwise.
+proc check_effective_target_setrlimit {} {
+ return [check_function_available "setrlimit"]
+}
+
+# Return 1 if the target supports swapcontext, 0 otherwise.
+proc check_effective_target_swapcontext {} {
+ return [check_function_available "swapcontext"]
+}
+
# Return 1 if compilation with -pthread is error-free for trivial
# code, 0 otherwise.