X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Ftestsuite%2Fgas%2Felf%2Felf.exp;h=abf2030f2ab7887ecba78ec87a8c86b6814f6b2f;hb=d8045f234d8865a7a7bfce71e81fcbeaf4098a7e;hp=475908b162950353c075b4123ef0fad3466741ca;hpb=8d15ae7c1c93a53f42c8056ec08fbb39a9318496;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp index 475908b162..abf2030f2a 100644 --- a/gas/testsuite/gas/elf/elf.exp +++ b/gas/testsuite/gas/elf/elf.exp @@ -2,7 +2,7 @@ # elf tests # -proc run_list_test { name suffix opts readelf_opts readelf_pipe } { +proc run_elf_list_test { name suffix opts readelf_opts readelf_pipe } { global READELF global srcdir subdir set testname "elf $name list" @@ -15,7 +15,13 @@ proc run_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 @@ -50,17 +56,78 @@ if { ([istarget "*-*-*elf*"] if {[istarget m32r*-*-*]} then { set target_machine -m32r } - run_dump_test "ehopt0" + if {[istarget "score-*-*"]} then { + set target_machine -score + } + if {[istarget "xtensa*-*-*"]} then { + set target_machine -xtensa + } + if { ([istarget "*arm*-*-*"] + || [istarget "xscale*-*-*"]) } { + + if { ([istarget "*-*-*eabi"] + || [istarget "*-*-linux-*"] + || [istarget "*-*-symbianelf"])} then { + set target_machine -armeabi + } else { + set target_machine -armelf + } + } + + # 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" + } 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*-*-* } { } + 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 + run_dump_test redef + run_dump_test equ-reloc + } + } run_dump_test "section0" run_dump_test "section1" - run_list_test "section2" "$target_machine" "-al" "-s" "" + run_elf_list_test "section2" "$target_machine" "-al" "-s" "" run_dump_test "section3" run_dump_test "section4" - run_list_test "section5" "" "-al" "-SW" "| grep \" \\\\.test\\\[\\\[:digit:\\\]\\\]\"" - run_dump_test "symver" - run_list_test "type" "" "" "-s" "| grep \"1 \\\[FONT\\\]\"" + run_elf_list_test "section5" "" "-al" "-SW" "| grep \" \\\\.test\\\[0-9\\\]\"" + run_dump_test "struct" + 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_elf_list_test "type" "" "" "-s" "| grep \"1 \\\[FIONTC\\\]\"" + } + + run_dump_test "section6" + run_dump_test "section7" }