diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 2009fc1258..6db2be3262 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2020-06-26 Jan Beulich + + * doc/binutils.texi: Adjust description of x86's -Msuffix. Drop + redundant text from x86 specific part of -M section. + 2020-06-26 Pat Bernardi * readelf.c (display_m68k_gnu_attribute): New function. diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi index 2cf81879df..b93cde05b4 100644 --- a/binutils/doc/binutils.texi +++ b/binutils/doc/binutils.texi @@ -2471,8 +2471,7 @@ option or whether instruction notes should be generated as comments in the disasssembly using @option{-M notes}. For the x86, some of the options duplicate functions of the @option{-m} -switch, but allow finer grained control. Multiple selections from the -following may be specified as a comma separated string. +switch, but allow finer grained control. @table @code @item x86-64 @itemx i386 @@ -2503,8 +2502,10 @@ will be overridden if @code{x86-64}, @code{i386} or @code{i8086} appear later in the option string. @item suffix -When in AT&T mode, instructs the disassembler to print a mnemonic -suffix even when the suffix could be inferred by the operands. +When in AT&T mode and also for a limited set of instructions when in Intel +mode, instructs the disassembler to print a mnemonic suffix even when the +suffix could be inferred by the operands or, for certain instructions, the +execution mode's defaults. @end table For PowerPC, the @option{-M} argument @option{raw} selects diff --git a/gas/ChangeLog b/gas/ChangeLog index f60fde6e7e..3ad1394ddd 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2020-06-26 Jan Beulich + + * testsuite/gas/i386/nop-1-suffix.d: New. + * testsuite/gas/i386/i386.exp: Run new test. + 2020-06-26 Pat Bernardi * config/tc-m68k.c (m68k_elf_gnu_attribute): New function. diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index e567633f44..6bee5fc9d8 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -502,6 +502,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] run_dump_test "align-1b" run_list_test "inval-pseudo" "-al" run_dump_test "nop-1" + run_dump_test "nop-1-suffix" run_dump_test "nop-2" run_dump_test "optimize-1" run_dump_test "optimize-1a" diff --git a/gas/testsuite/gas/i386/nop-1-suffix.d b/gas/testsuite/gas/i386/nop-1-suffix.d new file mode 100644 index 0000000000..f9f09feb11 --- /dev/null +++ b/gas/testsuite/gas/i386/nop-1-suffix.d @@ -0,0 +1,60 @@ +#objdump: -dwMsuffix,i386 +#name: i386 .nops 1 w/ suffix and forced arch +#source: nop-1.s + +.*: +file format .* + + +Disassembly of section .text: + +0+ : + +[a-f0-9]+: 90 nop + +0+1 : + +[a-f0-9]+: 90 nop + +0+2 : + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 90 nop + +0+a : + +[a-f0-9]+: 8d 74 26 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d 74 26 00 leal 0x0\(%esi,%eiz,1\),%esi + +0+12 : + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b6 00 00 00 00 leal 0x0\(%esi\),%esi + +0+26 : + +[a-f0-9]+: eb 1c jmp 44 + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +0+44 : + +[a-f0-9]+: eb 7f jmp c5 + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 8d b4 26 00 00 00 00 leal 0x0\(%esi,%eiz,1\),%esi + +[a-f0-9]+: 90 nop + +0+c5 : + +[a-f0-9]+: 31 c0 xorl %eax,%eax +#pass diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index f36ee55612..dfc94fbfbb 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2020-06-26 Jan Beulich + + * i386-dis.c: (print_insn): Avoid straight assignment to + priv.orig_sizeflag when processing -M sub-options. + 2020-06-25 Jan Beulich * i386-dis.c: Adjust description of J macro. diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 8964832ad2..f57409dd17 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -11851,17 +11851,17 @@ print_insn (bfd_vma pc, disassemble_info *info) else if (CONST_STRNEQ (p, "x86-64")) { address_mode = mode_64bit; - priv.orig_sizeflag = AFLAG | DFLAG; + priv.orig_sizeflag |= AFLAG | DFLAG; } else if (CONST_STRNEQ (p, "i386")) { address_mode = mode_32bit; - priv.orig_sizeflag = AFLAG | DFLAG; + priv.orig_sizeflag |= AFLAG | DFLAG; } else if (CONST_STRNEQ (p, "i8086")) { address_mode = mode_16bit; - priv.orig_sizeflag = 0; + priv.orig_sizeflag &= ~(AFLAG | DFLAG); } else if (CONST_STRNEQ (p, "intel")) {