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

Peter Bergner bergner@vnet.ibm.com
Fri Oct 28 14:53:00 GMT 2016


On 10/28/16 9:30 AM, Pedro Alves wrote:
> On 10/28/2016 03:24 PM, Peter Bergner wrote:
>> On 10/28/16 9:10 AM, Pedro Alves wrote:
>>> Maybe not.  Where are the per-arch settings stored?
>>
>> They're stored in the gdbarch...
>
> You mean, as a new string member of gdbarch?  That sounds
> problematic, since you can have multiple different gdbarch
> instances for the same architecture live at the same time.
>
> BTC, I'm talking about where does the FOO
> in "set disassembler-options FOO" end up stored.

The way the code is now, I create a static var in _initialize_disasm
to hold it:

disasm.c:
+void
+_initialize_disasm (void)
+{
+  static char *prospective_options = NULL;


Only after we have validated FOO is ok, I copy it to the gdbarch
in set_disassembler_options:

disasm.c:
+static void
+set_disassembler_options (struct gdbarch *gdbarch, char *args,
+                         int from_tty, struct cmd_list_element *c)
+{
+  char *options = *(char **)c->var;

<validate FOO and if valid...>

+  free (gdbarch_disassembler_options (gdbarch));
+  set_gdbarch_disassembler_options (gdbarch, xstrdup (options));


I didn't realize we could have multiple gdbarchs for the same
arch live at the same time.  Do you have a suggestion on how
to fix this?  Maybe each arch will have its own *-tdep.c global
var to hold it and maybe store a pointer to that in the gdbarch?


Peter




More information about the Binutils mailing list