set flags ""
- # g++ sometimes generates references to __get_dynamic_handler_chain.
- set flags "$flags --defsym __get_dynamic_handler_chain=0"
- set flags "$flags --defsym ___get_dynamic_handler_chain=0"
-
- # The mn10200 has out of line prologues and epilogues which the
- # comiler uses when compiling the testcase. Define them so that
- # we don't need to bring in libgcc.a
- if [istarget mn10200-*-*] {
- set flags "$flags --defsym ___prologue=0"
- set flags "$flags --defsym ___epilogue_noreturn=0"
- set flags "$flags --defsym ___epilogue_d0=0"
- set flags "$flags --defsym ___epilogue_a0=0"
- }
-
# If the linker script uses SIZEOF_HEADERS, use a -Ttext argument
# to force both the normal link and the S-record link to be put in
# the same place. We don't always use -Ttext because it interacts
set flags "$flags --defsym V_SPILL=0 --defsym V_FILL=0"
}
+ # ARM targets call __gccmain
+ if [istarget arm-*-coff] {
+ set flags "$flags --defsym ___gccmain=0"
+ }
+ if [istarget arm-*-pe] {
+ set flags "$flags --defsym ___gccmain=0"
+ }
+ if [istarget arm-*-elf] {
+ set flags "$flags --defsym ___gccmain=0"
+ }
+
+ # Thumb targets call __gccmain
+ if [istarget thumb-*-coff] {
+ set flags "$flags --defsym ___gccmain=0"
+ }
+ if [istarget thumb-*-pe] {
+ set flags "$flags --defsym ___gccmain=0"
+ }
+ if [istarget thumb-*-*] {
+ set flags "$flags --defsym ___gccmain=0"
+ }
+
# PowerPC EABI code calls __eabi.
if [istarget powerpc*-*-eabi*] {
set flags "$flags --defsym __eabi=0"
}
+ # mn10200 code calls __truncsipsi2_d0_d2.
+ if {[istarget mn10200*-*-*]} then {
+ set flags "$flags --defsym __truncsipsi2_d0_d2=0"
+ }
+
+ # V850 targets need libgcc.a
+ if [istarget v850*-*-elf] {
+ set objs "$objs -L ../gcc -lgcc"
+ }
+
if { ![ld_simple_link $ld tmpdir/sr1 "$flags $objs"] \
|| ![ld_simple_link $ld tmpdir/sr2.sr "$flags -oformat srec $objs"] } {
setup_xfail "hppa*-*-*elf*"
# The S-record linker doesn't do the magic TOC handling that XCOFF
# linkers do.
setup_xfail "*-*-aix*" "*-*-xcoff*"
-setup_xfail "arm-*-coff"
+
+# The S-record linker doesn't build ARM/Thumb stubs.
+setup_xfail "arm-*-coff*"
+setup_xfail "arm-*-pe*"
+setup_xfail "arm-*elf*"
+setup_xfail "thumb-*-coff*"
+setup_xfail "thumb-*-pe*"
+setup_xfail "thumb-*-elf*"
+
+# The S-record linker doesn't build special EABI sections.
+setup_xfail "powerpc*-*-eabi*"
+
+# The S-record linker doesn't include the .got section.
+setup_xfail "powerpc*-*-linux*"
+
+# The S-record linker doesn't include the .{zda} sections.
+setup_xfail "v850*-*-elf"
+
+# The S-record linker doesn't handle Alpha Elf relaxation.
+setup_xfail "alpha*-*-elf*" "alpha*-*-linux-gnu*" "alpha*-*-gnu*"
+setup_xfail "alpha*-*-netbsd*"
run_srec_test $test1 "tmpdir/sr1.o tmpdir/sr2.o"
setup_xfail "i*86-*-aout*"
setup_xfail "mips*-*-irix5*" "mips*-*-irix6*"
setup_xfail "*-*-aix*" "*-*-xcoff*"
-setup_xfail "arm-*-coff"
+setup_xfail "arm-*-coff*"
+setup_xfail "arm-*-pe*"
+setup_xfail "arm-*-elf*"
+setup_xfail "thumb-*-coff*"
+setup_xfail "thumb-*-pe*"
+setup_xfail "thumb-*-elf*"
+setup_xfail "powerpc*-*-eabi*"
+setup_xfail "powerpc*-*-linux*"
+setup_xfail "v850*-*-elf"
+setup_xfail "alpha*-*-elf*" "alpha*-*-linux-gnu*" "alpha*-*-gnu*"
+setup_xfail "alpha*-*-netbsd*"
run_srec_test $test2 "tmpdir/sr3.o"