diff options
author | Jan Beulich <jbeulich@suse.com> | 2019-12-27 09:39:17 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2019-12-27 09:39:17 +0100 |
commit | 6cb0a70ef31ff585f046cb20a30088c0433d84f0 (patch) | |
tree | 7db13f1044a85a4be4154085ec17d3ee31893c79 /gas/testsuite | |
parent | 376cd056100dff2d6fc842aa013d0bbffdef363d (diff) | |
download | gdb-6cb0a70ef31ff585f046cb20a30088c0433d84f0.zip gdb-6cb0a70ef31ff585f046cb20a30088c0433d84f0.tar.gz gdb-6cb0a70ef31ff585f046cb20a30088c0433d84f0.tar.bz2 |
x86-64: correct / adjust prefix emission
First and foremost REX must come last. Next JumpInterSegment branches
can't possibly have a REX prefix, as they're consistently CpuNo64. And
finally make BND prefix handling in output_branch() consistent with that
of other prefixes in the same function, and make its placement among
prefixes consistent with output_jump() (which, oddly enough, still isn't
the supposedly canonical order specified by the *_PREFIX definitions).
Diffstat (limited to 'gas/testsuite')
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-branch-2.d | 10 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-branch-2.s | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-branch-3.d | 13 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-branch-3.s | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-mpx-branch-1.d | 36 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-mpx-branch-1.s | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-mpx-branch-2.d | 26 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-mpx-branch-2.s | 3 |
8 files changed, 45 insertions, 51 deletions
diff --git a/gas/testsuite/gas/i386/x86-64-branch-2.d b/gas/testsuite/gas/i386/x86-64-branch-2.d index 5078daa..196fa8e 100644 --- a/gas/testsuite/gas/i386/x86-64-branch-2.d +++ b/gas/testsuite/gas/i386/x86-64-branch-2.d @@ -6,10 +6,12 @@ Disassembly of section .text: -0+ <bar-0x4>: -[ ]*[a-f0-9]+: 66 e9 00 00 jmpw 4 <bar> 2: R_X86_64_PC16 foo-0x2 +0+ <bar-0xb>: +[ ]*[a-f0-9]+: 66 e9 00 00 jmpw 4 <bar-0x7> 2: R_X86_64_PC16 foo-0x2 +[ ]*[a-f0-9]+: 66 48 e9 00 00 00 00 data16 jmpq b <bar> 7: R_X86_64_PLT32 foo-0x4 -0+4 <bar>: +0+b <bar>: [ ]*[a-f0-9]+: 89 c3 mov %eax,%ebx -[ ]*[a-f0-9]+: 66 e8 00 00 callw a <bar\+0x6> 8: R_X86_64_PC16 foo-0x2 +[ ]*[a-f0-9]+: 66 e8 00 00 callw 11 <bar\+0x6> f: R_X86_64_PC16 foo-0x2 +[ ]*[a-f0-9]+: 66 48 e8 00 00 00 00 data16 callq 18 <bar\+0xd> 14: R_X86_64_PLT32 foo-0x4 #pass diff --git a/gas/testsuite/gas/i386/x86-64-branch-2.s b/gas/testsuite/gas/i386/x86-64-branch-2.s index 16c85a3..3a4911b 100644 --- a/gas/testsuite/gas/i386/x86-64-branch-2.s +++ b/gas/testsuite/gas/i386/x86-64-branch-2.s @@ -1,7 +1,9 @@ .text data16 jmp foo + data16 rex.w jmp foo bar: mov %eax, %ebx data16 call foo + data16 rex.w call foo diff --git a/gas/testsuite/gas/i386/x86-64-branch-3.d b/gas/testsuite/gas/i386/x86-64-branch-3.d index c66647c..7b9e21d 100644 --- a/gas/testsuite/gas/i386/x86-64-branch-3.d +++ b/gas/testsuite/gas/i386/x86-64-branch-3.d @@ -6,11 +6,14 @@ Disassembly of section .text: -0+ <bar-0x6>: -[ ]*[a-f0-9]+: 66 e9 00 00 00 00 data16 jmpq 6 <bar> 2: R_X86_64_PLT32 foo-0x4 +0+ <bar-0xd>: +[ ]*[a-f0-9]+: 66 e9 00 00 00 00 data16 jmpq 6 <bar-0x7> 2: R_X86_64_PLT32 foo-0x4 +[ ]*[a-f0-9]+: 66 48 e9 00 00 00 00 data16 rex\.W jmpq d <bar> 9: R_X86_64_PLT32 foo-0x4 -0+6 <bar>: +0+d <bar>: [ ]*[a-f0-9]+: 89 c3 mov %eax,%ebx -[ ]*[a-f0-9]+: 66 e8 00 00 00 00 data16 callq e <bar\+0x8> a: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: 66 c7 f8 00 00 xbeginw 13 <bar\+0xd> 11: R_X86_64_PC16 foo-0x2 +[ ]*[a-f0-9]+: 66 e8 00 00 00 00 data16 callq 15 <bar\+0x8> 11: R_X86_64_PLT32 foo-0x4 +[ ]*[a-f0-9]+: 66 48 e8 00 00 00 00 data16 rex\.W callq 1c <bar\+0xf> 18: R_X86_64_PLT32 foo-0x4 +[ ]*[a-f0-9]+: 66 c7 f8 00 00 xbeginw 21 <bar\+0x14> 1f: R_X86_64_PC16 foo-0x2 +[ ]*[a-f0-9]+: 66 48 c7 f8 00 00 00 00 data16 xbeginq 29 <bar\+0x1c> 25: R_X86_64_PLT32 foo-0x4 #pass diff --git a/gas/testsuite/gas/i386/x86-64-branch-3.s b/gas/testsuite/gas/i386/x86-64-branch-3.s index 42bdac0..cc16487 100644 --- a/gas/testsuite/gas/i386/x86-64-branch-3.s +++ b/gas/testsuite/gas/i386/x86-64-branch-3.s @@ -1,9 +1,12 @@ .text data16 jmp foo + data16 rex.w jmp foo bar: mov %eax, %ebx data16 call foo + data16 rex.w call foo data16 xbegin foo + data16 rex.w xbegin foo diff --git a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d index 7ee6c6b..03e9675 100644 --- a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d +++ b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d @@ -8,22 +8,24 @@ Disassembly of section .text: -0+ <foo1-0xc>: -[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 6 <foo1-0x6> 2: R_X86_64_PC32 \*ABS\*\+0x10003c -[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmpq c <foo1> 8: R_X86_64_PC32 \*ABS\*\+0x10003c +0+ <foo1-0x1c>: +[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 6 <foo1-0x16> 2: R_X86_64_PC32 \*ABS\*\+0x10003c +[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmpq c <foo1-0x10> 8: R_X86_64_PC32 \*ABS\*\+0x10003c +[ ]*[a-f0-9]+: 66 f2 48 e8 00 00 00 00 data16 bnd callq 14 <foo1-0x8> 10: R_X86_64_PC32 \*ABS\*\+0x10003c +[ ]*[a-f0-9]+: 66 f2 48 e9 00 00 00 00 data16 bnd jmpq 1c <foo1> 18: R_X86_64_PC32 \*ABS\*\+0x10003c -0+c <foo1>: -[ ]*[a-f0-9]+: f2 eb fd bnd jmp c <foo1> -[ ]*[a-f0-9]+: f2 72 fa bnd jb c <foo1> -[ ]*[a-f0-9]+: f2 e8 f4 ff ff ff bnd callq c <foo1> -[ ]*[a-f0-9]+: f2 eb 09 bnd jmp 24 <foo2> -[ ]*[a-f0-9]+: f2 72 06 bnd jb 24 <foo2> -[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 24 <foo2> +0+1c <foo1>: +[ ]*[a-f0-9]+: f2 eb fd bnd jmp 1c <foo1> +[ ]*[a-f0-9]+: f2 72 fa bnd jb 1c <foo1> +[ ]*[a-f0-9]+: f2 e8 f4 ff ff ff bnd callq 1c <foo1> +[ ]*[a-f0-9]+: f2 eb 09 bnd jmp 34 <foo2> +[ ]*[a-f0-9]+: f2 72 06 bnd jb 34 <foo2> +[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 34 <foo2> -0+24 <foo2>: -[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmpq 2a <foo2\+0x6> 26: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 31 <foo2\+0xd> 2d: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 37 <foo2\+0x13> 33: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmpq 3d <foo2\+0x19> 39: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 44 <foo2\+0x20> 40: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 4a <foo2\+0x26> 46: R_X86_64_PLT32 foo-0x4 +0+34 <foo2>: +[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmpq 3a <foo2\+0x6> 36: R_X86_64_PLT32 foo-0x4 +[ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 41 <foo2\+0xd> 3d: R_X86_64_PLT32 foo-0x4 +[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 47 <foo2\+0x13> 43: R_X86_64_PLT32 foo-0x4 +[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmpq 4d <foo2\+0x19> 49: R_X86_64_PLT32 foo-0x4 +[ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 54 <foo2\+0x20> 50: R_X86_64_PLT32 foo-0x4 +[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 5a <foo2\+0x26> 56: R_X86_64_PLT32 foo-0x4 diff --git a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.s b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.s index 3cdb109..16cd019 100644 --- a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.s +++ b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.s @@ -2,6 +2,9 @@ bnd call 0x100040 bnd jmp 0x100040 + bnd data16 rex.w call 0x100040 + bnd data16 rex.w jmp 0x100040 + foo1: bnd jmp foo1 bnd jb foo1 diff --git a/gas/testsuite/gas/i386/x86-64-mpx-branch-2.d b/gas/testsuite/gas/i386/x86-64-mpx-branch-2.d index 96e0009..c61b3af 100644 --- a/gas/testsuite/gas/i386/x86-64-mpx-branch-2.d +++ b/gas/testsuite/gas/i386/x86-64-mpx-branch-2.d @@ -1,29 +1,5 @@ #as: -J -madd-bnd-prefix #objdump: -dwr #name: x86-64 branch with BND prefix +#dump: x86-64-mpx-branch-1.d #notarget: *-*-solaris* - -.*: +file format .* - - -Disassembly of section .text: - -0+ <foo1-0xc>: -[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 6 <foo1-0x6> 2: R_X86_64_PC32 \*ABS\*\+0x10003c -[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmpq c <foo1> 8: R_X86_64_PC32 \*ABS\*\+0x10003c - -0+c <foo1>: -[ ]*[a-f0-9]+: f2 eb fd bnd jmp c <foo1> -[ ]*[a-f0-9]+: f2 72 fa bnd jb c <foo1> -[ ]*[a-f0-9]+: f2 e8 f4 ff ff ff bnd callq c <foo1> -[ ]*[a-f0-9]+: f2 eb 09 bnd jmp 24 <foo2> -[ ]*[a-f0-9]+: f2 72 06 bnd jb 24 <foo2> -[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 24 <foo2> - -0+24 <foo2>: -[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmpq 2a <foo2\+0x6> 26: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 31 <foo2\+0xd> 2d: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 37 <foo2\+0x13> 33: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmpq 3d <foo2\+0x19> 39: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 44 <foo2\+0x20> 40: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 4a <foo2\+0x26> 46: R_X86_64_PLT32 foo-0x4 diff --git a/gas/testsuite/gas/i386/x86-64-mpx-branch-2.s b/gas/testsuite/gas/i386/x86-64-mpx-branch-2.s index 5fe9088..15c53b0 100644 --- a/gas/testsuite/gas/i386/x86-64-mpx-branch-2.s +++ b/gas/testsuite/gas/i386/x86-64-mpx-branch-2.s @@ -2,6 +2,9 @@ call 0x100040 jmp 0x100040 + data16 rex.w call 0x100040 + data16 rex.w jmp 0x100040 + foo1: jmp foo1 jb foo1 |