From: Yao Qi <qiyaoltc@gmail.com>
To: Pedro Alves <palves@redhat.com>
Cc: Peter Bergner <bergner@vnet.ibm.com>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
Alan Modra <amodra@gmail.com>,
Ulrich Weigand <uweigand@de.ibm.com>,
Eli Zaretskii <eliz@gnu.org>, Nick Clifton <nickc@redhat.com>,
binutils <binutils@sourceware.org>
Subject: Re: [PATCH, updated] Add support for setting disassembler-options in GDB for POWER, ARM and S390
Date: Tue, 14 Feb 2017 17:21:00 -0000 [thread overview]
Message-ID: <CAH=s-PORT5jzW+xsQzNmFLNrpGyLefuBmbZd8SQhujb6t6LtuA@mail.gmail.com> (raw)
In-Reply-To: <72237b44-c785-c22d-5664-a87c28a9678a@redhat.com>
On Mon, Feb 13, 2017 at 4:58 PM, Pedro Alves <palves@redhat.com> wrote:
> On 02/13/2017 03:52 PM, Yao Qi wrote:
>> These options should be modeled as per-architecture data. We need to
>> define a key to access that data dynamically. grep
>> "static struct gdbarch_data *" in *.c.
>
> If I understand the suggestion correctly, that would make all the different
> POWER (etc.) gdbarch instances have their own instance of the option string.
Hi Pedro,
Peter's patch makes each gdbarch instance has its own instance of
option string set by GDB. Peter's patch adds two things in gdbarch,
+# Functions for allowing a target to modify its disassembler options.
+v:char *:disassembler_options:::0:0::0:pstring (gdbarch->disassembler_options)
+v:const disasm_options_t
*:disassembler_options_arch:::0:0::0:host_address_to_string
(gdbarch->disassembler_options_arch->name
The former one is a string, and it is per-gdbarch-instance. The latter is a
function, which provides all valid options for an arch. Different gdbarch
instances for powerpc, for example, have the same valid options, but each
gdbarch instance will have its own setting (set by GDB command).
With Peter's patch applied,
(gdb) set architecture powerpc:403
The target architecture is assumed to be powerpc:403
(gdb) set disassembler-options ppc32
(gdb) show disassembler-options
The current disassembler options are 'ppc32'
The following disassembler options are supported for use with
the 'set disassembler-options <option>[,<option>...]' command:
403, 405, 440, 464, 476, 601, 603, 604, 620, 7400, 7410, 7450, 7455, 750cl
821, 850, 860, a2, altivec, any, booke, booke32, cell, com, e200z4, e300, e500
e500mc, e500mc64, e5500, e6500, e500x2, efs, power4, power5, power6, power7
power8, power9, ppc, ppc32, 32, ppc64, 64, ppc64bridge, ppcps, pwr, pwr2, pwr4
pwr5, pwr5x, pwr6, pwr7, pwr8, pwr9, pwrx, spe, titan, vle, vsx, htm
/* I changed disassembler options to 'ppc32' for one gdbarch */
/* Then, I switch to a different gdbarch */
(gdb) set architecture powerpc:603
The target architecture is assumed to be powerpc:603
(gdb) show disassembler-options
The current disassembler options are ''
The following disassembler options are supported for use with
the 'set disassembler-options <option>[,<option>...]' command:
403, 405, 440, 464, 476, 601, 603, 604, 620, 7400, 7410, 7450, 7455, 750cl
821, 850, 860, a2, altivec, any, booke, booke32, cell, com, e200z4, e300, e500
e500mc, e500mc64, e5500, e6500, e500x2, efs, power4, power5, power6, power7
power8, power9, ppc, ppc32, 32, ppc64, 64, ppc64bridge, ppcps, pwr, pwr2, pwr4
pwr5, pwr5x, pwr6, pwr7, pwr8, pwr9, pwrx, spe, titan, vle, vsx, htm
(gdb) set disassembler-options ppc64
(gdb) show disassembler-options
The current disassembler options are 'ppc64'
The following disassembler options are supported for use with
the 'set disassembler-options <option>[,<option>...]' command:
403, 405, 440, 464, 476, 601, 603, 604, 620, 7400, 7410, 7450, 7455, 750cl
821, 850, 860, a2, altivec, any, booke, booke32, cell, com, e200z4, e300, e500
e500mc, e500mc64, e5500, e6500, e500x2, efs, power4, power5, power6, power7
power8, power9, ppc, ppc32, 32, ppc64, 64, ppc64bridge, ppcps, pwr, pwr2, pwr4
pwr5, pwr5x, pwr6, pwr7, pwr8, pwr9, pwrx, spe, titan, vle, vsx, htm
> I.e., the POWER gdbarch instance determined for the objfile before the program
> is run or GDB connects to a target would have a different set of options than
> the gdbarch instance created based on the POWER-based XML target description
> returned by the (e.g.), remote server, because those are different
> gdbarch object instances. As a result "set disassembler-options" would
> show different options before and after run/connection (and in other
> situations that use different gdbarch objects).
>
> What Alan's implementation achieves instead is that there's only one option
> value string for the whole family of gdbarchs of a given architecture, like
> POWER vs MIPS, vs x86, etc, so that the disassembler options active persist
> across internal uses of all the different gdbarch instances that
> model variants of the same CPU architecture.
>
My suggestion about using "struct gdbarch_data *" doesn't change the
the behaviour.
--
Yao (齐尧)
next prev parent reply other threads:[~2017-02-14 17:21 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-08 21:03 Peter Bergner
2017-02-13 15:53 ` Yao Qi
2017-02-13 16:31 ` Peter Bergner
2017-02-13 16:58 ` Pedro Alves
2017-02-13 17:32 ` Peter Bergner
2017-02-14 17:21 ` Yao Qi [this message]
2017-02-14 17:35 ` Pedro Alves
2017-02-13 17:08 ` Peter Bergner
2017-02-13 18:48 ` Peter Bergner
2017-02-14 20:01 ` Pedro Alves
2017-02-15 23:14 ` Peter Bergner
2017-02-15 23:48 ` Alan Modra
2017-02-16 0:21 ` Pedro Alves
2017-02-16 1:59 ` Peter Bergner
2017-02-16 2:09 ` Pedro Alves
2017-02-13 18:52 ` Peter Bergner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAH=s-PORT5jzW+xsQzNmFLNrpGyLefuBmbZd8SQhujb6t6LtuA@mail.gmail.com' \
--to=qiyaoltc@gmail.com \
--cc=amodra@gmail.com \
--cc=bergner@vnet.ibm.com \
--cc=binutils@sourceware.org \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=nickc@redhat.com \
--cc=palves@redhat.com \
--cc=uweigand@de.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox