Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Martin Galvan <martin.galvan@tallertechnologies.com>
To: Pedro Alves <palves@redhat.com>
Cc: gdb-patches@sourceware.org, Doug Evans <dje@google.com>,
		Eli Zaretskii <eliz@gnu.org>,
	Ulrich Weigand <uweigand@de.ibm.com>,
		Daniel Gutson <daniel.gutson@tallertechnologies.com>
Subject: Re: [PING][RFC][PATCH v2] Python API: add gdb.stack_may_be_invalid
Date: Fri, 07 Nov 2014 17:18:00 -0000	[thread overview]
Message-ID: <CAOKbPbZaG0MBhD2yqJw-29JvEJqFHTVtpvMVV-Oh9E64SKNF3A@mail.gmail.com> (raw)
In-Reply-To: <545CFCCA.1070304@redhat.com>

On Fri, Nov 7, 2014 at 2:09 PM, Pedro Alves <palves@redhat.com> wrote:
> On 11/07/2014 01:32 PM, Martin Galvan wrote:
>> 2) The behavior of handle_step_into_function and setting breakpoints
>> is inconsistent for optimized code, at least in ARM. If you step into
>> a function in a program compiled with gcc -O1, you'll see the PC ends
>> up one instruction after the set of instructions that place the
>> arguments passed as registers in the registers they'll be used in. If
>> you do "break myFunction", however, the breakpoint will correctly be
>> placed at the very first instruction. Both handle_step.. and setting
>> breakpoints have the same effect on -O0 code.
>
> We should really fix this.  I can't imagine we do this on purpose.

Indeed we should. I'll gladly fix this myself once we're done with this patch.

>> If we look at how "break myFunction" works, we'll see that we end up
>> calling find_function_start_sal to determine at which PC we have to
>> place our breakpoint. Therefore, that's the function we should be
>> calling when checking whether the stack frame will be valid at a
>> prologue, as it also accounts for optimizations.
>
> We expose functions and sals as python objects.
> Shouldn't we instead consider exposing find_function_start_sal
> in the function object?  Or maybe symbol_to_sal in the Symbol object?
> I can well imagine these being useful to other use cases.

We could do so, but for this use case we'd still need a way to check
if the stack has been destroyed by e.g. an epilogue.

If we want to make the API as primitive as possible, we could again
expose two functions instead of one (as in my previous patch).

-- 

Martín Galván

Software Engineer

Taller Technologies Argentina

San Lorenzo 47, 3rd Floor, Office 5

Córdoba, Argentina

Phone: 54 351 4217888 / +54 351 4218211


  reply	other threads:[~2014-11-07 17:18 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-07 13:32 Martin Galvan
2014-11-07 17:09 ` Pedro Alves
2014-11-07 17:18   ` Martin Galvan [this message]
2014-11-07 17:27 ` Ulrich Weigand
2014-11-07 17:37   ` Martin Galvan
2014-11-12 15:55     ` Martin Galvan
2014-11-12 17:06       ` Doug Evans
2014-11-12 17:20         ` Pedro Alves
2014-11-12 17:26           ` Martin Galvan
2014-11-12 17:32           ` Doug Evans
2014-11-12 17:24         ` Martin Galvan

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=CAOKbPbZaG0MBhD2yqJw-29JvEJqFHTVtpvMVV-Oh9E64SKNF3A@mail.gmail.com \
    --to=martin.galvan@tallertechnologies.com \
    --cc=daniel.gutson@tallertechnologies.com \
    --cc=dje@google.com \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    --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