aboutsummaryrefslogtreecommitdiff
path: root/gdb/ppc-linux-tdep.c
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2008-05-03 23:50:43 +0000
committerUlrich Weigand <uweigand@de.ibm.com>2008-05-03 23:50:43 +0000
commit4a7622d18f7a0e67c53090c685f99ac2c38d0201 (patch)
tree60b9678f82734b85e05e342ca8934e786ecfba5d /gdb/ppc-linux-tdep.c
parent938f5214c6828b547fa0ed7e54d73c368ab2e401 (diff)
downloadgdb-4a7622d18f7a0e67c53090c685f99ac2c38d0201.zip
gdb-4a7622d18f7a0e67c53090c685f99ac2c38d0201.tar.gz
gdb-4a7622d18f7a0e67c53090c685f99ac2c38d0201.tar.bz2
* rs6000-tdep.c: Do not include "rs6000-tdep.h".
(rs6000_find_toc_address_hook): Move to rs6000-aix-tdep.c. (SIG_FRAME_PC_OFFSET): Likewise. (SIG_FRAME_LR_OFFSET): Likewise. (SIG_FRAME_FP_OFFSET): Likewise. (rs6000_push_dummy_call): Likewise. (rs6000_return_value): Likewise. (rs6000_convert_from_func_ptr_addr): Likewise. (branch_dest, rs6000_software_single_step): Likewise. (deal_with_atomic_sequence): Rename to ... (ppc_deal_with_atomic_sequence): ... this. Adapt all callers. Do not call branch_dest; inline required parts of that function. (rs6000_skip_trampoline_code): Replace DEPRECATED_SYMBOL_NAME with SYMBOL_LINKAGE_NAME. (struct reg, regsize): Delete. (read_memory_addr): Delete; inline into callers. (rs6000_skip_prologue): Move after skip_prologue. (skip_prologue): Remove prototype. (rs6000_gdbarch_init): Remove sysv_abi variable; perform all initialization as if this variable were true. Do not install ppc64_sysv_abi_adjust_breakpoint_address. * rs6000-aix-tdep.c: Include "gdb_assert.h", "gdbtypes.h", "gdbcore.h", "target.h", "value.h", "infcall.h", "objfiles.h", and "breakpoint.h". (rs6000_find_toc_address_hook): Move here from rs6000-tdep.c. (SIG_FRAME_PC_OFFSET): Likewise. (SIG_FRAME_LR_OFFSET): Likewise. (SIG_FRAME_FP_OFFSET): Likewise. (rs6000_push_dummy_call): Likewise. (rs6000_return_value): Likewise. (rs6000_convert_from_func_ptr_addr): Likewise. (branch_dest, rs6000_software_single_step): Likewise. Replace tdep->text_segment_base by AIX_TEXT_SEGMENT_BASE. (rs6000_aix_init_osabi): Install rs6000_push_dummy_call, rs6000_return_value, and rs6000_convert_from_func_ptr_addr. Call set_gdbarch_long_double_bit and set_gdbarch_frame_red_zone_size. Set tdep->lr_frame_offset. Do not set tdep->text_segment_base. * rs6000-tdep.h (rs6000_software_single_step): Remove prototype. (AIX_TEXT_SEGMENT_BASE): New macro. * rs6000-nat.c (exec_one_dummy_insn): Replace tdep->text_segment_base by AIX_TEXT_SEGMENT_BASE. * ppc-tdep.h (ppc_deal_with_atomic_sequence): Add prototype. (struct gdbarch_tdep): Remove text_segment_base member. * ppc-linux-tdep.c (ppc_linux_init_abi): On 64-bit, install ppc64_sysv_abi_adjust_breakpoint_address. * Makefile.in (rs6000-tdep.o): Update dependencies. (rs6000-aix-tdep.o): Likewise.
Diffstat (limited to 'gdb/ppc-linux-tdep.c')
-rw-r--r--gdb/ppc-linux-tdep.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
index 2f776f5..d985687 100644
--- a/gdb/ppc-linux-tdep.c
+++ b/gdb/ppc-linux-tdep.c
@@ -1060,6 +1060,15 @@ ppc_linux_init_abi (struct gdbarch_info info,
if (tdep->wordsize == 8)
{
+ /* Handle the 64-bit SVR4 minimal-symbol convention of using "FN"
+ for the descriptor and ".FN" for the entry-point -- a user
+ specifying "break FN" will unexpectedly end up with a breakpoint
+ on the descriptor and not the function. This architecture method
+ transforms any breakpoints on descriptors into breakpoints on the
+ corresponding entry point. */
+ set_gdbarch_adjust_breakpoint_address
+ (gdbarch, ppc64_sysv_abi_adjust_breakpoint_address);
+
/* Shared library handling. */
set_gdbarch_skip_trampoline_code (gdbarch, ppc64_skip_trampoline_code);
set_solib_svr4_fetch_link_map_offsets