[PATCH 2/2] gdb: Add non-enum disassembler options

Andrew Burgess aburgess@redhat.com
Fri Sep 2 10:00:02 GMT 2022


Tsukasa OI <research_trasio@irq.a4lg.com> writes:

> This is paired with "opcodes: Add non-enum disassembler options".
>
> There is a portable mechanism for disassembler options and used on some
> architectures:
> - ARC
> - Arm
> - MIPS
> - PowerPC
> - RISC-V
> - S/390
>
> However, it only supports following forms:
>
> - [NAME]
> - [NAME]=[ENUM_VALUE]
>
> Valid values for [ENUM_VALUE] must be predefined in
> `disasm_option_arg_t.values'. For instance, for -M cpu=[CPU] in ARC
> architecture, opcodes/arc-dis.c builds valid CPU model list from
> include/elf/arc-cpu.def.
>
> In this commit, it adds following format:
>
> - [NAME]=[ARBITRARY_VALUE] (cannot contain "," though)
>
> This is identified by NULL' value of disasm_option_arg_t.values'
> (normally, this is a non-NULL pointer to a NULL-terminated list).
>
> gdb/ChangeLog:
>
>     * gdb/disasm.c (set_disassembler_options): Add support for
>     non-enum disassembler options.
>     (show_disassembler_options_sfunc): Likewise.
> ---
>  gdb/disasm.c | 4 ++++
>  1 file changed, 4 insertions(+)

The GDB parts are OK.

Thanks,
Andrew

>
> diff --git a/gdb/disasm.c b/gdb/disasm.c
> index db6724757ac..fe4eed2d524 100644
> --- a/gdb/disasm.c
> +++ b/gdb/disasm.c
> @@ -1270,6 +1270,8 @@ set_disassembler_options (const char *prospective_options)
>  	    if (memcmp (opt, valid_options->name[i], len) != 0)
>  	      continue;
>  	    arg = opt + len;
> +	    if (valid_options->arg[i]->values == NULL)
> +	      break;
>  	    for (j = 0; valid_options->arg[i]->values[j] != NULL; j++)
>  	      if (disassembler_options_cmp
>  		    (arg, valid_options->arg[i]->values[j]) == 0)
> @@ -1391,6 +1393,8 @@ The following disassembler options are supported for use with the\n\
>  
>        for (i = 0; valid_args[i].name != NULL; i++)
>  	{
> +	  if (valid_args[i].values == NULL)
> +	    continue;
>  	  gdb_printf (file, _("\n\
>    For the options above, the following values are supported for \"%s\":\n   "),
>  		      valid_args[i].name);
> -- 
> 2.34.1



More information about the Gdb-patches mailing list