Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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




  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