[PATCHv2] opcodes/x86: fix minor missed styling case
Cui, Lili
lili.cui@intel.com
Fri Jul 26 02:09:23 GMT 2024
> From: Andrew Burgess <aburgess@redhat.com>
> Sent: Thursday, July 25, 2024 5:00 PM
> To: H.J. Lu <hjl.tools@gmail.com>; Jiang, Haochen <haochen.jiang@intel.com>
> Cc: Cui, Lili <lili.cui@intel.com>; Beulich, Jan <JBeulich@suse.com>; Binutils
> <binutils@sourceware.org>
> Subject: Re: [PATCHv2] opcodes/x86: fix minor missed styling case
>
> "H.J. Lu" <hjl.tools@gmail.com> writes:
>
> > On Thu, Jul 25, 2024, 10:12 AM Jiang, Haochen
> > <haochen.jiang@intel.com>
> > wrote:
> >
> >> > -----Original Message-----
> >> > From: Cui, Lili <lili.cui@intel.com>
> >> > Sent: Thursday, July 25, 2024 9:53 AM
> >> > To: Andrew Burgess <aburgess@redhat.com>; Beulich, Jan <
> >> JBeulich@suse.com>
> >> > Cc: H.J. Lu <hjl.tools@gmail.com>; Jiang, Haochen <
> >> haochen.jiang@intel.com>;
> >> > binutils@sourceware.org
> >> > Subject: RE: [PATCHv2] opcodes/x86: fix minor missed styling case
> >> >
> >> >
> >> > > > On 24.07.2024 04:31, Cui, Lili wrote:
> >> > > >>>> I noticed that the x86 instruction:
> >> > > >>>>
> >> > > >>>> sar $0x1,%rsi
> >> > > >>>>
> >> > > >>>> would fail to style the '$0x1' as an immediate. This commit
> >> > > >>>> fixes that
> >> > > case.
> >> > > >>>>
> >> > > >>
> >> > > >> I'm afraid it is not a bug, it is to distinguish between the
> >> > > >> two formats
> >> > > below.
> >> > > >>
> >> > > >> sar r/m8, 1
> >> > > >> sar r/m8, imm8
> >> > > >
> >> > > > It is a bug, but it also is a bug to change 1 to 0x1, as that
> >> > > > way said distinction goes away. (I also don't immediately see
> >> > > > how the code change alone would pass the testsuite; I'm pretty
> >> > > > sure we have expectations which would have required adjustment,
> >> > > > which would have made more obvious that the change wants doing
> >> > > > differently.)
> >> > >
> >> > > You are correct, I got sloppy, and I apologise.
> >> > >
> >> > > Thanks to everyone who pointed out the mistake.
> >> > >
> >> > > Here's an update, _fully_ tested patch.
> >> > >
> >> > > Thanks,
> >> > > Andrew
> >> > >
> >> > > ---
> >> > >
> >> > > commit ffe8ab67ab81ae24105433145ca6ee40c3fb92e2
> >> > > Author: Andrew Burgess <aburgess@redhat.com>
> >> > > Date: Tue Jul 23 17:10:22 2024 +0100
> >> > >
> >> > > opcodes/x86: fix minor missed styling case
> >> > >
> >> > > I noticed that the x86 instruction:
> >> > >
> >> > > sar $1,%rsi
> >> > >
> >> > > would fail to style the '$0x1' as an immediate. This commit fixes
> >> > > that case.
> >> > >
> >> > > diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index
> >> > > bc141f31770..59ec771369a 100644
> >> > > --- a/opcodes/i386-dis.c
> >> > > +++ b/opcodes/i386-dis.c
> >> > > @@ -12415,9 +12415,9 @@ OP_I (instr_info *ins, int bytemode, int
> >> sizeflag)
> >> > > break;
> >> > > case const_1_mode:
> >> > > if (ins->intel_syntax)
> >> > > - oappend (ins, "1");
> >> > > + oappend_with_style (ins, "1", dis_style_immediate);
> >> > > else
> >> > > - oappend (ins, "$1");
> >> > > + oappend_with_style (ins, "$1", dis_style_immediate);
> >> > > return true;
> >> > > default:
> >> > > oappend (ins, INTERNAL_DISASSEMBLER_ERROR);
> >> >
> >> > I am a little confused, how does this patch fix this case in the
> >> comment, the
> >> > output is not changed before and after the patch.
> >>
> >> Confused +1. It seems Changelog and the current output doesn't match
> >> or I misunderstood something.
> >>
> >
> > I think you will see the different output only when style is enabled.
>
> Indeed.
>
> I spotted this bug via GDB which styles disassembler output by default.
> Here's how you can see the change using just gas/objdump:
>
> $ cat sar.s
> .text
> sar $1, %rsi
>
> $ as -o sar.o sar.s
> $ objdump -d --disassembler-color=on sar.o
>
> sar.o: file format elf64-x86-64
>
>
> Disassembly of section .text:
>
> 0000000000000000 <.text>:
> 0: 48 d1 fe sar $1,%rsi
>
> Before the patch the '$1' will be styled as text (i.e. default terminal text
> colour). After the patch the '$1' will be styled as an immediate.
>
> Unfortunately there's (currently) no mechanism to adjust the disassembler
> colours used by objdump, so the colours don't work well on all terminals.
> GDB allows all the colours to be adjusted so you can set things up to work
> well based on your terminal colours.
>
> I did write a patch to allow colour adjustment in objdump but it got rejected. I
> need to come up with a different approach. It is on my todo list...
>
Oh, I see, thank you all for the detailed answers.
Lili.
More information about the Binutils
mailing list