arc: Construct disassembler options dynamically
authorShahab Vahedi <shahab@synopsys.com>
Wed, 2 Jun 2021 12:30:16 +0000 (15:30 +0300)
committerClaudiu Zissulescu <claziss@synopsys.com>
Wed, 2 Jun 2021 12:32:58 +0000 (15:32 +0300)
commit8f467114435286e4f78b16fc1f5864acf6488fc0
treef2478dacbe828a020cf9d94a39704363b57d85b3
parentf2d4211150abba189c4fcd2f7cf0290161474631
arc: Construct disassembler options dynamically

The idea of this change is simple: Populate a data structure, namely
"disasm_option_and_arg_t" from "include/dis-asm.h", to encompass the
disassembly options and their possible arguments.

This will make it easier to manage or extend those options by adapting
entries in a data structure, "arc_options".  There will be lesser need
to hard-code the options in the code itself.  Moreover, ARC GDB will
use this population function, "disassembler_options_arc ()", to enable
the "set disassembler-option" for ARC targets.  The gdb change will be
in a separate patch though.

The changes in this patch can be divided into:

1) Introduction of "disassembler_options_arc ()" that will return a
"disasm_option_and_arg_t" structure representing the disassembly
options and their likely arguments.

2) New data type "arc_options_arg_t" and new data "arc_options".
These are the internals for keeping track of options and arguments
entries that can easily be extended.

3) To print the options, the "print_arc_disassembler_options ()" has
been adjusted to use this dynamically built structure instead of having
them hard-coded inside.

To see this in effect, one can look into the output of:
$ ./binutils/objdump --help
  ...
  The following ARC specific disassembler options are...
  ...

include/ChangeLog:

* dis-asm.h (disassembler_options_arc): New prototype.

opcodes/ChangeLog:

* arc-dis.c (arc_option_arg_t): New enumeration.
(arc_options): New variable.
(disassembler_options_arc): New function.
(print_arc_disassembler_options): Reimplement in terms of
"disassembler_options_arc".
include/ChangeLog
include/dis-asm.h
opcodes/ChangeLog
opcodes/arc-dis.c