From 3783f026829b915cfa6f67e3075e72e0cde047a8 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Tue, 10 Apr 2007 23:00:00 +0000 Subject: [PATCH] 2007-04-10 Eric Christopher * lib/target-supports.exp (check_effective_target_fstack_protector): Rewrite. From-SVN: r123702 --- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/lib/target-supports.exp | 33 +++++++++++++++++++++++---- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 037e7a2e6b8..f2e261c8a4f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-04-10 Eric Christopher + + * lib/target-supports.exp + (check_effective_target_fstack_protector): Rewrite. + 2007-04-09 Mark Mitchell PR c++/31449 diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 47e6ba9e831..180686f69bf 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -492,11 +492,36 @@ proc check_effective_target_fopenmp {} { } # Return 1 if the target supports -fstack-protector - proc check_effective_target_fstack_protector {} { - return [check_no_compiler_messages fstack_protector assembly { - void foo (void) { } - } "-fstack-protector"] + global tool + set result "" + + set src stack_prot[pid].c + set exe stack_prot[pid].x + + verbose "check_effective_target_fstack_protector compiling testfile $src" 2 + + set f [open $src "w"] + # Compile a small test program. + puts $f "int main (void)\n { return 0; }\n" + close $f + + set opts "additional_flags=-fstack-protector" + set lines [${tool}_target_compile $src $exe executable "$opts" ] + file delete $src + + if [string match "" $lines] then { + # No error messages, everything is OK. + set result [${tool}_load "./$exe" "" ""] + set status [lindex $result 0] + remote_file build delete $exe + verbose "check_iconv_available status is <$status>" 2 + + if { $status == "pass" } then { + return 1 + } + } + return 0 } # Return 1 if compilation with -freorder-blocks-and-partition is error-free