[PATCH, RFC] Add support for choosing disassembler cpu in GDB for POWER.

Peter Bergner bergner@vnet.ibm.com
Tue Oct 11 18:49:00 GMT 2016


On 10/10/16 7:08 PM, Pedro Alves wrote:
> A command that works for all architectures, like your original
> "set disassembler-cpu" seemingly would be (ignoring implementation
> details).  Maybe "set disassembler-cpu" could be an alias for
> "set $current_arch disassembler-cpu".  GDB would then only need to store
> a disassemble option string for each possible arch, and the alias would just
> need to map the current arch's cpu to the right option string variable.

It doesn't look like set_disassembler_cpu() is passed the gdbarch, so
is there some global variable that it could use to determine what the
current arch is?  That said, even if I do have it, wouldn't we need
to store the set/show commands in the gdbarch so that they can be
called?



> All the information to build this should be in opcodes, I think.  Even
> for "help show disassembler-cpu", it should be possible for gdb to ask
> opcodes to print a description of each possible option,
> since "objdump --help" does it.  Bonus points for hooking that to
> a completer for "set disassembler-cpu <tab>".  :-)

The objdump --help output comes from opcodes/ppc-dis.c's
print_ppc_disassembler_options(FILE *stream).  I actually tried
to call that from show_disassembler_cpu(), but the "file" pointer
it's passed is of type "struct ui_file *file" which looks to be
a black box, so I'm not sure how I can extract a "FILE *" pointer
out of that.

I don't know how to set up a completer and I don't see one.
Do you know of an example in the code I could look at/copy?



> BTW, AFAICS, objdump's -M isn't really only about "cpu".
> "objdump --help" on an --enable-targets=all build of binutils
> shows -M options that are not cpu options.  "set disassembler-options"
> would probably be a better name for this.

I'm fine going with whatever option name people prefer.  If you want
"disassembler-options" instead of just "disassembler", ok, but shouldn't
ARM be renamed then as well if it uses this mechanism?

Peter





More information about the Binutils mailing list