# Support routines for LD testsuite.
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-# 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+# 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
# Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
# Returns 0 otherwise.
#
proc at_least_gcc_version { major minor } {
-
+
if {![info exists CC]} {
set CC [find_gcc]
}
}
# m6811/m6812 code has references to soft registers.
- if {[istarget m6811-*-*] || [istarget m6812-*-*]} {
+ if {[istarget m6811-*-*] || [istarget m6812-*-*] || [istarget m68hc1*-*-*]} {
append flags " --defsym _.frame=0 --defsym _.d1=0 --defsym _.d2=0"
append flags " --defsym _.d3=0 --defsym _.d4=0"
append flags " --defsym _.tmp=0 --defsym _.xy=0 --defsym _.z=0"
}
proc slurp_options { file } {
+ # If options_regsub(foo) is set to {a b}, then the contents of a
+ # "#foo:" line will have regsub -all applied to replace a with b.
+ global options_regsub
+
if [catch { set f [open $file r] } x] {
#perror "couldn't open `$file': $x"
perror "$x"
# Whitespace here is space-tab.
if [regexp $pat $line xxx opt_name opt_val] {
# match!
+ if [info exists options_regsub($opt_name)] {
+ set subst $options_regsub($opt_name)
+ regsub -all -- [lindex $subst 0] $opt_val [lindex $subst 1] \
+ opt_val
+ }
lappend opt_array [list $opt_name $opt_val]
} else {
break
# objdump: Apply objdump options on result.
# nm: Apply nm options on result.
# readelf: Apply readelf options on result.
-# ld: Don't apply anything on result. Compare output during linking with
+# ld: Don't apply anything on result. Compare output during linking with
# the file containing regexps (which is the second arg, not the third).
# Note that this *must* be the first action if it is to be used at all;
# in all other cases, any output from the linker during linking is
set comp_output [prune_warnings [file_contents "ld.stderr"]]
remote_file host delete "ld.stderr"
remote_file build delete "ld.stderr"
-
+
if {[info exists old_lc_all]} {
set env(LC_ALL) $old_lc_all
} else {
send_log "Running: $binfile > $binfile.out\n"
verbose "Running: $binfile > $binfile.out"
catch "exec $binfile > $binfile.out" exec_output
-
+
if ![string match "" $exec_output] then {
send_log "$exec_output\n"
verbose "$exec_output" 1
proc check_gc_sections_available { } {
global gc_sections_available_saved
global ld
-
+
if {![info exists gc_sections_available_saved]} {
# Some targets don't support gc-sections despite whatever's
# advertised by ld's options.
&& ![istarget lm32-*-*]
&& ![istarget m32c-*-*]
&& ![istarget m32r-*-*]
+ && ![istarget m6811-*-*]
+ && ![istarget m6812-*-*]
&& ![istarget m68hc1*-*-*]
&& ![istarget mcore*-*-*]
&& ![istarget mep-*-*]