Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Marc Gauthier <marc@cadence.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	       Joel Brobecker <brobecker@adacore.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
	       Maxim Grigoriev <maxim2405@gmail.com>,
	Woody LaRue <larue@cadence.com>
Subject: Re: [PATCH v2] xtensa: initialize call_abi in xtensa_tdep
Date: Fri, 21 Aug 2015 09:49:00 -0000	[thread overview]
Message-ID: <55D6F42D.2080009@redhat.com> (raw)
In-Reply-To: <SN1PR0701MB185363DCD63A32E87803BEDAC3660@SN1PR0701MB1853.namprd07.prod.outlook.com>

On 08/20/2015 09:30 PM, Marc Gauthier wrote:
> Pedro Alves wrote:
>> On 08/20/2015 02:37 PM, Max Filippov wrote:
>>
>>> Actually it's as simple as unpacking a tarball to the source directory,
>>> and we have it automated in the environments that build toolchains,
>>> like the Buildroot or the crosstool-NG.
>>>
>>> The idea behind this is the following: Xtensa core is configurable, a
>> lot
>>> of its properties may be changed. Nobody even try to test all possible
>>> combinations of configuration options and nobody really cares how many
>>> Xtensa core configurations exist, people that generate Xtensa core
>>> only care about their particular core. When they generate it they get
>>> all the files that need to be changed in the toolchain, they apply them
>>> and they get the toolchain for their particular core.
>>
>> How about making the configuration generator tool output some data
>> file that gdb would source?
> 
> As I understand it, a simple data file is problematic.  For example,
> customers adding custom extensions to an Xtensa processor can describe
> instruction operand encoding and decoding using arbitrary verilog
> expressions.  Although typically simple, there is currently no constraint
> on these expressions, so to fully support this, they get translated into
> C code which GDB and other tools can use to assemble and disassemble
> Xtensa instructions.

Does that mean you're replacing some src/opcodes/ files too, for disassembly?

> So the more natural "data file" to describe a custom processor is a shared
> library or DLL. 

Another option would be some Python API.

> This is what Cadence's Tensilica tools use.  However, in
> the far past, upstreaming this approach was problematic given the various
> projects' aversion to dynamic shared libraries, which aren't supported
> on every host architecture (not all support a dlopen equivalent).
> 

That's not really a problem.  Hosts that can't dlopen just don't
support all features.  From https://sourceware.org/gdb/wiki/Systems,
probably the only one would be MSDOS/djgpp.

E.g., GDB already supports a JIT debug info reader API, which loads a
shared library plugin into GDB.

 https://sourceware.org/gdb/onlinedocs/gdb/Writing-JIT-Debug-Info-Readers.html

Another example, GDB loads a libcc1.so library in order to invoke gcc, in
order to provide the new "compile" set of subcommands.

GCC is also extensible with plugins nowadays.  That's what the libcc1.so
library talks to -- a gcc plugin.

The binutils ld linker has a plugin interface, for loading the LTO plugin.

> Might it be possible now to introduce use of a dynamic shared library?

I think it'd be useful to see a couple representative diffs of pristine
FSF GDB vs a configured GDB, to get a better feel for what needs exposing.

> If that works for GDB, my next question will be about binutils and gcc :-)

Thanks,
Pedro Alves


      reply	other threads:[~2015-08-21  9:49 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-20 12:53 Max Filippov
2015-08-20 13:07 ` Joel Brobecker
2015-08-20 13:14   ` [RFC] " Joel Brobecker
2015-08-20 13:44     ` Max Filippov
2015-08-20 13:37   ` Max Filippov
2015-08-20 14:13     ` Pedro Alves
2015-08-20 20:30       ` Marc Gauthier
2015-08-21  9:49         ` Pedro Alves [this message]

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=55D6F42D.2080009@redhat.com \
    --to=palves@redhat.com \
    --cc=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jcmvbkbc@gmail.com \
    --cc=larue@cadence.com \
    --cc=marc@cadence.com \
    --cc=maxim2405@gmail.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