2001-02-28 Matt Hiller <hiller@redhat.com>
* testsuite/ld-scripts/crossref.exp: Initialize flags to [big_or_little_endian]. * testsuite/ld-undefined/undefined.exp: Ditto, and include $flags in ld invocations. * testsuite/lib/ld-lib.exp (big_or_little_endian): Recognize -EB, -eb, EL and el. (is_endian_output_format): New function. (default_ld_link): Set flags to [big_or_little_endian] only if ld is being invoked such that the output format being used is of known endianness. (default_ld_simple_link): Ditto.
This commit is contained in:
parent
d1b17ab0f3
commit
1688b748f1
14
ld/ChangeLog
14
ld/ChangeLog
@ -1,3 +1,17 @@
|
||||
2001-02-28 Matt Hiller <hiller@redhat.com>
|
||||
|
||||
* testsuite/ld-scripts/crossref.exp: Initialize flags to
|
||||
[big_or_little_endian].
|
||||
* testsuite/ld-undefined/undefined.exp: Ditto, and include $flags
|
||||
in ld invocations.
|
||||
* testsuite/lib/ld-lib.exp (big_or_little_endian): Recognize -EB,
|
||||
-eb, EL and el.
|
||||
(is_endian_output_format): New function.
|
||||
(default_ld_link): Set flags to [big_or_little_endian] only if ld
|
||||
is being invoked such that the output format being used is of
|
||||
known endianness.
|
||||
(default_ld_simple_link): Ditto.
|
||||
|
||||
2001-02-27 Alan Modra <alan@linuxcare.com.au>
|
||||
|
||||
* configure.in (BFD_VERSION): New.
|
||||
|
@ -17,7 +17,7 @@ if { ![ld_compile $CC "$srcdir/$subdir/cross1.c" tmpdir/cross1.o] \
|
||||
return
|
||||
}
|
||||
|
||||
set flags ""
|
||||
set flags [big_or_little_endian]
|
||||
|
||||
# The a29k compiled code calls V_SPILL and V_FILL. Since we don't
|
||||
# need to run this code, but we don't have definitions for those
|
||||
|
@ -39,12 +39,14 @@ if ![ld_compile "$CC -g" $srcdir/$subdir/undefined.c tmpdir/undefined.o] {
|
||||
|
||||
catch "exec rm -f tmpdir/undefined" exec_output
|
||||
|
||||
set flags [big_or_little_endian]
|
||||
|
||||
# Using -e start prevents the SunOS linker from trying to build a
|
||||
# shared library.
|
||||
send_log "$ld -e start -o tmpdir/undefined tmpdir/undefined.o\n"
|
||||
verbose "$ld -e start -o tmpdir/undefined tmpdir/undefined.o"
|
||||
send_log "$ld -e start $flags -o tmpdir/undefined tmpdir/undefined.o\n"
|
||||
verbose "$ld -e start $flags -o tmpdir/undefined tmpdir/undefined.o"
|
||||
|
||||
catch "exec $ld -e start -o tmpdir/undefined tmpdir/undefined.o" exec_output
|
||||
catch "exec $ld -e start $flags -o tmpdir/undefined tmpdir/undefined.o" exec_output
|
||||
send_log "$exec_output\n"
|
||||
verbose "$exec_output"
|
||||
|
||||
|
@ -43,6 +43,23 @@ proc default_ld_relocate { ld target objects } {
|
||||
}
|
||||
}
|
||||
|
||||
# Check to see if ld is being invoked with a non-endian output format
|
||||
|
||||
proc is_endian_output_format { object_flags } {
|
||||
|
||||
if {[string match "*-oformat binary*" $object_flags] || \
|
||||
[string match "*-oformat ieee*" $object_flags] || \
|
||||
[string match "*-oformat ihex*" $object_flags] || \
|
||||
[string match "*-oformat netbsd-core*" $object_flags] || \
|
||||
[string match "*-oformat srec*" $object_flags] || \
|
||||
[string match "*-oformat tekhex*" $object_flags] || \
|
||||
[string match "*-oformat trad-core*" $object_flags] } then {
|
||||
return 0
|
||||
} else {
|
||||
return 1
|
||||
}
|
||||
}
|
||||
|
||||
# Look for big-endian or little-endian switches in the multlib
|
||||
# options and translate these into a -EB or -EL switch. Note
|
||||
# we cannot rely upon proc process_multilib_options to do this
|
||||
@ -59,11 +76,11 @@ proc big_or_little_endian {} {
|
||||
|
||||
foreach x $tmp_flags {
|
||||
case $x in {
|
||||
{*big*endian eb EB} {
|
||||
{*big*endian eb EB -eb -EB} {
|
||||
set flags " -EB"
|
||||
return $flags
|
||||
}
|
||||
{*little*endian el EL} {
|
||||
{*little*endian el EL -el -EL} {
|
||||
set flags " -EL"
|
||||
return $flags
|
||||
}
|
||||
@ -94,9 +111,12 @@ proc default_ld_link { ld target objects } {
|
||||
perror "$ld does not exist"
|
||||
return 0
|
||||
}
|
||||
|
||||
set flags [big_or_little_endian]
|
||||
|
||||
|
||||
if [is_endian_output_format $objects] then {
|
||||
set flags [big_or_little_endian]
|
||||
} else {
|
||||
set flags ""
|
||||
}
|
||||
verbose -log "$ld $HOSTING_EMU $flags -o $target $objs $libs"
|
||||
|
||||
catch "exec $ld $HOSTING_EMU $flags -o $target $objs $libs" link_output
|
||||
@ -122,7 +142,11 @@ proc default_ld_simple_link { ld target objects } {
|
||||
return 0
|
||||
}
|
||||
|
||||
set flags [big_or_little_endian]
|
||||
if [is_endian_output_format $objects] then {
|
||||
set flags [big_or_little_endian]
|
||||
} else {
|
||||
set flags ""
|
||||
}
|
||||
|
||||
verbose -log "$ld $flags -o $target $objects"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user