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
This commit is contained in:
parent
070e396943
commit
b6e3f5722e
2 changed files with 66 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
|||
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>
|
||||
|
||||
* gcc.dg/15443-1.c: New test.
|
||||
|
|
|
@ -24,9 +24,17 @@
|
|||
# BASENAME is a basename to use for temporary files.
|
||||
# TYPE is the type of compilation to perform (see target_compile).
|
||||
# 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
|
||||
|
||||
if { [llength $args] > 0 } {
|
||||
set options "additional_flags=[lindex $args 0]"
|
||||
} else {
|
||||
set options ""
|
||||
}
|
||||
|
||||
set src ${basename}[pid].c
|
||||
switch $type {
|
||||
assembly { set output ${basename}[pid].s }
|
||||
|
@ -35,7 +43,7 @@ proc get_compiler_messages {basename type contents} {
|
|||
set f [open $src "w"]
|
||||
puts $f $contents
|
||||
close $f
|
||||
set lines [${tool}_target_compile $src $output $type ""]
|
||||
set lines [${tool}_target_compile $src $output $type "$options"]
|
||||
file delete $src
|
||||
remote_file build delete $output
|
||||
|
||||
|
@ -295,6 +303,55 @@ proc check_profiling_available { test_what } {
|
|||
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.
|
||||
|
||||
proc check_iconv_available { test_what } {
|
||||
|
|
Loading…
Add table
Reference in a new issue