diff options
Diffstat (limited to 'gas/testsuite')
-rw-r--r-- | gas/testsuite/ChangeLog | 11 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/i386.exp | 7 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/pcrel-elf.d | 52 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/relax-3.d | 28 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/relax-3.s | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/relax-4.d | 32 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-relax-2.d | 24 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-relax-3.d | 33 |
8 files changed, 163 insertions, 25 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index dab5fcf..95b7583 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2015-05-15 H.J. Lu <hongjiu.lu@intel.com> + + * gas/i386/i386.exp: Don't run pcrel for ELF targets. Run + pcrel-elf, relax-4 and x86-64-relax-3 for ELF targets. + * gas/i386/pcrel-elf.d: New file. + * gas/i386/relax-4.d: Likewise. + * gas/i386/x86-64-relax-3.d: Likewise. + * gas/i386/relax-3.d: Pass -mshared to assembler. Updated. + * gas/i386/x86-64-relax-2.d: Likewise. + * gas/i386/relax-3.s: Add test for PLT relocation. + 2015-05-14 Peter Bergner <bergner@vnet.ibm.com> * gas/ppc/power4.d: Add a slbia test. diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index b6f2810..ff648b0 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -352,8 +352,10 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] # but the relocs we currently produce are slightly different # from those produced for ELF/COFF based toolchains. # So for now we ignore PE targets. - run_dump_test "pcrel" run_dump_test "absrel" + if {[istarget "*-*-coff*"]} then { + run_dump_test "pcrel" + } } # ELF specific tests @@ -361,6 +363,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] # PIC is only supported on ELF targets. run_dump_test "intelpic" + run_dump_test "pcrel-elf" run_dump_test "relax" run_dump_test "gotpc" run_dump_test "tlsd" @@ -396,6 +399,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] run_dump_test "note" run_dump_test "relax-3" + run_dump_test "relax-4" if {![istarget "*-*-nacl*"]} then { run_dump_test "iamcu-1" @@ -763,6 +767,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t run_list_test "x86-64-size-inval-1" "-al" run_dump_test "x86-64-relax-2" + run_dump_test "x86-64-relax-3" run_dump_test "x86-64-jump" } diff --git a/gas/testsuite/gas/i386/pcrel-elf.d b/gas/testsuite/gas/i386/pcrel-elf.d new file mode 100644 index 0000000..e4d45c8 --- /dev/null +++ b/gas/testsuite/gas/i386/pcrel-elf.d @@ -0,0 +1,52 @@ +#source: pcrel.s +#as: -mshared +#objdump: -drw +#name: i386 pcrel ELF reloc + +.*: +file format .*i386.* + +Disassembly of section \.text: + +0+ <loc>: +[ ]*[a-f0-9]+: e9 30 12 00 00 jmp 1235 <abs\+0x1> 1: R_386_PC32 \*ABS\* + +0+5 <glob>: +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 6 <glob\+0x1> 6: R_386_PC32 ext +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp b <glob\+0x6> b: R_386_PC32 weak +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 10 <glob\+0xb> 10: R_386_PC32 comm +[ ]*[a-f0-9]+: eb ea jmp 0 <loc> +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 17 <glob\+0x12> 17: R_386_PC32 glob +[ ]*[a-f0-9]+: e9 72 98 00 00 jmp 9892 <abs2\+0x1c> 1c: R_386_PC32 \*ABS\* +[ ]*[a-f0-9]+: e9 db 00 00 00 jmp 100 <loc2> +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 26 <glob\+0x21> 26: R_386_PC32 glob2 +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 2b <glob\+0x26> 2b: R_386_PC32 .data +[ ]*[a-f0-9]+: e9 00 00 00 00 jmp 34 <glob\+0x2f> 30: R_386_PC32 .data +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 35 <glob\+0x30> 35: R_386_PC32 \*ABS\* +[ ]*[a-f0-9]+: e9 c8 ed ff ff jmp ffffee06 <abs2\+0xffff5590> 3a: R_386_PC32 ext +[ ]*[a-f0-9]+: e9 c8 ed ff ff jmp ffffee0b <abs2\+0xffff5595> 3f: R_386_PC32 weak +[ ]*[a-f0-9]+: e9 c8 ed ff ff jmp ffffee10 <abs2\+0xffff559a> 44: R_386_PC32 comm +[ ]*[a-f0-9]+: e9 7f ed ff ff jmp ffffedcc <abs2\+0xffff5556> +[ ]*[a-f0-9]+: e9 c8 ed ff ff jmp ffffee1a <abs2\+0xffff55a4> 4e: R_386_PC32 glob +[ ]*[a-f0-9]+: e9 3e 86 00 00 jmp 8695 <abs\+0x7461> 53: R_386_PC32 \*ABS\* +[ ]*[a-f0-9]+: e9 70 ee ff ff jmp ffffeecc <abs2\+0xffff5656> +[ ]*[a-f0-9]+: e9 c8 ed ff ff jmp ffffee29 <abs2\+0xffff55b3> 5d: R_386_PC32 glob2 +[ ]*[a-f0-9]+: e9 c8 ed ff ff jmp ffffee2e <abs2\+0xffff55b8> 62: R_386_PC32 .data +[ ]*[a-f0-9]+: e9 cc ed ff ff jmp ffffee37 <abs2\+0xffff55c1> 67: R_386_PC32 .data +[ ]*[a-f0-9]+: e9 ba 79 ff ff jmp ffff7a2a <abs2\+0xfffee1b4> 6c: R_386_PC32 \*ABS\* +[ ]*[a-f0-9]+: e9 86 67 ff ff jmp ffff67fb <abs2\+0xfffecf85> 71: R_386_PC32 ext +[ ]*[a-f0-9]+: e9 86 67 ff ff jmp ffff6800 <abs2\+0xfffecf8a> 76: R_386_PC32 weak +[ ]*[a-f0-9]+: e9 86 67 ff ff jmp ffff6805 <abs2\+0xfffecf8f> 7b: R_386_PC32 comm +[ ]*[a-f0-9]+: e9 06 67 ff ff jmp ffff678a <abs2\+0xfffecf14> +[ ]*[a-f0-9]+: e9 06 67 ff ff jmp ffff678f <abs2\+0xfffecf19> +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 8a <glob\+0x85> 8a: R_386_PC32 \*ABS\* +[ ]*[a-f0-9]+: e9 f7 67 ff ff jmp ffff688a <abs2\+0xfffed014> +[ ]*[a-f0-9]+: e9 f7 67 ff ff jmp ffff688f <abs2\+0xfffed019> +[ ]*[a-f0-9]+: e9 86 67 ff ff jmp ffff6823 <abs2\+0xfffecfad> 99: R_386_PC32 .data +[ ]*[a-f0-9]+: e9 8a 67 ff ff jmp ffff682c <abs2\+0xfffecfb6> 9e: R_386_PC32 .data +[ ]*[a-f0-9]+: e9 fc 00 00 00 jmp 1a3 <glob2\+0x9e> a3: R_386_PC32 \*ABS\* +[ ]*[a-f0-9]+: e9 01 00 00 00 jmp ad <glob\+0xa8> a8: R_386_PC32 \*ABS\* +[ ]*[a-f0-9]+: e9 01 ff ff ff jmp ffffffb2 <abs2\+0xffff673c> ad: R_386_PC32 \*ABS\* +[ ]*[a-f0-9]+: e9 01 01 00 00 jmp 1b7 <glob2\+0xb2> b2: R_386_PC32 \*ABS\* +[ ]*[a-f0-9]+: e9 01 00 00 00 jmp bc <glob\+0xb7> b7: R_386_PC32 \*ABS\* + ... +#pass diff --git a/gas/testsuite/gas/i386/relax-3.d b/gas/testsuite/gas/i386/relax-3.d index 8aa94e9..4610553 100644 --- a/gas/testsuite/gas/i386/relax-3.d +++ b/gas/testsuite/gas/i386/relax-3.d @@ -1,3 +1,4 @@ +#as: -mshared #objdump: -dwr .*: +file format .* @@ -5,26 +6,27 @@ Disassembly of section .text: 0+ <foo>: -[ ]*[a-f0-9]+: eb 1f jmp 21 <local> -[ ]*[a-f0-9]+: eb 19 jmp 1d <hidden_def> -[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 5 <foo\+0x5> 5: (R_386_PC)?(DISP)?32 global_def -[ ]*[a-f0-9]+: e9 fc ff ff ff jmp a <foo\+0xa> a: (R_386_PC)?(DISP)?32 weak_def -[ ]*[a-f0-9]+: e9 fc ff ff ff jmp f <foo\+0xf> f: (R_386_PC)?(DISP)?32 weak_hidden_undef -[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 14 <foo\+0x14> 14: (R_386_PC)?(DISP)?32 weak_hidden_def -[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 19 <foo\+0x19> 19: (R_386_PC)?(DISP)?32 hidden_undef - -0+1d <hidden_def>: +[ ]*[a-f0-9]+: eb 24 jmp 26 <local> +[ ]*[a-f0-9]+: eb 1e jmp 22 <hidden_def> +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 5 <foo\+0x5> 5: R_386_PC32 global_def +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp a <foo\+0xa> a: R_386_PLT32 global_def +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp f <foo\+0xf> f: R_386_PC32 weak_def +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 14 <foo\+0x14> 14: R_386_PC32 weak_hidden_undef +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 19 <foo\+0x19> 19: R_386_PC32 weak_hidden_def +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 1e <foo\+0x1e> 1e: R_386_PC32 hidden_undef + +0+22 <hidden_def>: [ ]*[a-f0-9]+: c3 ret -0+1e <weak_hidden_def>: +0+23 <weak_hidden_def>: [ ]*[a-f0-9]+: c3 ret -0+1f <global_def>: +0+24 <global_def>: [ ]*[a-f0-9]+: c3 ret -0+20 <weak_def>: +0+25 <weak_def>: [ ]*[a-f0-9]+: c3 ret -0+21 <local>: +0+26 <local>: [ ]*[a-f0-9]+: c3 ret #pass diff --git a/gas/testsuite/gas/i386/relax-3.s b/gas/testsuite/gas/i386/relax-3.s index ab52185..48ea917 100644 --- a/gas/testsuite/gas/i386/relax-3.s +++ b/gas/testsuite/gas/i386/relax-3.s @@ -4,6 +4,7 @@ foo: jmp local jmp hidden_def jmp global_def + jmp global_def@PLT jmp weak_def jmp weak_hidden_undef jmp weak_hidden_def diff --git a/gas/testsuite/gas/i386/relax-4.d b/gas/testsuite/gas/i386/relax-4.d new file mode 100644 index 0000000..2039251 --- /dev/null +++ b/gas/testsuite/gas/i386/relax-4.d @@ -0,0 +1,32 @@ +#source: relax-3.s +#objdump: -dwr + +.*: +file format .* + +Disassembly of section .text: + +0+ <foo>: +[ ]*[a-f0-9]+: eb 21 jmp 23 <local> +[ ]*[a-f0-9]+: eb 1b jmp 1f <hidden_def> +[ ]*[a-f0-9]+: eb 1b jmp 21 <global_def> +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 7 <foo\+0x7> 7: R_386_PLT32 global_def +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp c <foo\+0xc> c: R_386_PC32 weak_def +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 11 <foo\+0x11> 11: R_386_PC32 weak_hidden_undef +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 16 <foo\+0x16> 16: R_386_PC32 weak_hidden_def +[ ]*[a-f0-9]+: e9 fc ff ff ff jmp 1b <foo\+0x1b> 1b: R_386_PC32 hidden_undef + +0+1f <hidden_def>: +[ ]*[a-f0-9]+: c3 ret + +0+20 <weak_hidden_def>: +[ ]*[a-f0-9]+: c3 ret + +0+21 <global_def>: +[ ]*[a-f0-9]+: c3 ret + +0+22 <weak_def>: +[ ]*[a-f0-9]+: c3 ret + +0+23 <local>: +[ ]*[a-f0-9]+: c3 ret +#pass diff --git a/gas/testsuite/gas/i386/x86-64-relax-2.d b/gas/testsuite/gas/i386/x86-64-relax-2.d index 7b0bd56..c124102 100644 --- a/gas/testsuite/gas/i386/x86-64-relax-2.d +++ b/gas/testsuite/gas/i386/x86-64-relax-2.d @@ -1,4 +1,5 @@ #source: relax-3.s +#as: -mshared #objdump: -dwr .*: +file format .* @@ -7,26 +8,27 @@ Disassembly of section .text: 0+ <foo>: -[ ]*[a-f0-9]+: eb 1f jmp 21 <local> -[ ]*[a-f0-9]+: eb 19 jmp 1d <hidden_def> +[ ]*[a-f0-9]+: eb 24 jmp 26 <local> +[ ]*[a-f0-9]+: eb 1e jmp 22 <hidden_def> [ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 9 <foo\+0x9> 5: R_X86_64_PC32 global_def-0x4 -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq e <foo\+0xe> a: R_X86_64_PC32 weak_def-0x4 -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 13 <foo\+0x13> f: R_X86_64_PC32 weak_hidden_undef-0x4 -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 18 <foo\+0x18> 14: R_X86_64_PC32 weak_hidden_def-0x4 -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 1d <hidden_def> 19: R_X86_64_PC32 hidden_undef-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq e <foo\+0xe> a: R_X86_64_PLT32 global_def-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 13 <foo\+0x13> f: R_X86_64_PC32 weak_def-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 18 <foo\+0x18> 14: R_X86_64_PC32 weak_hidden_undef-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 1d <foo\+0x1d> 19: R_X86_64_PC32 weak_hidden_def-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 22 <hidden_def> 1e: R_X86_64_PC32 hidden_undef-0x4 -0+1d <hidden_def>: +0+22 <hidden_def>: [ ]*[a-f0-9]+: c3 retq -0+1e <weak_hidden_def>: +0+23 <weak_hidden_def>: [ ]*[a-f0-9]+: c3 retq -0+1f <global_def>: +0+24 <global_def>: [ ]*[a-f0-9]+: c3 retq -0+20 <weak_def>: +0+25 <weak_def>: [ ]*[a-f0-9]+: c3 retq -0+21 <local>: +0+26 <local>: [ ]*[a-f0-9]+: c3 retq #pass diff --git a/gas/testsuite/gas/i386/x86-64-relax-3.d b/gas/testsuite/gas/i386/x86-64-relax-3.d new file mode 100644 index 0000000..98fd28d --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-relax-3.d @@ -0,0 +1,33 @@ +#source: relax-3.s +#objdump: -dwr + +.*: +file format .* + + +Disassembly of section .text: + +0+ <foo>: +[ ]*[a-f0-9]+: eb 21 jmp 23 <local> +[ ]*[a-f0-9]+: eb 1b jmp 1f <hidden_def> +[ ]*[a-f0-9]+: eb 1b jmp 21 <global_def> +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq b <foo\+0xb> 7: R_X86_64_PLT32 global_def-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 10 <foo\+0x10> c: R_X86_64_PC32 weak_def-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 15 <foo\+0x15> 11: R_X86_64_PC32 weak_hidden_undef-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 1a <foo\+0x1a> 16: R_X86_64_PC32 weak_hidden_def-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 1f <hidden_def> 1b: R_X86_64_PC32 hidden_undef-0x4 + +0+1f <hidden_def>: +[ ]*[a-f0-9]+: c3 retq + +0+20 <weak_hidden_def>: +[ ]*[a-f0-9]+: c3 retq + +0+21 <global_def>: +[ ]*[a-f0-9]+: c3 retq + +0+22 <weak_def>: +[ ]*[a-f0-9]+: c3 retq + +0+23 <local>: +[ ]*[a-f0-9]+: c3 retq +#pass |