aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVidya Praveen <vidyapraveen@arm.com>2014-06-26 11:25:12 +0100
committerVidya Praveen <vp@gcc.gnu.org>2014-06-26 11:25:12 +0100
commit1b1e36a8564d013940513e1e4eff509bbbf61715 (patch)
tree2112c1a37d9a963d7727e2bf9982e668278c9b87 /gcc
parentde6c4e1fba5886a6edb2b834c7ab791f5a6042d6 (diff)
downloadgcc-1b1e36a8564d013940513e1e4eff509bbbf61715.zip
gcc-1b1e36a8564d013940513e1e4eff509bbbf61715.tar.gz
gcc-1b1e36a8564d013940513e1e4eff509bbbf61715.tar.bz2
target-support.exp (bind_pic_locally): Save the flags to 'flags_to_postpone' instead of appending to 'flags'.
gcc/testsuite/ * lib/target-support.exp (bind_pic_locally): Save the flags to 'flags_to_postpone' instead of appending to 'flags'. * lib/gcc.exp (gcc_target_compile): Append board_info's multilib_flags with flags_to_postpone and revert after target_compile. * lib/g++.exp (g++_target_compile): Ditto. * lib/gfortran.exp (gfortran_target_compile): Ditto. From-SVN: r212023
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/lib/g++.exp17
-rw-r--r--gcc/testsuite/lib/gcc.exp24
-rw-r--r--gcc/testsuite/lib/gfortran.exp21
-rw-r--r--gcc/testsuite/lib/target-supports.exp18
5 files changed, 82 insertions, 7 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d6cd329..77e7a33 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2014-06-26 Vidya Praveen <vidyapraveen@arm.com>
+
+ * lib/target-support.exp (bind_pic_locally): Save the flags to
+ 'flags_to_postpone' instead of appending to 'flags'.
+ * lib/gcc.exp (gcc_target_compile): Append board_info's multilib_flags
+ with flags_to_postpone and revert after target_compile.
+ * lib/g++.exp (g++_target_compile): Ditto.
+ * lib/gfortran.exp (gfortran_target_compile): Ditto.
+
2014-06-26 Nick Clifton <nickc@redhat.com>
* lib/target-supports.exp (check_effective_target_trapping): Fix
diff --git a/gcc/testsuite/lib/g++.exp b/gcc/testsuite/lib/g++.exp
index 751e27b..6658c58 100644
--- a/gcc/testsuite/lib/g++.exp
+++ b/gcc/testsuite/lib/g++.exp
@@ -288,6 +288,8 @@ proc g++_target_compile { source dest type options } {
global gluefile wrap_flags
global ALWAYS_CXXFLAGS
global GXX_UNDER_TEST
+ global flags_to_postpone
+ global board_info
if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } {
lappend options "libs=${gluefile}"
@@ -313,10 +315,25 @@ proc g++_target_compile { source dest type options } {
exec rm -f $rponame
}
+ # bind_pic_locally adds -fpie/-fPIE flags to flags_to_postpone and it is
+ # appended here to multilib_flags as it can be overridden by the latter
+ # if it was added earlier. After the target_compile, multilib_flags is
+ # restored to its orignal content.
+ set tboard [target_info name]
+ if {[board_info $tboard exists multilib_flags]} {
+ set orig_multilib_flags "[board_info [target_info name] multilib_flags]"
+ append board_info($tboard,multilib_flags) " $flags_to_postpone"
+ }
+
set options [dg-additional-files-options $options $source]
set result [target_compile $source $dest $type $options]
+ if {[board_info $tboard exists multilib_flags]} {
+ set board_info($tboard,multilib_flags) $orig_multilib_flags
+ set flags_to_postpone ""
+ }
+
return $result
}
diff --git a/gcc/testsuite/lib/gcc.exp b/gcc/testsuite/lib/gcc.exp
index 49394b08..f937064 100644
--- a/gcc/testsuite/lib/gcc.exp
+++ b/gcc/testsuite/lib/gcc.exp
@@ -126,7 +126,9 @@ proc gcc_target_compile { source dest type options } {
global GCC_UNDER_TEST
global TOOL_OPTIONS
global TEST_ALWAYS_FLAGS
-
+ global flags_to_postpone
+ global board_info
+
if {[target_info needs_status_wrapper] != "" && \
[target_info needs_status_wrapper] != "0" && \
[info exists gluefile] } {
@@ -162,8 +164,26 @@ proc gcc_target_compile { source dest type options } {
set options [concat "{additional_flags=$TOOL_OPTIONS}" $options]
}
+ # bind_pic_locally adds -fpie/-fPIE flags to flags_to_postpone and it is
+ # appended here to multilib_flags as it can be overridden by the latter
+ # if it was added earlier. After the target_compile, multilib_flags is
+ # restored to its orignal content.
+ set tboard [target_info name]
+ if {[board_info $tboard exists multilib_flags]} {
+ set orig_multilib_flags "[board_info [target_info name] multilib_flags]"
+ append board_info($tboard,multilib_flags) " $flags_to_postpone"
+ }
+
lappend options "timeout=[timeout_value]"
lappend options "compiler=$GCC_UNDER_TEST"
set options [dg-additional-files-options $options $source]
- return [target_compile $source $dest $type $options]
+ set return_val [target_compile $source $dest $type $options]
+
+ if {[board_info $tboard exists multilib_flags]} {
+ set board_info($tboard,multilib_flags) $orig_multilib_flags
+ set flags_to_postpone ""
+ }
+
+ return $return_val
}
+
diff --git a/gcc/testsuite/lib/gfortran.exp b/gcc/testsuite/lib/gfortran.exp
index c9b5d64..9d174bb 100644
--- a/gcc/testsuite/lib/gfortran.exp
+++ b/gcc/testsuite/lib/gfortran.exp
@@ -234,16 +234,35 @@ proc gfortran_target_compile { source dest type options } {
global gluefile wrap_flags
global ALWAYS_GFORTRANFLAGS
global GFORTRAN_UNDER_TEST
+ global flags_to_postpone
+ global board_info
if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } {
lappend options "libs=${gluefile}"
lappend options "ldflags=${wrap_flags}"
}
+ # bind_pic_locally adds -fpie/-fPIE flags to flags_to_postpone and it is
+ # appended here to multilib_flags as it can be overridden by the latter
+ # if it was added earlier. After the target_compile, multilib_flags is
+ # restored to its orignal content.
+ set tboard [target_info name]
+ if {[board_info $tboard exists multilib_flags]} {
+ set orig_multilib_flags "[board_info [target_info name] multilib_flags]"
+ append board_info($tboard,multilib_flags) " $flags_to_postpone"
+ }
+
lappend options "compiler=$GFORTRAN_UNDER_TEST"
lappend options "timeout=[timeout_value]"
set options [concat "$ALWAYS_GFORTRANFLAGS" $options]
set options [dg-additional-files-options $options $source]
- return [target_compile $source $dest $type $options]
+ set return_val [target_compile $source $dest $type $options]
+
+ if {[board_info $tboard exists multilib_flags]} {
+ set board_info($tboard,multilib_flags) $orig_multilib_flags
+ set flags_to_postpone ""
+ }
+
+ return $return_val
}
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index a30273a..83a8167 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -5312,25 +5312,35 @@ proc add_options_for_ieee { flags } {
return $flags
}
+if {![info exists flags_to_postpone]} {
+ set flags_to_postpone ""
+}
+
# Add to FLAGS the flags needed to enable functions to bind locally
# when using pic/PIC passes in the testsuite.
-
proc add_options_for_bind_pic_locally { flags } {
+ global flags_to_postpone
+
+ # Instead of returning 'flags' with the -fPIE or -fpie appended, we save it
+ # in 'flags_to_postpone' and append it later in gcc_target_compile procedure in
+ # order to make sure that the multilib_flags doesn't override this.
+
if {[check_no_compiler_messages using_pic2 assembly {
#if __PIC__ != 2
#error FOO
#endif
}]} {
- return "$flags -fPIE"
+ set flags_to_postpone "-fPIE"
+ return $flags
}
if {[check_no_compiler_messages using_pic1 assembly {
#if __PIC__ != 1
#error FOO
#endif
}]} {
- return "$flags -fpie"
+ set flags_to_postpone "-fpie"
+ return $flags
}
-
return $flags
}