public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Phil Muldoon <pmuldoon@redhat.com>,
	"Jose E. Marchesi" <jemarch@gnu.org>,
	       gdb <gdb@sourceware.org>
Subject: Re: C injection GDB project
Date: Wed, 11 Feb 2015 13:53:00 -0000	[thread overview]
Message-ID: <54DB5EED.3090201@redhat.com> (raw)
In-Reply-To: <54DB4767.4060006@redhat.com>

On 02/11/2015 12:13 PM, Phil Muldoon wrote:
> On 11/02/15 11:06, Pedro Alves wrote:
>> On 02/11/2015 11:02 AM, Jose E. Marchesi wrote:
>>>
>>>  I would like to work in the C injection GDB project.
> 
> Hi
> 
> I CC'd the GDB mailing list and trimmed some of the post. I hope you
> do not mind. Pedro asked me to reply to you on this interest.
> 
> You've picked an excellent time to show interest! Phase one is
> complete and we are just about starting phase two. What is phase two?
> C++!
> 
> The current status of the project is that the C parts of the injection
> process have been checked into both GCC and GDB. The GCC parts will be
> released in GCC 5. The GDB parts in the next GDB release.
> 
> A brief overview of the mechanics and methods of the project can be
> found here:
> 
> https://sourceware.org/gdb/wiki/GCCCompileAndExecute#preview
> 
> There is also a talk given in the 2014 GNU Cauldron. You can find it
> here:
> 
> https://www.youtube.com/watch?v=YQATnypexbY
> 
> All discussion related to the project should be on gdb@sourceware.org
> and all patches to gdb-patches@sourceware.org
> 
> For historical review, the GDB parts of the project can be found here:
> 
> https://github.com/tromey/gdb/commits/gdbjit/gd
> 
> And the GCC bits here:
> 
> https://github.com/tromey/gcc/tree/submit/compile
> 
> Note both of those branches are now defunct. All the code contained in
> them is checked in to the relevant upstream projects. I provide them
> purely for archaeological purposes.
> 
> The people who work mostly on this project are: me, Jan Kratochvil
> <jan.kratochvil@redhat.com> and Tom Tromey. Tom previously lead the
> effort, but has now moved on to other fun stuff. There have been many
> others who contributed in one way or another, not least of all
> the reviewers. Alas, they are too numerous to list here.
> 
> A TODO (in summary):
> 
> - Write the C++ plug-in for GCC. Re-architect and reuse the C plug-in
>   code wherever possible.
> 
> - Teach GDB to tell GCC about C++ types.
> 
> Those two will take a lot of time. We have not started yet.
> 
> Eventually we want to provide:
> 
> - compile print
> - compile printf
> - compile cond (or some other interface for conditional breakpoints)
> - Maybe a fix-and-continue interface
> - Maybe intelligently design a way GDB can use GCC for parsing
>   expressions in some case.

In addition (or maybe in expansion of that last point):

  - Fully replace GDB's C and C++ parsers by calling into GCC/G++'s
    parsers.  IOW, make "(gdb) print EXPR" (and wherever else an EXPR
    is evaluated) use gcc's frontend to parse EXPR.  That can of course
    be phased in, with e.g. a new "print -inject" switch to force it, and
    a new global setting the user can use to select the mechanism GDB should
    use to evaluate the expression.

  - Related, to fully replace GDB's own built in parsers, we'll need to
    be able to evaluate expressions using GCC's frontends, but without
    injecting code in the inferior and calling it.  Function calls can
    potentially corrupt more an already corrupt inferior, so best
    avoid that by default, and there's also debugging core dumps, which
    obviously can't execute code.  My idea for that would be to make
    the GCC frontend stop compilation at the gimple level, and then
    add a gimple interpreter (gimple == gcc's IR) to the gcc plugin, which
    would callback into GDB whenever it needed to read memory or registers
    out of the inferior.  I'd be thrilled if someone picked up this project!

Thanks,
Pedro Alves

  reply	other threads:[~2015-02-11 13:53 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <877fvopv7x.fsf@gnu.org>
     [not found] ` <54DB37D0.1010108@redhat.com>
2015-02-11 12:13   ` Phil Muldoon
2015-02-11 13:53     ` Pedro Alves [this message]
     [not found]     ` <94F6E835-DD06-4956-BFDF-6B0503CDAE64@gmail.com>
2015-02-11 14:42       ` Phil Muldoon

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=54DB5EED.3090201@redhat.com \
    --to=palves@redhat.com \
    --cc=gdb@sourceware.org \
    --cc=jemarch@gnu.org \
    --cc=pmuldoon@redhat.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).