1 # Basic expect script
for LD Regression Tests
2 # Copyright
1993, 1994, 1995, 1997, 1998, 1999
3 # Free Software Foundation
, Inc.
5 # This file is free software
; you can redistribute it and
/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation
; either version
2 of the License
, or
8 #
(at your option
) any later version.
10 # This
program is distributed in the hope that it will be useful
,
11 # but WITHOUT
ANY WARRANTY
; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License
for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this
program; if not
, write to the Free Software
17 # Foundation
, Inc.
, 59 Temple Place
- Suite
330, Boston
, MA
02111-1307, USA.
19 # Written by Jeffrey Wheat
(cassidy@cygnus.com
)
22 if ![info exists ld] then {
23 set ld [findfile $base_dir
/ld-new $base_dir
/ld-new
[transform
ld]]
26 if ![info exists as
] then {
27 set as
[findfile $base_dir
/..
/gas
/as
-new $base_dir
/..
/gas
/as
-new
[transform as
]]
30 if ![info exists nm
] then {
31 set nm
[findfile $base_dir
/..
/binutils
/nm
-new $base_dir
/..
/binutils
/nm
-new
[transform nm
]]
34 if ![info exists objdump
] then {
35 set objdump
[findfile $base_dir
/..
/binutils
/objdump
]
38 if ![info exists objcopy
] then {
39 set objcopy
[findfile $base_dir
/..
/binutils
/objcopy
]
42 if ![info exists ar
] then {
43 set ar
[findfile $base_dir
/..
/binutils
/ar
]
46 if ![info exists strip] then {
47 set strip [findfile $base_dir
/..
/binutils
/strip-new $base_dir
/..
/binutils
/strip-new
[transform
strip]]
50 if {![file isdirectory tmpdir
]} then {
51 catch
"exec mkdir tmpdir" status
54 # Make a symlink from tmpdir
/as to the assembler in the build tree
, so
55 # that we can use a
-B option to gcc to force it to use the newly
57 if {![file isdirectory tmpdir
/gas
]} then {
58 catch
"exec mkdir tmpdir/gas" status
59 catch
"exec ln -s ../../../gas/as-new tmpdir/gas/as" status
61 set gcc_gas_flag
"-B[pwd]/tmpdir/gas/"
63 # Make a symlink from tmpdir
/ld to the linker in the build tree
, so
64 # that we can use a
-B option to gcc to force it to use the newly
66 if {![file isdirectory tmpdir
/ld]} then {
67 catch
"exec mkdir tmpdir/ld" status
68 catch
"exec ln -s ../../ld-new tmpdir/ld/ld" status
70 set gcc_ld_flag
"-B[pwd]/tmpdir/ld/"
72 #
load the linker path
73 load_lib tmpdir
/libpath.exp
75 foreach
dir $libpath
{
76 set gcc_ld_flag
"$gcc_ld_flag -L$dir"
79 # The mips64
-*-linux
-gnu compiler defaults to the N32 ABI after
80 # installed
, but to the O32 ABI in the build tree
, because of some
81 # specs
-file hacks. Make sure we use an ABI that is compatible with
83 if {[istarget mips64
*-*-linux
*] &&
84 (![board_info
[target_info
name] exists multilib_flags
] ||
85 ![string match
"*-mabi" [board_info [target_info name] multilib_flags]])
87 append gcc_gas_flag
" -mabi=n32"
90 #
load the utility procedures
93 proc get_link_files
{varname
} {
98 if ![info exists $varname
] {
99 set status [catch
"exec sh -c \"host='$target_triplet' && CC='$CC' && . $srcdir/../configure.host && eval echo \\$$varname\"" result]
100 if $
status { error
"Error getting native link files: $result" }
105 proc get_target_emul
{} {
106 global target_triplet
108 set status [catch
"exec sh -c \"targ='$target_triplet' && . $srcdir/../configure.tgt && echo \\\$targ_emul\"" result]
109 if $
status { error
"Error getting emulation name: $result" }
114 foreach x
{HOSTING_CRT0 HOSTING_LIBS
} {
118 foreach x
{HOSTING_CRT0 HOSTING_LIBS
} { set $x
"" }
120 if ![info exists HOSTING_EMU
] { set HOSTING_EMU
"-m [get_target_emul]" }
123 # ld_version
-- extract and print the version number of
ld compiler
(GCC
)
127 default_ld_version $
ld
131 # ld_exit
-- just a stub
for ld
140 proc ld_start
{ ld target
} {
146 # link an object using relocation
148 proc ld_relocate
{ ld target objects
} {
149 default_ld_relocate $
ld $target $objects
154 # link a
program using
ld
156 proc ld_link
{ ld target objects
} {
157 default_ld_link $
ld $target $objects
162 # link a
program using
ld, without including
any libraries
164 proc ld_simple_link
{ ld target objects
} {
165 default_ld_simple_link $
ld $target $objects
170 #
compile an object using $cc
172 proc ld_compile
{ cc source object
} {
173 default_ld_compile $cc $source $object
180 proc ld_assemble
{ as source object
} {
181 default_ld_assemble $as $source $object
188 proc ld_nm
{ nm nmflags object
} {
189 default_ld_nm $nm $nmflags $object
194 #
execute ithe target
196 proc ld_exec
{ target output
} {
197 default_ld_exec $target $output
200 # From gas
-defs.exp
, to support run_dump_test.
201 if ![info exists AS
] then {
205 if ![info exists GASP
] then {
206 set GASP
[findfile $base_dir
/..
/gas
/gasp
-new $base_dir
/..
/gas
/gasp
-new
[transform gasp
]]
209 if ![info exists ASFLAGS
] then {
213 if ![info exists OBJDUMP
] then {
217 if ![info exists OBJDUMPFLAGS
] then {
221 if ![info exists NM
] then {
225 if ![info exists NMFLAGS
] then {
229 if ![info exists OBJCOPY
] then {
233 if ![info exists OBJCOPYFLAGS
] then {
237 if ![info exists READELF
] then {
238 set READELF
[findfile $base_dir
/..
/binutils
/readelf
]
241 if ![info exists READELFFLAGS
] then {
245 if ![info exists LD] then {
246 set LD [findfile $base_dir
/ld-new .
/ld-new
[transform
ld]]
249 if ![info exists LDFLAGS
] then {