From: Aleksandar Ristovski <aristovski@qnx.com>
To: Yao Qi <yao@codesourcery.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: [patch] gdbarch_syscall_pc_increment
Date: Thu, 13 Dec 2012 14:08:00 -0000 [thread overview]
Message-ID: <50C9E136.3030107@qnx.com> (raw)
In-Reply-To: <50C93022.5000402@codesourcery.com>
On 12-12-12 08:32 PM, Yao Qi wrote:
> On 12/12/2012 11:42 PM, Aleksandar Ristovski wrote:
>>
>> This is generic for a given OS that happens to increment instruction
>> pointer to allow user code to e.g. set errno.
>>
>> I provided only arm implementation, but other target cpus would need the
>> same if they implement software single stepping.
>>
>> Increment is cpu specific for a given architecture.
>>
>
> 'software single step' is implemented differently in the backend of each
> port and your 'syscall_pc_increment' depends on the arch as well, so a
> gdbarch hook is not needed here.
>
> 'gdbarch' stands for a certain general architecture, such as arm, mips,
> and etc. 'gdbarch_tdep' contains the details of the cpus under this
> architecture.
Yes, I see your point, though I would say gdbarch stands for a certain
architecture such as arm-nto, arm-linux, etc... therefore, cpu/os
combination, not cpu only.
In this patch, we are talking about two things:
a) the concept of syscall behaving as a conditional branch with
uncomputable condition (i.e. gdb can not really compute whether the
branch will be taken or not). This is a concept specific to a given
kernel implementation of system calls and as such belongs to gdbarch.
b) The amount by which pc may be incremented if the branch is taken. For
an os that has a), this is cpu specific. It may also be dependent on the
instruction set mode on e.g. arm (this is why frame is being passed).
Where does this belong: in the case here, the line is a bit blurry since
a) is generic concept applicable for all cpus for a given os thus
definitely belonging to gdbarch. b) is cpu concept and strictly speaking
belongs to gdbarch_tdep. However, since a) can also answer b) I see no
point in further breaking it down.
Of course, the alternative is to not introduce concept from a) at all
and do everything in my cpu-os-tdep.c which is how I have it set up now
in our port.
>
> b.t.w, I don't see how 'set_gdbarch_syscall_pc_increment' is called in
> your patch.
>
No, as we have not yet contributed arm-nto-tdep.c to FSF.
---
Aleksandar
next prev parent reply other threads:[~2012-12-13 14:08 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-12 14:24 Aleksandar Ristovski
2012-12-12 15:30 ` Yao Qi
2012-12-12 15:43 ` Aleksandar Ristovski
2012-12-13 1:33 ` Yao Qi
2012-12-13 14:08 ` Aleksandar Ristovski [this message]
2012-12-13 14:21 ` Yao Qi
2012-12-13 21:47 ` Pedro Alves
2012-12-14 14:23 ` Aleksandar Ristovski
2012-12-14 15:14 ` 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=50C9E136.3030107@qnx.com \
--to=aristovski@qnx.com \
--cc=gdb-patches@sourceware.org \
--cc=yao@codesourcery.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