1 # Basic expect script
for LD Regression Tests
2 # Copyright
1993, 1994, 1995, 1997, 1998, 1999, 2001, 2003, 2007
3 # Free Software Foundation
, Inc.
5 # This file is part of the GNU Binutils.
7 # This file is free software
; you can redistribute it and
/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation
; either version
3 of the License
, or
10 #
(at your option
) any later version.
12 # This
program is distributed in the hope that it will be useful
,
13 # but WITHOUT
ANY WARRANTY
; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License
for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this
program; if not
, write to the Free Software
19 # Foundation
, Inc.
, 51 Franklin Street
- Fifth Floor
, Boston
,
22 # Written by Jeffrey Wheat
(cassidy@cygnus.com
)
25 if ![info exists ld] then {
26 set ld [findfile $base_dir
/ld-new $base_dir
/ld-new
[transform
ld]]
29 if ![info exists as
] then {
30 set as
[findfile $base_dir
/..
/gas
/as
-new $base_dir
/..
/gas
/as
-new
[transform as
]]
33 if ![info exists nm
] then {
34 set nm
[findfile $base_dir
/..
/binutils
/nm
-new $base_dir
/..
/binutils
/nm
-new
[transform nm
]]
37 if ![info exists objdump
] then {
38 set objdump
[findfile $base_dir
/..
/binutils
/objdump
]
41 if ![info exists objcopy
] then {
42 set objcopy
[findfile $base_dir
/..
/binutils
/objcopy
]
45 if ![info exists ar
] then {
46 set ar
[findfile $base_dir
/..
/binutils
/ar
]
49 if ![info exists strip] then {
50 set strip [findfile $base_dir
/..
/binutils
/strip-new $base_dir
/..
/binutils
/strip-new
[transform
strip]]
53 if {![file isdirectory tmpdir
]} then {
54 catch
"exec mkdir tmpdir" status
57 # Make a symlink from tmpdir
/as to the assembler in the build tree
, so
58 # that we can use a
-B option to gcc to force it to use the newly
60 if {![file isdirectory tmpdir
/gas
]} then {
61 catch
"exec mkdir tmpdir/gas" status
62 catch
"exec ln -s ../../../gas/as-new tmpdir/gas/as" status
64 set gcc_gas_flag
"-B[pwd]/tmpdir/gas/"
66 # Make a symlink from tmpdir
/ld to the linker in the build tree
, so
67 # that we can use a
-B option to gcc to force it to use the newly
69 if {![file isdirectory tmpdir
/ld]} then {
70 catch
"exec mkdir tmpdir/ld" status
71 catch
"exec ln -s ../../ld-new tmpdir/ld/ld" status
73 set gcc_ld_flag
"-B[pwd]/tmpdir/ld/"
75 #
load the linker path
76 if {[file
exists tmpdir
/libpath.exp
]} {
77 load_lib tmpdir
/libpath.exp
79 foreach
dir $libpath
{
80 set gcc_ld_flag
"$gcc_ld_flag -L$dir"
84 # The
"make check" target in the Makefile passes in
85 #
"CC=$(CC_FOR_TARGET)". But, if the user invokes runtest directly
86 #
(as when testing an installed linker
), these flags may not be
set.
87 if {![info exists CC
]} {
90 if {![info exists CFLAGS
]} {
93 if {![info exists CXX
]} {
96 if {![info exists CXXFLAGS
]} {
100 # The mips64
-*-linux
-gnu compiler defaults to the N32 ABI after
101 # installed
, but to the O32 ABI in the build tree
, because of some
102 # specs
-file hacks. Make sure we use an ABI that is compatible with
104 if {[istarget mips64
*-*-linux
*] &&
105 (![board_info
[target_info
name] exists multilib_flags
] ||
106 ![string match
"*-mabi" [board_info [target_info name] multilib_flags]])
108 append gcc_gas_flag
" -mabi=n32"
111 #
load the utility procedures
114 proc get_link_files
{varname
} {
116 global target_triplet
119 if ![info exists $varname
] {
120 set status [catch
"exec sh -c \"host='$target_triplet' && CC='$CC' && . $srcdir/../configure.host && eval echo \\$$varname\"" result]
121 if $
status { error
"Error getting native link files: $result" }
126 proc get_target_emul
{} {
127 global target_triplet
129 set status [catch
"exec sh -c \"targ='$target_triplet' && . $srcdir/../configure.tgt && echo \\\$targ_emul\"" result]
130 if $
status { error
"Error getting emulation name: $result" }
135 foreach x
{HOSTING_CRT0 HOSTING_LIBS
} {
139 foreach x
{HOSTING_CRT0 HOSTING_LIBS
} { set $x
"" }
141 if ![info exists HOSTING_EMU
] { set HOSTING_EMU
"-m [get_target_emul]" }
144 # ld_version
-- extract and print the version number of
ld compiler
(GCC
)
148 default_ld_version $
ld
152 # ld_exit
-- just a stub
for ld
161 proc ld_start
{ ld target
} {
167 # link an object using relocation
169 proc ld_relocate
{ ld target objects
} {
170 default_ld_relocate $
ld $target $objects
175 # link a
program using
ld
177 proc ld_link
{ ld target objects
} {
178 default_ld_link $
ld $target $objects
183 # link a
program using
ld, without including
any libraries
185 proc ld_simple_link
{ ld target objects
} {
186 default_ld_simple_link $
ld $target $objects
191 #
compile an object using $cc
193 proc ld_compile
{ cc source object
} {
194 default_ld_compile $cc $source $object
201 proc ld_assemble
{ as source object
} {
202 default_ld_assemble $as $source $object
209 proc ld_nm
{ nm nmflags object
} {
210 default_ld_nm $nm $nmflags $object
215 #
execute ithe target
217 proc ld_exec
{ target output
} {
218 default_ld_exec $target $output
221 # From gas
-defs.exp
, to support run_dump_test.
222 if ![info exists AS
] then {
226 if ![info exists GASP
] then {
227 set GASP
[findfile $base_dir
/..
/gas
/gasp
-new $base_dir
/..
/gas
/gasp
-new
[transform gasp
]]
230 if ![info exists ASFLAGS
] then {
234 if ![info exists OBJDUMP
] then {
238 if ![info exists OBJDUMPFLAGS
] then {
242 if ![info exists NM
] then {
246 if ![info exists NMFLAGS
] then {
250 if ![info exists OBJCOPY
] then {
254 if ![info exists OBJCOPYFLAGS
] then {
258 if ![info exists READELF
] then {
259 set READELF
[findfile $base_dir
/..
/binutils
/readelf
]
262 if ![info exists READELFFLAGS
] then {
266 if ![info exists LD] then {
267 set LD [findfile $base_dir
/ld-new .
/ld-new
[transform
ld]]
270 if ![info exists LDFLAGS
] then {