ppc64_linux_sighandler_cache_init
};
-
-/* Address to use for displaced stepping. When debugging a stand-alone
- SPU executable, entry_point_address () will point to an SPU local-store
- address and is thus not usable as displaced stepping location. We use
- the auxiliary vector to determine the PowerPC-side entry point address
- instead. */
-
-static CORE_ADDR ppc_linux_entry_point_addr = 0;
-
-static void
-ppc_linux_inferior_created (struct target_ops *target, int from_tty)
-{
- ppc_linux_entry_point_addr = 0;
-}
-
-static CORE_ADDR
-ppc_linux_displaced_step_location (struct gdbarch *gdbarch)
-{
- if (ppc_linux_entry_point_addr == 0)
- {
- CORE_ADDR addr;
-
- /* Determine entry point from target auxiliary vector. */
- if (target_auxv_search (¤t_target, AT_ENTRY, &addr) <= 0)
- error (_("Cannot find AT_ENTRY auxiliary vector entry."));
-
- /* Make certain that the address points at real code, and not a
- function descriptor. */
- addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
- ¤t_target);
-
- /* Inferior calls also use the entry point as a breakpoint location.
- We don't want displaced stepping to interfere with those
- breakpoints, so leave space. */
- ppc_linux_entry_point_addr = addr + 2 * PPC_INSN_SIZE;
- }
-
- return ppc_linux_entry_point_addr;
-}
-
-
/* Return 1 if PPC_ORIG_R3_REGNUM and PPC_TRAP_REGNUM are usable. */
int
ppc_linux_trap_reg_p (struct gdbarch *gdbarch)
static enum gdb_syscall
ppc_canonicalize_syscall (int syscall)
{
+ int result = -1;
+
if (syscall <= 165)
- return syscall;
+ result = syscall;
else if (syscall >= 167 && syscall <= 190) /* Skip query_module 166 */
- return syscall + 1;
+ result = syscall + 1;
else if (syscall >= 192 && syscall <= 197) /* mmap2 */
- return syscall;
+ result = syscall;
else if (syscall == 208) /* tkill */
- return gdb_sys_tkill;
+ result = gdb_sys_tkill;
else if (syscall >= 207 && syscall <= 220) /* gettid */
- return syscall + 224 - 207;
+ result = syscall + 224 - 207;
else if (syscall >= 234 && syscall <= 239) /* exit_group */
- return syscall + 252 - 234;
- else if (syscall >= 240 && syscall <=248) /* timer_create */
- return syscall += 259 - 240;
- else if (syscall >= 250 && syscall <=251) /* tgkill */
- return syscall + 270 - 250;
+ result = syscall + 252 - 234;
+ else if (syscall >= 240 && syscall <= 248) /* timer_create */
+ result = syscall += 259 - 240;
+ else if (syscall >= 250 && syscall <= 251) /* tgkill */
+ result = syscall + 270 - 250;
else if (syscall == 336)
- return gdb_sys_recv;
+ result = gdb_sys_recv;
else if (syscall == 337)
- return gdb_sys_recvfrom;
+ result = gdb_sys_recvfrom;
else if (syscall == 342)
- return gdb_sys_recvmsg;
- return -1;
+ result = gdb_sys_recvmsg;
+
+ return (enum gdb_syscall) result;
}
/* Record registers which might be clobbered during system call.
{
spe_context_objfile = objfile;
spe_context_lm_addr = svr4_fetch_objfile_link_map (objfile);
- spe_context_offset = BMSYMBOL_VALUE_ADDRESS (sym);
+ spe_context_offset = MSYMBOL_VALUE_RAW_ADDRESS (sym.minsym);
spe_context_cache_ptid = minus_one_ptid;
spe_context_cache_address = 0;
return;
gdb_byte gprs[128*16];
};
-static int
+static enum register_status
ppu2spu_unwind_register (void *src, int regnum, gdb_byte *buf)
{
struct ppu2spu_data *data = src;
/* Cell/B.E. cross-architecture unwinder support. */
frame_unwind_prepend_unwinder (gdbarch, &ppu2spu_unwind);
-
- /* The default displaced_step_at_entry_point doesn't work for
- SPU stand-alone executables. */
- set_gdbarch_displaced_step_location (gdbarch,
- ppc_linux_displaced_step_location);
}
- set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type);
+ set_gdbarch_displaced_step_location (gdbarch,
+ linux_displaced_step_location);
/* Support reverse debugging. */
set_gdbarch_process_record (gdbarch, ppc_process_record);
gdbarch_register_osabi (bfd_arch_rs6000, bfd_mach_rs6k, GDB_OSABI_LINUX,
ppc_linux_init_abi);
- /* Attach to inferior_created observer. */
- observer_attach_inferior_created (ppc_linux_inferior_created);
-
/* Attach to observers to track __spe_current_active_context. */
observer_attach_inferior_created (ppc_linux_spe_context_inferior_created);
observer_attach_solib_loaded (ppc_linux_spe_context_solib_loaded);