gdb/
Code cleanup for the next patch. * arm-linux-nat.c (arm_linux_stopped_data_address): Change variable siginfo_p to siginfo, update its users incl. the linux_nat_get_siginfo call for it. * ia64-linux-nat.c (ia64_linux_stopped_data_address): Likewise. (ia64_linux_stopped_data_address): * linux-nat.c (linux_nat_get_siginfo): Add parameter siginfo, change the return value. * linux-nat.h (linux_nat_get_siginfo): Likewise. * ppc-linux-nat.c (ppc_linux_stopped_data_address): Change variable siginfo_p to siginfo, update its users incl. the linux_nat_get_siginfo call for it.
This commit is contained in:
parent
76b83c514f
commit
f865ee35b7
6 changed files with 49 additions and 22 deletions
|
@ -1,3 +1,18 @@
|
||||||
|
2012-07-06 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
Code cleanup for the next patch.
|
||||||
|
* arm-linux-nat.c (arm_linux_stopped_data_address): Change variable
|
||||||
|
siginfo_p to siginfo, update its users incl. the linux_nat_get_siginfo
|
||||||
|
call for it.
|
||||||
|
* ia64-linux-nat.c (ia64_linux_stopped_data_address): Likewise.
|
||||||
|
(ia64_linux_stopped_data_address):
|
||||||
|
* linux-nat.c (linux_nat_get_siginfo): Add parameter siginfo, change
|
||||||
|
the return value.
|
||||||
|
* linux-nat.h (linux_nat_get_siginfo): Likewise.
|
||||||
|
* ppc-linux-nat.c (ppc_linux_stopped_data_address): Change variable
|
||||||
|
siginfo_p to siginfo, update its users incl. the linux_nat_get_siginfo
|
||||||
|
call for it.
|
||||||
|
|
||||||
2012-07-06 Jan Kratochvil <jan.kratochvil@redhat.com>
|
2012-07-06 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
PR 14321
|
PR 14321
|
||||||
|
|
|
@ -1137,24 +1137,29 @@ arm_linux_remove_watchpoint (CORE_ADDR addr, int len, int rw,
|
||||||
static int
|
static int
|
||||||
arm_linux_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p)
|
arm_linux_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p)
|
||||||
{
|
{
|
||||||
siginfo_t *siginfo_p = linux_nat_get_siginfo (inferior_ptid);
|
siginfo_t siginfo;
|
||||||
int slot = siginfo_p->si_errno;
|
int slot;
|
||||||
|
|
||||||
|
if (!linux_nat_get_siginfo (inferior_ptid, &siginfo))
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* This must be a hardware breakpoint. */
|
/* This must be a hardware breakpoint. */
|
||||||
if (siginfo_p->si_signo != SIGTRAP
|
if (siginfo.si_signo != SIGTRAP
|
||||||
|| (siginfo_p->si_code & 0xffff) != 0x0004 /* TRAP_HWBKPT */)
|
|| (siginfo.si_code & 0xffff) != 0x0004 /* TRAP_HWBKPT */)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* We must be able to set hardware watchpoints. */
|
/* We must be able to set hardware watchpoints. */
|
||||||
if (arm_linux_get_hw_watchpoint_count () == 0)
|
if (arm_linux_get_hw_watchpoint_count () == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
slot = siginfo.si_errno;
|
||||||
|
|
||||||
/* If we are in a positive slot then we're looking at a breakpoint and not
|
/* If we are in a positive slot then we're looking at a breakpoint and not
|
||||||
a watchpoint. */
|
a watchpoint. */
|
||||||
if (slot >= 0)
|
if (slot >= 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
*addr_p = (CORE_ADDR) (uintptr_t) siginfo_p->si_addr;
|
*addr_p = (CORE_ADDR) (uintptr_t) siginfo.si_addr;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -649,13 +649,14 @@ static int
|
||||||
ia64_linux_stopped_data_address (struct target_ops *ops, CORE_ADDR *addr_p)
|
ia64_linux_stopped_data_address (struct target_ops *ops, CORE_ADDR *addr_p)
|
||||||
{
|
{
|
||||||
CORE_ADDR psr;
|
CORE_ADDR psr;
|
||||||
siginfo_t *siginfo_p;
|
siginfo_t siginfo;
|
||||||
struct regcache *regcache = get_current_regcache ();
|
struct regcache *regcache = get_current_regcache ();
|
||||||
|
|
||||||
siginfo_p = linux_nat_get_siginfo (inferior_ptid);
|
if (!linux_nat_get_siginfo (inferior_ptid, &siginfo))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (siginfo_p->si_signo != SIGTRAP
|
if (siginfo.si_signo != SIGTRAP
|
||||||
|| (siginfo_p->si_code & 0xffff) != 0x0004 /* TRAP_HWBKPT */)
|
|| (siginfo.si_code & 0xffff) != 0x0004 /* TRAP_HWBKPT */)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
regcache_cooked_read_unsigned (regcache, IA64_PSR_REGNUM, &psr);
|
regcache_cooked_read_unsigned (regcache, IA64_PSR_REGNUM, &psr);
|
||||||
|
@ -663,7 +664,7 @@ ia64_linux_stopped_data_address (struct target_ops *ops, CORE_ADDR *addr_p)
|
||||||
for the next instruction. */
|
for the next instruction. */
|
||||||
regcache_cooked_write_unsigned (regcache, IA64_PSR_REGNUM, psr);
|
regcache_cooked_write_unsigned (regcache, IA64_PSR_REGNUM, psr);
|
||||||
|
|
||||||
*addr_p = (CORE_ADDR)siginfo_p->si_addr;
|
*addr_p = (CORE_ADDR) siginfo.si_addr;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5187,15 +5187,18 @@ linux_nat_set_prepare_to_resume (struct target_ops *t,
|
||||||
linux_nat_prepare_to_resume = prepare_to_resume;
|
linux_nat_prepare_to_resume = prepare_to_resume;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return the saved siginfo associated with PTID. */
|
/* See linux-nat.h. */
|
||||||
siginfo_t *
|
|
||||||
linux_nat_get_siginfo (ptid_t ptid)
|
int
|
||||||
|
linux_nat_get_siginfo (ptid_t ptid, siginfo_t *siginfo)
|
||||||
{
|
{
|
||||||
struct lwp_info *lp = find_lwp_pid (ptid);
|
struct lwp_info *lp = find_lwp_pid (ptid);
|
||||||
|
|
||||||
gdb_assert (lp != NULL);
|
gdb_assert (lp != NULL);
|
||||||
|
|
||||||
return &lp->siginfo;
|
*siginfo = lp->siginfo;
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provide a prototype to silence -Wmissing-prototypes. */
|
/* Provide a prototype to silence -Wmissing-prototypes. */
|
||||||
|
|
|
@ -197,8 +197,10 @@ void linux_nat_set_prepare_to_resume (struct target_ops *,
|
||||||
to another. */
|
to another. */
|
||||||
void linux_nat_switch_fork (ptid_t new_ptid);
|
void linux_nat_switch_fork (ptid_t new_ptid);
|
||||||
|
|
||||||
/* Return the saved siginfo associated with PTID. */
|
/* Store the saved siginfo associated with PTID in *SIGINFO.
|
||||||
siginfo_t *linux_nat_get_siginfo (ptid_t ptid);
|
Return 1 if it was retrieved successfully, 0 otherwise (*SIGINFO is
|
||||||
|
uninitialized in such case). */
|
||||||
|
int linux_nat_get_siginfo (ptid_t ptid, siginfo_t *siginfo);
|
||||||
|
|
||||||
/* Set alternative SIGTRAP-like events recognizer. */
|
/* Set alternative SIGTRAP-like events recognizer. */
|
||||||
void linux_nat_set_status_is_event (struct target_ops *t,
|
void linux_nat_set_status_is_event (struct target_ops *t,
|
||||||
|
|
|
@ -2221,12 +2221,13 @@ ppc_linux_thread_exit (struct thread_info *tp, int silent)
|
||||||
static int
|
static int
|
||||||
ppc_linux_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p)
|
ppc_linux_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p)
|
||||||
{
|
{
|
||||||
siginfo_t *siginfo_p;
|
siginfo_t siginfo;
|
||||||
|
|
||||||
siginfo_p = linux_nat_get_siginfo (inferior_ptid);
|
if (!linux_nat_get_siginfo (inferior_ptid, &siginfo))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (siginfo_p->si_signo != SIGTRAP
|
if (siginfo.si_signo != SIGTRAP
|
||||||
|| (siginfo_p->si_code & 0xffff) != 0x0004 /* TRAP_HWBKPT */)
|
|| (siginfo.si_code & 0xffff) != 0x0004 /* TRAP_HWBKPT */)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (have_ptrace_booke_interface ())
|
if (have_ptrace_booke_interface ())
|
||||||
|
@ -2235,7 +2236,7 @@ ppc_linux_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p)
|
||||||
struct thread_points *t;
|
struct thread_points *t;
|
||||||
struct hw_break_tuple *hw_breaks;
|
struct hw_break_tuple *hw_breaks;
|
||||||
/* The index (or slot) of the *point is passed in the si_errno field. */
|
/* The index (or slot) of the *point is passed in the si_errno field. */
|
||||||
int slot = siginfo_p->si_errno;
|
int slot = siginfo.si_errno;
|
||||||
|
|
||||||
t = booke_find_thread_points_by_tid (TIDGET (inferior_ptid), 0);
|
t = booke_find_thread_points_by_tid (TIDGET (inferior_ptid), 0);
|
||||||
|
|
||||||
|
@ -2252,7 +2253,7 @@ ppc_linux_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*addr_p = (CORE_ADDR) (uintptr_t) siginfo_p->si_addr;
|
*addr_p = (CORE_ADDR) (uintptr_t) siginfo.si_addr;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue