Commit b6e3f572 by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

target-supports.exp (get_compiler_messages): Support optional arguments, the…

target-supports.exp (get_compiler_messages): Support optional arguments, the fourth being compiler options.

	* lib/target-supports.exp (get_compiler_messages): Support
	optional arguments, the fourth being compiler options.
	(check_effective_target_fpic): New proc.
	* gcc.dg/20050321-2.c: Restrict to target fpic.

From-SVN: r97763
parent 070e3969
2005-04-07 Hans-Peter Nilsson <hp@axis.com>
* lib/target-supports.exp (get_compiler_messages): Support
optional arguments, the fourth being compiler options.
(check_effective_target_fpic): New proc.
* gcc.dg/20050321-2.c: Restrict to target fpic.
2005-04-06 James A. Morrison <phython@gcc.gnu.org> 2005-04-06 James A. Morrison <phython@gcc.gnu.org>
* gcc.dg/15443-1.c: New test. * gcc.dg/15443-1.c: New test.
......
...@@ -24,9 +24,17 @@ ...@@ -24,9 +24,17 @@
# BASENAME is a basename to use for temporary files. # BASENAME is a basename to use for temporary files.
# TYPE is the type of compilation to perform (see target_compile). # TYPE is the type of compilation to perform (see target_compile).
# CONTENTS gives the contents of the input file. # CONTENTS gives the contents of the input file.
proc get_compiler_messages {basename type contents} { # The rest is optional:
# OPTIONS: additional compiler options to use.
proc get_compiler_messages {basename type contents args} {
global tool global tool
if { [llength $args] > 0 } {
set options "additional_flags=[lindex $args 0]"
} else {
set options ""
}
set src ${basename}[pid].c set src ${basename}[pid].c
switch $type { switch $type {
assembly { set output ${basename}[pid].s } assembly { set output ${basename}[pid].s }
...@@ -35,7 +43,7 @@ proc get_compiler_messages {basename type contents} { ...@@ -35,7 +43,7 @@ proc get_compiler_messages {basename type contents} {
set f [open $src "w"] set f [open $src "w"]
puts $f $contents puts $f $contents
close $f close $f
set lines [${tool}_target_compile $src $output $type ""] set lines [${tool}_target_compile $src $output $type "$options"]
file delete $src file delete $src
remote_file build delete $output remote_file build delete $output
...@@ -295,6 +303,55 @@ proc check_profiling_available { test_what } { ...@@ -295,6 +303,55 @@ proc check_profiling_available { test_what } {
return $profiling_available_saved return $profiling_available_saved
} }
# Return 1 if -fpic and -fPIC are supported, as in no warnings or errors
# emitted, 0 otherwise. Whether a shared library can actually be built is
# out of scope for this test.
#
# When the target name changes, replace the cached result.
proc check_effective_target_fpic { } {
global et_fpic_saved
global et_fpic_target_name
if { ![info exists et_fpic_target_name] } {
set et_fpic_target_name ""
}
# If the target has changed since we set the cached value, clear it.
set current_target [current_target_name]
if { $current_target != $et_fpic_target_name } {
verbose "check_effective_target_fpic: `$et_fpic_target_name'" 2
set et_fpic_target_name $current_target
if [info exists et_fpic_saved] {
verbose "check_effective_target_fpic: removing cached result" 2
unset et_fpic_saved
}
}
if [info exists et_fpic_saved] {
verbose "check_effective_target_fpic: using cached result" 2
} else {
verbose "check_effective_target_fpic: compiling source" 2
# Note that M68K has a multilib that supports -fpic but not
# -fPIC, so we need to check both. We test with a program that
# requires GOT references.
set et_fpic_saved [string match "" [get_compiler_messages fpic object {
extern int foo (void); extern int bar;
int baz (void) { return foo () + bar; }
} "-fpic"]]
if { $et_fpic_saved != 0 } {
set et_fpic_saved [string match "" [get_compiler_messages fpic object {
extern int foo (void); extern int bar;
int baz (void) { return foo () + bar; }
} "-fPIC"]]
}
}
verbose "check_effective_target_fpic: returning $et_fpic_saved" 2
return $et_fpic_saved
}
# Return true if iconv is supported on the target. In particular IBM1047. # Return true if iconv is supported on the target. In particular IBM1047.
proc check_iconv_available { test_what } { proc check_iconv_available { test_what } {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment