public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Richard Biener <richard.guenther@gmail.com>
To: Pierre-Marie de Rodat <derodat@adacore.com>
Cc: GCC Patches <gcc-patches@gcc.gnu.org>,
	Eric Botcazou <ebotcazou@adacore.com>
Subject: Re: [PATCH] DWARF: add abstract origin links on lexical blocks DIEs
Date: Fri, 15 Jan 2016 15:53:00 -0000	[thread overview]
Message-ID: <CAFiYyc2Fda-FWzpjAV1GHVfJMVN6JuL-hvPJAQOn3L+wikpziA@mail.gmail.com> (raw)
In-Reply-To: <56990512.7070808@adacore.com>

On Fri, Jan 15, 2016 at 3:41 PM, Pierre-Marie de Rodat
<derodat@adacore.comwrote:
> On 01/13/2016 01:17 PM, Richard Biener wrote:
>>
>> I wonder if you can construct a guality testcase that passes with and
>> fails without
>> the patch?
>
>
> I’ve tried to first look at how guality testcases are written (thanks for
> your answers on IRC, by the way :-)) and then how I could write a testcase
> for my fix. It seems there are two ways: match patterns in the assembly file
> or evaluate an expression in GDB.
>
> I already have the testcase I used during development: it’s written in Ada,
> to build with -O2. The way it checks the fix is to see if GDB manages to put
> a breakpoint on the Child2 symbol before executing the program (it cannot
> before my fix and it can afterwards). Oh, and it requires a fairly recent
> GDB version (7.10 looks good).
>
> I managed to get a similar GNU C99 reproducer (it’s attached): the debugging
> information has the pattern that exhibits the bugfix. Namely: while the
> “parent” function is inlined, the “child” function (which is in a block
> inside “parent”) is not. So GDB relies on the DW_TAG_abstract_origin in the
> inlined block to refer to the abstract block that contains the DIE that
> materializes “child“.
>
> However, it looks like there is no way in GDB to refer to C nested functions
> when they are not in the current scope:
>>
>> $ gcc -g -O2 -std=gnu99 nested_fun.c nested_fun_helpers.c
>> $ gdb -n -q ./a.out
>> (gdb) ptype child
>> No symbol "child" in current context.
>> (gdb) ptype nested_fun.parent.child
>> No symbol "nested_fun" in current context.
>
>
> On the other hand, this works with the Ada testcase:
>>
>> (gdb) ptype nested_fun.parent.child
>> type = (false, true)
>
>
> So I’m not sure what to do next: should I do a fragile testcase based on
> scanning the assembly file? (it could break with an optimizer change) create
> a guality testsuite for Ada?

Sounds like a good excuse to add a guality for Ada (which has unique
needs for dwarf).

Richard.

>> Anyway, the patch looks ok to me but please give others a chance to chime
>> in.
>
>
> Sure. Thank you for reviewing!
>
> --
> Pierre-Marie de Rodat

  reply	other threads:[~2016-01-15 15:53 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-12 17:05 Pierre-Marie de Rodat
2016-01-13 12:17 ` Richard Biener
2016-01-15 14:41   ` Pierre-Marie de Rodat
2016-01-15 15:53     ` Richard Biener [this message]
2016-01-17 20:09       ` Eric Botcazou
2016-01-18  9:36         ` Richard Biener
2016-01-18  9:45           ` Eric Botcazou
2016-01-18  9:47             ` Pierre-Marie de Rodat
2016-01-20  9:47               ` Pierre-Marie de Rodat
2016-04-26  8:00                 ` [PING][PATCH] " Pierre-Marie de Rodat
2016-05-04 14:23                   ` [PING*2][PATCH] " Pierre-Marie de Rodat
2016-05-09 11:02                     ` Richard Biener
2016-05-10  8:04                       ` Pierre-Marie de Rodat

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=CAFiYyc2Fda-FWzpjAV1GHVfJMVN6JuL-hvPJAQOn3L+wikpziA@mail.gmail.com \
    --to=richard.guenther@gmail.com \
    --cc=derodat@adacore.com \
    --cc=ebotcazou@adacore.com \
    --cc=gcc-patches@gcc.gnu.org \
    /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).