GDB (xrefs)
|
#include "defs.h"
#include "osabi.h"
#include "regcache.h"
#include "regset.h"
#include "gdbtypes.h"
#include "gdbcore.h"
#include "target.h"
#include "value.h"
#include "infcall.h"
#include "objfiles.h"
#include "breakpoint.h"
#include "ppc-tdep.h"
#include "rs6000-aix-tdep.h"
#include "xcoffread.h"
#include "solib.h"
#include "solib-aix.h"
#include "target-float.h"
#include "gdbsupport/xml-utils.h"
#include "trad-frame.h"
#include "frame-unwind.h"
Go to the source code of this file.
Classes | |
struct | rs6000_aix_reg_vrreg_offset |
struct | ldinfo_field |
struct | ld_info_desc |
struct | ld_info |
Macros | |
#define | SIG_FRAME_PC_OFFSET 96 |
#define | SIG_FRAME_LR_OFFSET 108 |
#define | SIG_FRAME_FP_OFFSET 284 |
#define | SIG_FRAME_LR_OFFSET64 424 |
#define | SIG_FRAME_FP_OFFSET64 168 |
#define | AIX_TEXT_SEGMENT_BASE 0x10000000 |
Functions | |
static int | rs6000_aix_get_vrreg_offset (ppc_gdbarch_tdep *tdep, const struct rs6000_aix_reg_vrreg_offset *offsets, int regnum) |
static void | rs6000_aix_supply_vrregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *vrregs, size_t len) |
static void | rs6000_aix_supply_vsxregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *vsxregs, size_t len) |
static void | rs6000_aix_collect_vsxregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *vsxregs, size_t len) |
static void | rs6000_aix_collect_vrregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *vrregs, size_t len) |
static struct trad_frame_cache * | aix_sighandle_frame_cache (frame_info_ptr this_frame, void **this_cache) |
static void | aix_sighandle_frame_this_id (frame_info_ptr this_frame, void **this_prologue_cache, struct frame_id *this_id) |
static struct value * | aix_sighandle_frame_prev_register (frame_info_ptr this_frame, void **this_prologue_cache, int regnum) |
static int | aix_sighandle_frame_sniffer (const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache) |
static void | rs6000_aix_supply_regset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len) |
static void | rs6000_aix_collect_regset (const struct regset *regset, const struct regcache *regcache, int regnum, void *gregs, size_t len) |
static void | rs6000_aix_iterate_over_regset_sections (struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache) |
static const struct target_desc * | ppc_aix_core_read_description (struct gdbarch *gdbarch, struct target_ops *target, bfd *abfd) |
static CORE_ADDR | rs6000_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, function_call_return_method return_method, CORE_ADDR struct_addr) |
static enum return_value_convention | rs6000_return_value (struct gdbarch *gdbarch, struct value *function, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf) |
static CORE_ADDR | rs6000_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ) |
static CORE_ADDR | branch_dest (struct regcache *regcache, int opcode, int instr, CORE_ADDR pc, CORE_ADDR safety) |
static std::vector< CORE_ADDR > | rs6000_software_single_step (struct regcache *regcache) |
static const char * | rs6000_aix_auto_wide_charset (void) |
static enum gdb_osabi | rs6000_aix_osabi_sniffer (bfd *abfd) |
static struct ld_info | rs6000_aix_extract_ld_info (struct gdbarch *gdbarch, const gdb_byte *ldi_buf) |
static void | rs6000_aix_shared_library_to_xml (struct ld_info *ldi, struct obstack *obstack) |
ULONGEST | rs6000_aix_ld_info_to_xml (struct gdbarch *gdbarch, const gdb_byte *ldi_buf, gdb_byte *readbuf, ULONGEST offset, ULONGEST len, int close_ldinfo_fd) |
static ULONGEST | rs6000_aix_core_xfer_shared_libraries_aix (struct gdbarch *gdbarch, gdb_byte *readbuf, ULONGEST offset, ULONGEST len) |
static void | rs6000_aix_init_osabi (struct gdbarch_info info, struct gdbarch *gdbarch) |
void | _initialize_rs6000_aix_tdep () |
Variables | |
static struct rs6000_aix_reg_vrreg_offset | rs6000_aix_vrreg_offset |
static const struct regset | rs6000_aix_vrregset |
static const struct regset | rs6000_aix_vsxregset |
static const struct frame_unwind | aix_sighandle_frame_unwind |
static struct ppc_reg_offsets | rs6000_aix32_reg_offsets |
static struct ppc_reg_offsets | rs6000_aix64_reg_offsets |
static const struct regset | rs6000_aix32_regset |
static const struct regset | rs6000_aix64_regset |
static const struct ld_info_desc | ld_info32_desc |
static const struct ld_info_desc | ld_info64_desc |
#define AIX_TEXT_SEGMENT_BASE 0x10000000 |
Definition at line 69 of file rs6000-aix-tdep.c.
Referenced by aix_sighandle_frame_sniffer(), and branch_dest().
#define SIG_FRAME_FP_OFFSET 284 |
Definition at line 60 of file rs6000-aix-tdep.c.
Referenced by aix_sighandle_frame_cache().
#define SIG_FRAME_FP_OFFSET64 168 |
Definition at line 66 of file rs6000-aix-tdep.c.
Referenced by aix_sighandle_frame_cache().
#define SIG_FRAME_LR_OFFSET 108 |
Definition at line 58 of file rs6000-aix-tdep.c.
#define SIG_FRAME_LR_OFFSET64 424 |
Definition at line 64 of file rs6000-aix-tdep.c.
Referenced by aix_sighandle_frame_cache().
#define SIG_FRAME_PC_OFFSET 96 |
Definition at line 57 of file rs6000-aix-tdep.c.
Referenced by aix_sighandle_frame_cache(), and branch_dest().
void _initialize_rs6000_aix_tdep | ( | ) |
Definition at line 1427 of file rs6000-aix-tdep.c.
References GDB_OSABI_AIX, gdbarch_register_osabi(), gdbarch_register_osabi_sniffer(), rs6000_aix_init_osabi(), and rs6000_aix_osabi_sniffer().
|
static |
Definition at line 243 of file rs6000-aix-tdep.c.
References frame_id_build(), func, gdbarch_byte_order(), gdbarch_pc_regnum(), gdbarch_sp_regnum(), get_frame_arch(), get_frame_register_unsigned(), ppc_gdbarch_tdep::ppc_lr_regnum, read_memory_unsigned_integer(), safe_read_memory_integer(), SIG_FRAME_FP_OFFSET, SIG_FRAME_FP_OFFSET64, SIG_FRAME_LR_OFFSET64, SIG_FRAME_PC_OFFSET, trad_frame_cache::this_frame, trad_frame_cache_zalloc(), trad_frame_set_id(), trad_frame_set_reg_addr(), trad_frame_set_reg_value(), trad_frame_set_this_base(), and ppc_gdbarch_tdep::wordsize.
Referenced by aix_sighandle_frame_prev_register(), and aix_sighandle_frame_this_id().
|
static |
Definition at line 309 of file rs6000-aix-tdep.c.
References aix_sighandle_frame_cache(), regnum, trad_frame_cache::this_frame, and trad_frame_get_register().
|
static |
Definition at line 318 of file rs6000-aix-tdep.c.
References AIX_TEXT_SEGMENT_BASE, get_frame_pc(), and trad_frame_cache::this_frame.
|
static |
Definition at line 299 of file rs6000-aix-tdep.c.
References aix_sighandle_frame_cache(), trad_frame_cache::this_frame, trad_frame_cache::this_id, and trad_frame_get_id().
|
static |
Definition at line 934 of file rs6000-aix-tdep.c.
References AIX_TEXT_SEGMENT_BASE, reg_buffer::arch(), gdbarch_byte_order(), get_current_frame(), get_frame_base(), ppc_gdbarch_tdep::ppc_ctr_regnum, ppc_gdbarch_tdep::ppc_lr_regnum, read_memory_unsigned_integer(), SIG_FRAME_PC_OFFSET, and ppc_gdbarch_tdep::wordsize.
Referenced by rs6000_software_single_step().
|
static |
Definition at line 455 of file rs6000-aix-tdep.c.
References tdesc_powerpc_altivec32, tdesc_powerpc_altivec64, tdesc_powerpc_vsx32, tdesc_powerpc_vsx64, and ppc_gdbarch_tdep::wordsize.
Referenced by rs6000_aix_init_osabi().
|
static |
Definition at line 1057 of file rs6000-aix-tdep.c.
Referenced by rs6000_aix_init_osabi().
|
static |
Definition at line 403 of file rs6000-aix-tdep.c.
References ppc_collect_fpregset(), ppc_collect_gregset(), and regnum.
|
static |
Definition at line 191 of file rs6000-aix-tdep.c.
References reg_buffer::arch(), ppc_collect_reg(), ppc_num_vrs, ppc_gdbarch_tdep::ppc_vr0_regnum, ppc_gdbarch_tdep::ppc_vrsave_regnum, regset::regmap, regnum, rs6000_aix_get_vrreg_offset(), rs6000_aix_reg_vrreg_offset::vr0_offset, rs6000_aix_reg_vrreg_offset::vrsave_offset, and rs6000_aix_reg_vrreg_offset::vscr_offset.
|
static |
Definition at line 167 of file rs6000-aix-tdep.c.
References reg_buffer::arch(), ppc_collect_reg(), ppc_gdbarch_tdep::ppc_vsr0_regnum, ppc_gdbarch_tdep::ppc_vsr0_upper_regnum, and regnum.
|
static |
Definition at line 1341 of file rs6000-aix-tdep.c.
References core_bfd, and rs6000_aix_ld_info_to_xml().
Referenced by rs6000_aix_init_osabi().
|
static |
Definition at line 1207 of file rs6000-aix-tdep.c.
References builtin_type::builtin_data_ptr, builtin_type(), extract_signed_integer(), extract_typed_address(), extract_unsigned_integer(), gdbarch_byte_order(), ld_info32_desc, ld_info64_desc, ld_info_desc::ldinfo_dataorg, ld_info_desc::ldinfo_datasize, ld_info_desc::ldinfo_fd, ld_info_desc::ldinfo_filename, ld_info_desc::ldinfo_next, ld_info_desc::ldinfo_textorg, ld_info_desc::ldinfo_textsize, ldinfo_field::offset, ldinfo_field::size, and ppc_gdbarch_tdep::wordsize.
Referenced by rs6000_aix_ld_info_to_xml().
|
static |
Definition at line 87 of file rs6000-aix-tdep.c.
References ppc_num_vrs, ppc_gdbarch_tdep::ppc_vr0_regnum, ppc_gdbarch_tdep::ppc_vrsave_regnum, regnum, rs6000_aix_reg_vrreg_offset::vr0_offset, rs6000_aix_reg_vrreg_offset::vrsave_offset, and rs6000_aix_reg_vrreg_offset::vscr_offset.
Referenced by rs6000_aix_collect_vrregset(), and rs6000_aix_supply_vrregset().
|
static |
Definition at line 1367 of file rs6000-aix-tdep.c.
References aix_sighandle_frame_unwind, frame_unwind_append_unwinder(), ppc_gdbarch_tdep::lr_frame_offset, ppc_aix_core_read_description(), rs6000_aix_auto_wide_charset(), rs6000_aix_core_xfer_shared_libraries_aix(), rs6000_aix_iterate_over_regset_sections(), rs6000_convert_from_func_ptr_addr(), rs6000_push_dummy_call(), rs6000_return_value(), rs6000_software_single_step(), set_gdbarch_auto_wide_charset(), set_gdbarch_convert_from_func_ptr_addr(), set_gdbarch_core_read_description(), set_gdbarch_core_xfer_shared_libraries_aix(), set_gdbarch_displaced_step_copy_insn(), set_gdbarch_displaced_step_finish(), set_gdbarch_displaced_step_fixup(), set_gdbarch_displaced_step_prepare(), set_gdbarch_frame_red_zone_size(), set_gdbarch_iterate_over_regset_sections(), set_gdbarch_long_double_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_return_value(), set_gdbarch_so_ops(), set_gdbarch_software_single_step(), set_gdbarch_wchar_bit(), set_gdbarch_wchar_signed(), solib_aix_so_ops, and ppc_gdbarch_tdep::wordsize.
Referenced by _initialize_rs6000_aix_tdep().
|
static |
Definition at line 430 of file rs6000-aix-tdep.c.
References ppc_gdbarch_tdep::ppc_vr0_regnum, ppc_gdbarch_tdep::ppc_vsr0_upper_regnum, rs6000_aix32_regset, rs6000_aix64_regset, rs6000_aix_vrregset, rs6000_aix_vsxregset, and ppc_gdbarch_tdep::wordsize.
Referenced by rs6000_aix_init_osabi().
ULONGEST rs6000_aix_ld_info_to_xml | ( | struct gdbarch * | gdbarch, |
const gdb_byte * | ldi_buf, | ||
gdb_byte * | readbuf, | ||
ULONGEST | offset, | ||
ULONGEST | len, | ||
int | close_ldinfo_fd ) |
Definition at line 1297 of file rs6000-aix-tdep.c.
References ld_info::fd, ld_info::next, rs6000_aix_extract_ld_info(), and rs6000_aix_shared_library_to_xml().
Referenced by rs6000_aix_core_xfer_shared_libraries_aix(), and rs6000_nat_target::xfer_shared_libraries().
|
static |
Definition at line 1070 of file rs6000-aix-tdep.c.
References GDB_OSABI_AIX, GDB_OSABI_UNKNOWN, and xcoff_get_n_import_files().
Referenced by _initialize_rs6000_aix_tdep().
|
static |
Definition at line 1246 of file rs6000-aix-tdep.c.
References ld_info::dataorg, ld_info::datasize, ld_info::filename, ld_info::member_name, ld_info::textorg, and ld_info::textsize.
Referenced by rs6000_aix_ld_info_to_xml().
|
static |
Definition at line 389 of file rs6000-aix-tdep.c.
References ppc_supply_fpregset(), ppc_supply_gregset(), and regnum.
|
static |
Definition at line 105 of file rs6000-aix-tdep.c.
References reg_buffer::arch(), ppc_num_vrs, ppc_supply_reg(), ppc_gdbarch_tdep::ppc_vr0_regnum, ppc_gdbarch_tdep::ppc_vrsave_regnum, regset::regmap, regnum, rs6000_aix_get_vrreg_offset(), rs6000_aix_reg_vrreg_offset::vr0_offset, rs6000_aix_reg_vrreg_offset::vrsave_offset, and rs6000_aix_reg_vrreg_offset::vscr_offset.
|
static |
Definition at line 144 of file rs6000-aix-tdep.c.
References reg_buffer::arch(), ppc_supply_reg(), ppc_gdbarch_tdep::ppc_vsr0_regnum, ppc_gdbarch_tdep::ppc_vsr0_upper_regnum, and regnum.
|
static |
Definition at line 890 of file rs6000-aix-tdep.c.
References obj_section::addr(), find_pc_section(), gdbarch_byte_order(), read_memory_unsigned_integer(), obj_section::the_bfd_section, and ppc_gdbarch_tdep::wordsize.
Referenced by rs6000_aix_init_osabi().
|
static |
Definition at line 500 of file rs6000-aix-tdep.c.
References check_typedef(), type::code(), value::contents(), regcache::cooked_write(), find_function_addr(), fp_regnum, gdbarch_byte_order(), gdbarch_sp_regnum(), type::length(), ppc_floating_point_unit_p(), ppc_gdbarch_tdep::ppc_fp0_regnum, ppc_gdbarch_tdep::ppc_gp0_regnum, ppc_gdbarch_tdep::ppc_lr_regnum, PPC_MAX_REGISTER_SIZE, ppc_gdbarch_tdep::ppc_toc_regnum, regcache_cooked_read_unsigned(), regcache_raw_write_signed(), regcache_raw_write_unsigned(), register_size(), register_type(), return_method_struct, solib_aix_get_toc_value(), store_unsigned_integer(), target_float_convert(), target_store_registers(), type, value::type(), unpack_long(), ppc_gdbarch_tdep::wordsize, and write_memory().
Referenced by rs6000_aix_init_osabi().
|
static |
Definition at line 752 of file rs6000-aix-tdep.c.
References type::code(), readable_regcache::cooked_read(), regcache::cooked_write(), gdbarch_byte_order(), type::is_vector(), type::length(), ppc_floating_point_unit_p(), ppc_gdbarch_tdep::ppc_fp0_regnum, ppc_gdbarch_tdep::ppc_gp0_regnum, ppc_gdbarch_tdep::ppc_vr0_regnum, regcache_cooked_read_unsigned(), regcache_cooked_write_unsigned(), register_type(), RETURN_VALUE_REGISTER_CONVENTION, RETURN_VALUE_STRUCT_CONVENTION, store_unsigned_integer(), target_float_convert(), unpack_long(), and ppc_gdbarch_tdep::wordsize.
Referenced by rs6000_aix_init_osabi().
|
static |
Definition at line 1011 of file rs6000-aix-tdep.c.
References reg_buffer::arch(), branch_dest(), gdbarch_byte_order(), loc, ppc_deal_with_atomic_sequence(), PPC_INSN_SIZE, read_memory_integer(), and regcache_read_pc().
Referenced by rs6000_aix_init_osabi().
|
static |
Definition at line 331 of file rs6000-aix-tdep.c.
Referenced by rs6000_aix_init_osabi().
|
static |
Definition at line 1160 of file rs6000-aix-tdep.c.
Referenced by rs6000_aix_extract_ld_info().
|
static |
Definition at line 1173 of file rs6000-aix-tdep.c.
Referenced by rs6000_aix_extract_ld_info().
|
static |
Definition at line 343 of file rs6000-aix-tdep.c.
|
static |
Definition at line 413 of file rs6000-aix-tdep.c.
Referenced by rs6000_aix_iterate_over_regset_sections().
|
static |
Definition at line 363 of file rs6000-aix-tdep.c.
|
static |
Definition at line 420 of file rs6000-aix-tdep.c.
Referenced by rs6000_aix_iterate_over_regset_sections().
|
static |
Definition at line 78 of file rs6000-aix-tdep.c.
|
static |
Definition at line 230 of file rs6000-aix-tdep.c.
Referenced by rs6000_aix_iterate_over_regset_sections().
|
static |
Definition at line 236 of file rs6000-aix-tdep.c.
Referenced by rs6000_aix_iterate_over_regset_sections().