From: Philippe Waroquiers <philippe.waroquiers@skynet.be>
To: Joel Brobecker <brobecker@adacore.com>
Cc: Pedro Alves <palves@redhat.com>,
Jan Kratochvil <jan.kratochvil@redhat.com>,
gdb-patches@sourceware.org
Subject: Re: [patch] [i386] Put hlt at the ON_STACK breakpoint [Re: GDB 7.4.91 available for testing]
Date: Wed, 25 Jul 2012 21:46:00 -0000 [thread overview]
Message-ID: <1343252775.2240.51.camel@soleil> (raw)
In-Reply-To: <20120725212653.GC2767@adacore.com>
On Wed, 2012-07-25 at 14:26 -0700, Joel Brobecker wrote:
> > The translated block is then continued <<< This is the critical info !!!
>
> I am having trouble understanding why the translated block would
> be continued in the case of an inferior function call, since
> the code is not to be executed (thanks to resetting the PC to its
> original value prior to the inferior function call when reaching
> the Z0 breakpoint we inserted). But...
The "continued" explanation above is only for normal breakpoints.
The "infcall breakpoints" are effectively *not* continued, thanks
to GDB changing the program counter. This is what allows the
kludgy Valgrind patch to work.
>
> > So, if it is easy to change GDB to insert 0xcc (for x86 and amd84)
> > and the equivalent breakpoint instr for mips32, then that avoids
> > the kludgy patch in Valgrind, which is for sure fragile.
>
> ... if I still understand correctly, as long as we write a valid
> instruction at the point where we place the infcall breakpoint,
> we should be fine, right? Jan selected the hlt instruction, but
> we could go with the breakpoint trap instruction as well (0xcc),
> which I think should be simpler to generalize in the future.
> It should not matter which instruction is chosen as long as it
> fits the available space, since that instruction will never be
> executed (thanks to the Z0 packet introducing an official breakpoint
> there).
A valid instruction is not enough. We need a valid instruction
that will cause Valgrind to terminate block translation.
The breakpoint trap instruction is ok for that.
(0xcc for x86 and amd64, 0x0005000d for mips32).
Philippe
next prev parent reply other threads:[~2012-07-25 21:46 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20120718163413.GA17548@adacore.com>
[not found] ` <1342739016.2220.32.camel@soleil>
[not found] ` <20120720071158.GA7053@host2.jankratochvil.net>
[not found] ` <1342817409.2149.41.camel@soleil>
[not found] ` <20120722173053.GA22036@host2.jankratochvil.net>
[not found] ` <1342983655.2301.55.camel@soleil>
2012-07-23 7:22 ` Jan Kratochvil
2012-07-23 16:00 ` Joel Brobecker
2012-07-23 16:36 ` Jan Kratochvil
2012-07-23 20:07 ` Philippe Waroquiers
2012-07-23 20:16 ` Jan Kratochvil
2012-07-23 20:37 ` Philippe Waroquiers
2012-07-25 14:49 ` Joel Brobecker
2012-07-25 20:04 ` Philippe Waroquiers
2012-07-25 20:11 ` Jan Kratochvil
2012-07-25 20:39 ` Philippe Waroquiers
2012-07-25 14:59 ` Pedro Alves
2012-07-25 20:24 ` Philippe Waroquiers
2012-07-25 21:27 ` Joel Brobecker
2012-07-25 21:46 ` Philippe Waroquiers [this message]
2012-07-25 22:39 ` Joel Brobecker
2012-07-26 21:24 ` [patchv2] Write bpt at the ON_STACK bpt address Jan Kratochvil
2012-07-26 21:50 ` Philippe Waroquiers
2012-07-27 18:47 ` Jan Kratochvil
2012-07-28 7:28 ` Eli Zaretskii
2012-07-28 7:42 ` Jan Kratochvil
2012-07-31 7:37 ` [commit+7.5] " Jan Kratochvil
2012-08-01 9:08 ` [commit#2+7.5] testsuite: valgrind-infcall.exp UNSUPPORTED update [Re: [commit+7.5] [patchv2] Write bpt at the ON_STACK bpt address] Jan Kratochvil
2012-08-02 22:49 ` [commit+7.5] [patchv2] Write bpt at the ON_STACK bpt address Edjunior Barbosa Machado
2012-08-02 23:09 ` Sergio Durigan Junior
2012-08-03 0:15 ` Edjunior Barbosa Machado
2012-08-03 11:23 ` Jan Kratochvil
2012-08-03 12:09 ` Edjunior Barbosa Machado
2012-08-03 1:00 ` Pedro Alves
2012-08-03 1:48 ` Sergio Durigan Junior
2012-08-03 2:30 ` Edjunior Barbosa Machado
2012-08-03 21:45 ` Philippe Waroquiers
2012-08-03 14:23 ` Tom Tromey
2012-08-03 14:31 ` Jan Kratochvil
2012-08-03 15:02 ` Edjunior Barbosa Machado
2012-08-03 15:08 ` Jan Kratochvil
2012-08-03 16:43 ` Edjunior Barbosa Machado
2012-08-03 16:46 ` Jan Kratochvil
2012-08-03 18:00 ` Edjunior Barbosa Machado
2012-08-03 20:23 ` Jan Kratochvil
2012-08-03 21:46 ` Edjunior Barbosa Machado
2012-08-06 18:40 ` Tom Tromey
2012-07-31 7:40 ` [commit] valgrind-db-attach.exp: Do not run in remote mode [Re: [patchv2] Write bpt at the ON_STACK bpt address] Jan Kratochvil
2012-07-26 23:14 ` [patchv2] Write bpt at the ON_STACK bpt address Maciej W. Rozycki
2012-07-27 16:02 ` Jan Kratochvil
2012-07-28 0:10 ` Maciej W. Rozycki
2012-07-28 6:06 ` Jan Kratochvil
2012-07-30 18:09 ` Maciej W. Rozycki
2012-07-26 23:15 ` Philippe Waroquiers
2012-07-27 16:03 ` Jan Kratochvil
2012-07-27 15:21 ` Pedro Alves
2012-07-26 21:56 ` [patch] [i386] Put hlt at the ON_STACK breakpoint [Re: GDB 7.4.91 available for testing] Philippe Waroquiers
2012-07-26 22:41 ` Philippe Waroquiers
2012-07-26 5:13 ` Jan Kratochvil
2012-07-26 12:48 ` Pedro Alves
2012-07-26 22:21 ` Philippe Waroquiers
2012-07-27 14:59 ` Pedro Alves
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=1343252775.2240.51.camel@soleil \
--to=philippe.waroquiers@skynet.be \
--cc=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=jan.kratochvil@redhat.com \
--cc=palves@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