diff options
-rw-r--r-- | gas/ChangeLog | 9 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/branch.d | 12 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/branch.s | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/i386.exp | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/ilp32/x86-64-branch.d | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-branch.d | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-branch.s | 4 | ||||
-rw-r--r-- | opcodes/ChangeLog | 5 | ||||
-rw-r--r-- | opcodes/i386-dis.c | 13 |
9 files changed, 50 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 9775426..8d07dc9 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,12 @@ +2002-11-29 Borislav Petkov <bp@suse.de> + + * testsuite/gas/i386/branch.d: Add new branch insns test. + * testsuite/gas/i386/branch.s: Likewise. + * testsuite/gas/i386/i386.exp: Insert the new branch test. + * testsuite/gas/i386/x86-64-branch.d: Test for branch hints insns. + * testsuite/gas/i386/x86-64-branch.s: Likewise. + * testsuite/gas/i386/ilp32/x86-64-branch.d: Likewise. + 2020-11-27 Jozef Lawrynowicz <jozef.l@mittosystems.com> * testsuite/gas/elf/elf.exp: Run new tests. diff --git a/gas/testsuite/gas/i386/branch.d b/gas/testsuite/gas/i386/branch.d new file mode 100644 index 0000000..6d25b95 --- /dev/null +++ b/gas/testsuite/gas/i386/branch.d @@ -0,0 +1,12 @@ +#as: -J +#objdump: -dw +#name: i386 branch + +.*: +file format .* + +Disassembly of section .text: + +0+ <.text>: +[ ]*[a-f0-9]+: 3e 74 03[ ]+je,pt +0x[0-9a-f]+ +[ ]*[a-f0-9]+: 2e 74 00[ ]+je,pn +0x[0-9a-f]+ +#pass diff --git a/gas/testsuite/gas/i386/branch.s b/gas/testsuite/gas/i386/branch.s new file mode 100644 index 0000000..968a181 --- /dev/null +++ b/gas/testsuite/gas/i386/branch.s @@ -0,0 +1,4 @@ +.text + jz,pt .Llabel + jz,pn .Llabel +.Llabel: diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index c85ced1..432cf01 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -565,6 +565,7 @@ if [gas_32_check] then { run_dump_test "lfence-ret-c" run_dump_test "lfence-ret-d" run_dump_test "lfence-byte" + run_dump_test "branch" # These tests require support for 8 and 16 bit relocs, # so we only run them for ELF and COFF targets. diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-branch.d b/gas/testsuite/gas/i386/ilp32/x86-64-branch.d index 8be91de..d5f2358 100644 --- a/gas/testsuite/gas/i386/ilp32/x86-64-branch.d +++ b/gas/testsuite/gas/i386/ilp32/x86-64-branch.d @@ -25,6 +25,8 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 66 0f 82 00 00 00 00 data16 jb 0x37 33: R_X86_64_PLT32 foo-0x4 [ ]*[a-f0-9]+: 66 c3 data16 ret * [ ]*[a-f0-9]+: 66 c2 08 00 data16 ret \$0x8 +[ ]*[a-f0-9]+: 3e 74 03[ ]+je,pt +0x[0-9a-f]+ +[ ]*[a-f0-9]+: 2e 74 00[ ]+je,pn +0x[0-9a-f]+ [ ]*[a-f0-9]+: ff d0 call \*%rax [ ]*[a-f0-9]+: ff d0 call \*%rax [ ]*[a-f0-9]+: 66 ff d0 data16 call \*%rax diff --git a/gas/testsuite/gas/i386/x86-64-branch.d b/gas/testsuite/gas/i386/x86-64-branch.d index 2618134..b963f9f 100644 --- a/gas/testsuite/gas/i386/x86-64-branch.d +++ b/gas/testsuite/gas/i386/x86-64-branch.d @@ -24,6 +24,8 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 66 0f 82 00 00 00 00 data16 jb (0x37|37 <.text\+0x37>) [ ]*[a-f0-9]+: 66 c3 data16 ret * [ ]*[a-f0-9]+: 66 c2 08 00 data16 ret \$0x8 +[ ]*[a-f0-9]+: 3e 74 03[ ]+je,pt +0x[0-9a-f]+ +[ ]*[a-f0-9]+: 2e 74 00[ ]+je,pn +0x[0-9a-f]+ [ ]*[a-f0-9]+: ff d0 call \*%rax [ ]*[a-f0-9]+: ff d0 call \*%rax [ ]*[a-f0-9]+: 66 ff d0 data16 call \*%rax diff --git a/gas/testsuite/gas/i386/x86-64-branch.s b/gas/testsuite/gas/i386/x86-64-branch.s index eb40dd4..496e1bb 100644 --- a/gas/testsuite/gas/i386/x86-64-branch.s +++ b/gas/testsuite/gas/i386/x86-64-branch.s @@ -22,6 +22,10 @@ retw retw $8 + jz,pt .Llabel + jz,pn .Llabel +.Llabel: + .intel_syntax noprefix call rax callq rax diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 1e7e40f..02fd2f5 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2020-11-28 Borislav Petkov <bp@suse.de> + + * i386-dis.c (print_insn): Set active_seg_prefix for branch hint insns + to not dump branch hint prefixes 0x2E and 0x3E as unused prefixes. + 2020-11-16 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com> * aarch64-tbl.h (FLAGM): Handle for FLAGM feature. diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 58cf001..a1e47c5 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -10910,10 +10910,19 @@ putop (const char *in_template, int sizeflag) used_prefixes |= prefixes & (PREFIX_CS | PREFIX_DS); *obufp++ = ','; *obufp++ = 'p'; + + /* Set active_seg_prefix even if not set in 64-bit mode + because here it is a valid branch hint. */ if (prefixes & PREFIX_DS) - *obufp++ = 't'; + { + active_seg_prefix = PREFIX_DS; + *obufp++ = 't'; + } else - *obufp++ = 'n'; + { + active_seg_prefix = PREFIX_CS; + *obufp++ = 'n'; + } } break; case 'K': |