X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Ftestsuite%2Fgas%2Felf%2Felf.exp;h=e65d2cfa10519dfeccd3f1b3cfb890dbeaf88084;hb=c7927a3c0ef1d97faf24f1df31baf419e2d92fa1;hp=d1e5a0a21043b4460cb2bd9c5393691281365aae;hpb=3ccac826a3edc921e1e6c5ded9502781cca509af;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp index d1e5a0a210..e65d2cfa10 100644 --- a/gas/testsuite/gas/elf/elf.exp +++ b/gas/testsuite/gas/elf/elf.exp @@ -15,7 +15,13 @@ proc run_elf_list_test { name suffix opts readelf_opts readelf_pipe } { return } send_log "$READELF $readelf_opts dump.o $readelf_pipe > dump.out\n" - catch "exec $READELF $readelf_opts dump.o $readelf_pipe > dump.out\n" comp_output + set status [gas_host_run "$READELF $readelf_opts dump.o" ">readelf.out"] + if { [lindex $status 0] != 0 || ![string match "" [lindex $status 1]] } then { + send_log "[lindex $status 1]\n" + fail $testname + return + } + catch "exec cat readelf.out $readelf_pipe > dump.out\n" comp_output if ![string match "" $comp_output] then { send_log "$comp_output\n" fail $testname @@ -53,36 +59,67 @@ if { ([istarget "*-*-*elf*"] if {[istarget "score-*-*"]} then { set target_machine -score } - if {[istarget "xtensa-*-*"]} then { + if {[istarget "xtensa*-*-*"]} then { set target_machine -xtensa } + if {[istarget "rx-*-*"]} then { + set target_machine -rx + } if { ([istarget "*arm*-*-*"] || [istarget "xscale*-*-*"]) } { if { ([istarget "*-*-*eabi"] + || [istarget "*-*-linux-*"] || [istarget "*-*-symbianelf"])} then { set target_machine -armeabi } else { set target_machine -armelf } } - run_dump_test "ehopt0" + + # The MN10300 and Xtensa ports disable the assembler's call frame + # optimization because it interfers with link-time relaxation of + # function prologues. + if {![istarget "mn10300-*-*"] + && ![istarget "xtensa*-*-*"] + && ![istarget "am3*-*-*"]} then { + run_dump_test "ehopt0" + } + case $target_triplet in { + { m68k-*-* m68[03]??-*-* } { + run_dump_test "file" { { as "--defsym m68k=1" } } + } + { mmix-*-* } { + run_dump_test "file" { { as "--defsym mmix=1" } } + } + { xtensa*-*-* } { + run_dump_test "file" { { as "--rename-section file.s=file.c" } } + } + default { + run_dump_test "file" + } + } run_dump_test "group0a" run_dump_test "group0b" run_dump_test "group1a" run_dump_test "group1b" case $target_triplet in { { alpha*-*-* } { } + { cr16*-*-* } { } + { crx*-*-* } { } + { h8300-*-* } { } { hppa*-*-* } { } { iq2000*-*-* } { } { mips*-*-* } { } + { mn10200-*-* } { } + { mn10300-*-* } { } { *c54x*-*-* } { } + { rx-*-* } { } default { # The next test can fail if the target does not convert fixups # against ordinary symbols into relocations against section symbols. # This is usually revealed by the error message: # symbol `sym' required but not present - setup_xfail "cr16-*-*" "h8300-*-*" "mn10300-*-*" run_dump_test redef run_dump_test equ-reloc } @@ -94,6 +131,22 @@ if { ([istarget "*-*-*elf*"] run_dump_test "section4" run_elf_list_test "section5" "" "-al" "-SW" "| grep \" \\\\.test\\\[0-9\\\]\"" run_dump_test "struct" - run_dump_test "symver" - run_elf_list_test "type" "" "" "-s" "| grep \"1 \\\[FONT\\\]\"" + run_dump_test "symtab" + run_dump_test "symver" + + # The MSP port sets the ELF header's OSABI field to ELFOSABI_STANDALONE. + # The non-eabi ARM ports sets it to ELFOSABI_ARM. + # So for these targets we cannot include an IFUNC symbol type + # in the symbol type test. + if { [istarget "msp*-*-*"] + || [istarget "arm*-*-*"] + || [istarget "xscale*-*-*"]} then { + run_elf_list_test "type-noifunc" "" "" "-s" "| grep \"1 *\\\[FONTC\\\]\"" + } else { + run_dump_test ifunc-1 + run_elf_list_test "type" "" "" "-s" "| grep \"1 *\\\[FIONTCU\\\]\"" + } + + run_dump_test "section6" + run_dump_test "section7" }