This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] gdbarch_syscall_pc_increment


On 12/12/2012 10:23 PM, Aleksandar Ristovski wrote:
This patch fixes stepping over system call instruction on architectures
that use software single stepping and also may increment PC upon return
from the system call to communicate error. (e.g. this is what we do on
Neutrino).

Note: I could only test this on Neutrino.


Hi,
I don't understand why do you add a gdbarch hook, but use it only in a target-specific part? The goal of gdbarch hooks is about hiding the difference of ports and giving a common interface to the common part of GDB. If your issue is arm specific, we don't need this new gdbarch hook at all.


If I understand your problem correctly, you have to define your own function 'arm_neutrino_syscall_next_pc' in your file arm-neutrino-tdep.c, and install it on function pointer 'syscall_next_pc' (in 'struct gdbarch_tdep' in arm-tdep.h) in 'arm_neutrino_init_abi'. Please have a look on how 'syscall_next_pc' is set in arm-linux-tdep.c. Then you can compute the pc for your own os in 'arm_neutrino_syscall_next_pc'. Hope it helps.


ChangeLog:


        * gdbarch.sh (syscall_pc_increment): New function.
        * gdbarch.h, gdbarch.c: Regenerated.
        * arm-tdep.c (arm_software_single_step): Use
        gdbarch_syscall_pc_increment and if provided, insert second
        single step breakpoint at the incremented address.

I guess the reason you need the 2nd single step breakpoint is that GDB computes the 'next pc' by mistake, so you need the 2nd single step breakpoint setting on the 'right' address of 'next pc'. In other words, do we really need the 2nd single step breakpoint if the address of 'next pc' is computed correctly?


--
Yao (éå)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]