From: Antoine Tremblay <antoine.tremblay@ericsson.com>
To: Yao Qi <qiyaoltc@gmail.com>
Cc: Antoine Tremblay <antoine.tremblay@ericsson.com>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: [PATCH 1/2] This patch fixes GDBServer's run control for single stepping
Date: Fri, 27 Jan 2017 18:24:00 -0000 [thread overview]
Message-ID: <wwokr33o5pkb.fsf@ericsson.com> (raw)
In-Reply-To: <CAH=s-PP-i3v_Fr=QeWt9BQeJzjCHtW79nGYpJ9hF-Bb=OBo89Q@mail.gmail.com>
Yao Qi writes:
> On Fri, Jan 27, 2017 at 4:06 PM, Antoine Tremblay
> <antoine.tremblay@ericsson.com> wrote:
>>> GDB/GDBserver has to emulate the instruction on how does it affect the
>>> flag, and only insert the breakpoint on the "true" branch. Since the
>>> target instruction will be definitely executed, we can safely use
>>> 16-bit breakpoint instruction.
>>
>> Ouch, reading the kernel thread it looks like this emulation would be
>> complex to say the least.
>>
>
> There are some other ideas discussed in the kernel threads, but I didn't
> go through them. They may work.
There was this one
http://lists.infradead.org/pipermail/linux-arm-kernel/2010-January/007515.html
But it got discarded: http://lists.infradead.org/pipermail/linux-arm-kernel/2010-January/007517.html
> If emulation is complex, probably
> we can partially fix this problem by "always using 16-bit thumb instruction
> if program is out of IT block".
>
I would be against that since it would leave the feature partially
working and crashing the program when it fails...
It would also be a regression compared to previous GDBServer.
Also, IT blocks are a common place to have a breakpoint/tracepoint.
>> I think it would be better to get the current single stepping working
>> with the stop all threads logic since GDBServer was working like that
>> when GDB was doing the single stepping anyway. This would fix the current
>> regression.
>>
>> Then work could be done to improve GDBServer to be better at
>> non-stopping.
>>
>> WDYT ?
>>
>
> Sounds like we are applying the ARM linux limitation to a general
> place.
> Other software single step targets may write breakpoint in atomic way,
> so we don't need to stop all threads. Even in -marm mode, we don't
> have to stop all threads on inserting breakpoints.
Well ARM is the only software single stepping target, while I agreee
that we would be affecting general code, I think that since there is
no software single step breakpoint target that supports atomic
breakpoint writes at the moment it's normal that the run control
doesn't support that.
I don't count -marm as an arch since there no way to check that all the
program including shared libs etc is -marm, I don't think we could make
the distinction in GDBServer AFAIK.
Should an arch support this in the future we could adapt the run control
to support both cases possibly via some arch specific property.
I think also that given the current trends in architecture design the
odds of another arch needing that in the future are also unlikely ?
WDYT ?
next prev parent reply other threads:[~2017-01-27 18:24 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-29 12:07 Antoine Tremblay
2016-11-29 12:07 ` [PATCH 2/2] Avoid step-over infinite loop in GDBServer Antoine Tremblay
2017-01-16 17:27 ` Antoine Tremblay
2017-01-18 16:31 ` Antoine Tremblay
2017-02-03 16:21 ` Pedro Alves
2017-02-17 3:39 ` Antoine Tremblay
2017-02-22 10:15 ` Yao Qi
2016-11-29 12:12 ` [PATCH 1/2] This patch fixes GDBServer's run control for single stepping Antoine Tremblay
2017-01-16 17:28 ` Antoine Tremblay
2017-01-27 15:01 ` Yao Qi
2017-01-27 16:07 ` Antoine Tremblay
[not found] ` <CAH=s-PP-i3v_Fr=QeWt9BQeJzjCHtW79nGYpJ9hF-Bb=OBo89Q@mail.gmail.com>
2017-01-27 18:24 ` Antoine Tremblay [this message]
2017-01-29 21:41 ` Yao Qi
2017-01-30 13:29 ` Antoine Tremblay
2017-02-16 22:32 ` Yao Qi
2017-02-17 2:17 ` Antoine Tremblay
[not found] ` <2255ed6f-a146-026c-f871-00e9a33dfcf0@redhat.com>
2017-02-17 1:42 ` Antoine Tremblay
2017-02-17 2:05 ` Pedro Alves
2017-02-17 3:06 ` Antoine Tremblay
2017-02-17 22:19 ` Yao Qi
2017-02-18 0:19 ` Antoine Tremblay
2017-02-18 22:49 ` Yao Qi
2017-02-19 19:40 ` Antoine Tremblay
2017-02-19 20:31 ` Antoine Tremblay
2017-03-29 12:41 ` Antoine Tremblay
2017-03-29 14:11 ` Antoine Tremblay
2017-03-29 17:54 ` Antoine Tremblay
[not found] ` <86d1cy4umo.fsf@gmail.com>
2017-03-30 18:31 ` Antoine Tremblay
2017-03-31 16:31 ` Yao Qi
2017-03-31 18:22 ` Antoine Tremblay
2017-04-03 12:41 ` Yao Qi
2017-04-03 13:18 ` Antoine Tremblay
2017-04-03 15:18 ` Yao Qi
2017-04-03 16:57 ` Antoine Tremblay
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=wwokr33o5pkb.fsf@ericsson.com \
--to=antoine.tremblay@ericsson.com \
--cc=gdb-patches@sourceware.org \
--cc=qiyaoltc@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