aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/ChangeLog14
-rw-r--r--ld/testsuite/ld-scripts/crossref.exp2
-rw-r--r--ld/testsuite/ld-undefined/undefined.exp8
-rw-r--r--ld/testsuite/lib/ld-lib.exp36
4 files changed, 50 insertions, 10 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 53c9dc6..a59d280 100644
--- a/ld/ChangeLog
+++ b/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.
diff --git a/ld/testsuite/ld-scripts/crossref.exp b/ld/testsuite/ld-scripts/crossref.exp
index b52d92c..b39f741 100644
--- a/ld/testsuite/ld-scripts/crossref.exp
+++ b/ld/testsuite/ld-scripts/crossref.exp
@@ -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
diff --git a/ld/testsuite/ld-undefined/undefined.exp b/ld/testsuite/ld-undefined/undefined.exp
index e49b90c..05df511 100644
--- a/ld/testsuite/ld-undefined/undefined.exp
+++ b/ld/testsuite/ld-undefined/undefined.exp
@@ -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"
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
index 11185d8..6c0c7f1 100644
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -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"