[PATCHv2 0/3] disassembler syntax highlighting in objdump (via libopcodes)

Andrew Burgess aburgess@redhat.com
Mon Mar 21 14:33:49 GMT 2022


This series is a serious attempt at what I discussed here:

  https://sourceware.org/pipermail/binutils/2021-December/118806.html

This series changes libopcodes so that this disassemblers can supply
styling information with every piece of disassembly output, e.g. is
this a register?  an address?  a mnemonic?  etc.

Users of the disassembler can then choose to make use of this
information to add styling to the disassembler output.

And that is what I do for objdump in this series.  The styling is off
by default, but can be turned on with a new command line flag:
    --disassembler-color=off|color|extended-color

I've updated GDB enough to keep it building and running after this
change, though at this point GDB doesn't make use of the new styling
information, that will come later.

All feedback would be welcome.

Changes since v1:

  - After discussion with Jan I've now added additional disassembler
    styles (see enum disassembler_style in includes/dis-asm.h),

  - I've updated the riscv-dis.c and i386-dis.c to make use of these
    new styles, and fixed a few places (mostly in riscv-dis.c) where
    the wrong style was being used,

  - I've gone through my changes in riscv-dis.c and i386-dis.c and
    made sure that lines are all under 80 characters,

  - I've extended binutils/objdump.c to handle the new styles.  For
    now I've not given these styles separate colours, but used
    existing grouping similar styles together, e.g. anything that is a
    number (immediate, address, address offset) all gets the same
    colour.

  - The crash that Nelson reported from riscv-dis.c is fixed.

Andrew Burgess (3):
  objdump/opcodes: add syntax highlighting to disassembler output
  opcodes/riscv: implement style support in the disassembler
  opcodes/i386: partially implement disassembler style support

 binutils/NEWS              |   4 +
 binutils/doc/binutils.texi |  11 ++
 binutils/objdump.c         | 249 ++++++++++++++++++++++++++++++++-----
 gdb/disasm.c               |  34 ++++-
 gdb/disasm.h               |   7 ++
 include/dis-asm.h          |  88 ++++++++++++-
 opcodes/dis-init.c         |   5 +-
 opcodes/disassemble.c      |  23 +++-
 opcodes/i386-dis.c         |  63 ++++++----
 opcodes/riscv-dis.c        | 193 +++++++++++++++++-----------
 10 files changed, 541 insertions(+), 136 deletions(-)

-- 
2.25.4



More information about the Binutils mailing list