diff options
Diffstat (limited to 'binutils-2.21/ld/testsuite/config/default.exp')
-rw-r--r-- | binutils-2.21/ld/testsuite/config/default.exp | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/binutils-2.21/ld/testsuite/config/default.exp b/binutils-2.21/ld/testsuite/config/default.exp new file mode 100644 index 0000000..043a885 --- /dev/null +++ b/binutils-2.21/ld/testsuite/config/default.exp @@ -0,0 +1,278 @@ +# Basic expect script for LD Regression Tests +# Copyright 1993, 1994, 1995, 1997, 1998, 1999, 2001, 2003, 2005, 2007, 2009 +# Free Software Foundation, Inc. +# +# This file is part of the GNU Binutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# Written by Jeffrey Wheat (cassidy@cygnus.com) +# + +if ![info exists ld] then { + set ld [findfile $base_dir/ld-new $base_dir/ld-new [transform ld]] +} + +if ![info exists as] then { + set as [findfile $base_dir/../gas/as-new $base_dir/../gas/as-new [transform as]] +} + +if ![info exists nm] then { + set nm [findfile $base_dir/../binutils/nm-new $base_dir/../binutils/nm-new [transform nm]] +} + +if ![info exists objdump] then { + set objdump [findfile $base_dir/../binutils/objdump] +} + +if ![info exists objcopy] then { + set objcopy [findfile $base_dir/../binutils/objcopy] +} + +if ![info exists ar] then { + set ar [findfile $base_dir/../binutils/ar] +} + +if ![info exists strip] then { + set strip [findfile $base_dir/../binutils/strip-new $base_dir/../binutils/strip-new [transform strip]] +} + +remote_exec host "mkdir -p tmpdir" + +# Make a symlink from tmpdir/as to the assembler in the build tree, so +# that we can use a -B option to gcc to force it to use the newly +# built assembler. +if {![file isdirectory tmpdir/gas]} then { + catch "exec mkdir tmpdir/gas" status + catch "exec ln -s ../../../gas/as-new tmpdir/gas/as" status +} +set gcc_gas_flag "-B[pwd]/tmpdir/gas/" + +# Make a symlink from tmpdir/ld to the linker in the build tree, so +# that we can use a -B option to gcc to force it to use the newly +# built linker. +if {![file isdirectory tmpdir/ld]} then { + catch "exec mkdir tmpdir/ld" status + catch "exec ln -s ../../ld-new tmpdir/ld/ld" status +} +set gcc_ld_flag "-B[pwd]/tmpdir/ld/" + +# load the linker path +if {[file exists tmpdir/libpath.exp]} { + load_lib tmpdir/libpath.exp + + foreach dir $libpath { + set gcc_ld_flag "$gcc_ld_flag -L$dir" + } +} + +# The "make check" target in the Makefile passes in +# "CC=$(CC_FOR_TARGET)". But, if the user invokes runtest directly +# (as when testing an installed linker), these flags may not be set. +if {![info exists CC]} { + set CC [find_gcc] +} +if {![info exists CFLAGS]} { + set CFLAGS "-g -O2" +} +if {![info exists CXX]} { + set CXX [find_g++] +} +if {![info exists CXXFLAGS]} { + set CXXFLAGS "" +} + +# The mips64-*-linux-gnu compiler defaults to the N32 ABI after +# installed, but to the O32 ABI in the build tree, because of some +# specs-file hacks. Make sure we use an ABI that is compatible with +# the one we expect. +if {[istarget mips64*-*-linux*] && + (![board_info [target_info name] exists multilib_flags] || + ![string match "*-mabi" [board_info [target_info name] multilib_flags]]) + } { + append gcc_gas_flag " -mabi=n32" +} + +# load the utility procedures +load_lib ld-lib.exp + +proc get_link_files {varname} { + global $varname + global target_triplet + global srcdir + global CC + if ![info exists $varname] { + #configure.host returns variables that can be substituted into + #makefile rules, with embedded shell variable expansions. + #make wants $$shell_var, we want $shell_var ... + set cmd "host='$target_triplet' && . $srcdir/../configure.host && sed -e 's,\\\$\\\$,\$,g' <<EOF\n\$$varname\nEOF" + set status [catch "exec sh -c [list $cmd]" result] + if $status { error "Error getting native link files: $result" } + set cmd "CC='$CC' && eval echo \"$result\"" + set status [catch "exec sh -c [list $cmd]" result] + if $status { error "Error getting native link files: $result" } + set $varname $result + send_log "$varname = $result\n" + } +} + +proc get_target_emul {} { + global target_triplet + global srcdir + set status [catch "exec sh -c \"targ='$target_triplet' && . $srcdir/../configure.tgt && echo \\\$targ_emul\"" result] + if $status { error "Error getting emulation name: $result" } + return $result +} + +if [isnative] { + foreach x {HOSTING_CRT0 HOSTING_LIBS} { + get_link_files $x + } +} else { + foreach x {HOSTING_CRT0 HOSTING_LIBS} { set $x "" } +} +if ![info exists HOSTING_EMU] { set HOSTING_EMU "-m [get_target_emul]" } + +# +# ld_version -- extract and print the version number of ld compiler (GCC) +# +proc ld_version {} { + global ld + default_ld_version $ld +} + +# +# ld_exit -- just a stub for ld +# +proc ld_exit {} { +} + +# +# ld_start +# relink the linker +# +proc ld_start { ld target } { + # +} + +# +# ld_relocate +# link an object using relocation +# +proc ld_relocate { ld target objects } { + default_ld_relocate $ld $target $objects +} + +# +# ld_link +# link a program using ld +# +proc ld_link { ld target objects } { + default_ld_link $ld $target $objects +} + +# +# ld_simple_link +# link a program using ld, without including any libraries +# +proc ld_simple_link { ld target objects } { + default_ld_simple_link $ld $target $objects +} + +# +# ld_compile +# compile an object using $cc +# +proc ld_compile { cc source object } { + default_ld_compile $cc $source $object +} + +# +# ld_assemble +# assemble a file +# +proc ld_assemble { as source object } { + default_ld_assemble $as $source $object +} + +# +# ld_nm +# run nm on a file +# +proc ld_nm { nm nmflags object } { + default_ld_nm $nm $nmflags $object +} + +# +# ld_exec +# execute ithe target +# +proc ld_exec { target output } { + default_ld_exec $target $output +} + +# From gas-defs.exp, to support run_dump_test. +if ![info exists AS] then { + set AS $as +} + +if ![info exists GASP] then { + set GASP [findfile $base_dir/../gas/gasp-new $base_dir/../gas/gasp-new [transform gasp]] +} + +if ![info exists ASFLAGS] then { + set ASFLAGS "" +} + +if ![info exists OBJDUMP] then { + set OBJDUMP $objdump +} + +if ![info exists OBJDUMPFLAGS] then { + set OBJDUMPFLAGS {} +} + +if ![info exists NM] then { + set NM $nm +} + +if ![info exists NMFLAGS] then { + set NMFLAGS {} +} + +if ![info exists OBJCOPY] then { + set OBJCOPY $objcopy +} + +if ![info exists OBJCOPYFLAGS] then { + set OBJCOPYFLAGS {} +} + +if ![info exists READELF] then { + set READELF [findfile $base_dir/../binutils/readelf] +} + +if ![info exists READELFFLAGS] then { + set READELFFLAGS {} +} + +if ![info exists LD] then { + set LD [findfile $base_dir/ld-new ./ld-new [transform ld]] +} + +if ![info exists LDFLAGS] then { + set LDFLAGS {} +} |