GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
rs6000-aix-tdep.c File Reference
#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_cacheaix_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 valueaix_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_descppc_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
 

Macro Definition Documentation

◆ AIX_TEXT_SEGMENT_BASE

#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().

◆ SIG_FRAME_FP_OFFSET

#define SIG_FRAME_FP_OFFSET   284

Definition at line 60 of file rs6000-aix-tdep.c.

Referenced by aix_sighandle_frame_cache().

◆ SIG_FRAME_FP_OFFSET64

#define SIG_FRAME_FP_OFFSET64   168

Definition at line 66 of file rs6000-aix-tdep.c.

Referenced by aix_sighandle_frame_cache().

◆ SIG_FRAME_LR_OFFSET

#define SIG_FRAME_LR_OFFSET   108

Definition at line 58 of file rs6000-aix-tdep.c.

◆ SIG_FRAME_LR_OFFSET64

#define SIG_FRAME_LR_OFFSET64   424

Definition at line 64 of file rs6000-aix-tdep.c.

Referenced by aix_sighandle_frame_cache().

◆ SIG_FRAME_PC_OFFSET

#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().

Function Documentation

◆ _initialize_rs6000_aix_tdep()

void _initialize_rs6000_aix_tdep ( )

◆ aix_sighandle_frame_cache()

static struct trad_frame_cache * aix_sighandle_frame_cache ( frame_info_ptr this_frame,
void ** this_cache )
static

◆ aix_sighandle_frame_prev_register()

static struct value * aix_sighandle_frame_prev_register ( frame_info_ptr this_frame,
void ** this_prologue_cache,
int regnum )
static

◆ aix_sighandle_frame_sniffer()

static int aix_sighandle_frame_sniffer ( const struct frame_unwind * self,
frame_info_ptr this_frame,
void ** this_prologue_cache )
static

◆ aix_sighandle_frame_this_id()

static void aix_sighandle_frame_this_id ( frame_info_ptr this_frame,
void ** this_prologue_cache,
struct frame_id * this_id )
static

◆ branch_dest()

static CORE_ADDR branch_dest ( struct regcache * regcache,
int opcode,
int instr,
CORE_ADDR pc,
CORE_ADDR safety )
static

◆ ppc_aix_core_read_description()

static const struct target_desc * ppc_aix_core_read_description ( struct gdbarch * gdbarch,
struct target_ops * target,
bfd * abfd )
static

◆ rs6000_aix_auto_wide_charset()

static const char * rs6000_aix_auto_wide_charset ( void )
static

Definition at line 1057 of file rs6000-aix-tdep.c.

Referenced by rs6000_aix_init_osabi().

◆ rs6000_aix_collect_regset()

static void rs6000_aix_collect_regset ( const struct regset * regset,
const struct regcache * regcache,
int regnum,
void * gregs,
size_t len )
static

Definition at line 403 of file rs6000-aix-tdep.c.

References ppc_collect_fpregset(), ppc_collect_gregset(), and regnum.

◆ rs6000_aix_collect_vrregset()

static void rs6000_aix_collect_vrregset ( const struct regset * regset,
const struct regcache * regcache,
int regnum,
void * vrregs,
size_t len )
static

◆ rs6000_aix_collect_vsxregset()

static void rs6000_aix_collect_vsxregset ( const struct regset * regset,
const struct regcache * regcache,
int regnum,
void * vsxregs,
size_t len )
static

◆ rs6000_aix_core_xfer_shared_libraries_aix()

static ULONGEST rs6000_aix_core_xfer_shared_libraries_aix ( struct gdbarch * gdbarch,
gdb_byte * readbuf,
ULONGEST offset,
ULONGEST len )
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().

◆ rs6000_aix_extract_ld_info()

static struct ld_info rs6000_aix_extract_ld_info ( struct gdbarch * gdbarch,
const gdb_byte * ldi_buf )
static

◆ rs6000_aix_get_vrreg_offset()

static int rs6000_aix_get_vrreg_offset ( ppc_gdbarch_tdep * tdep,
const struct rs6000_aix_reg_vrreg_offset * offsets,
int regnum )
static

◆ rs6000_aix_init_osabi()

static void rs6000_aix_init_osabi ( struct gdbarch_info info,
struct gdbarch * gdbarch )
static

◆ rs6000_aix_iterate_over_regset_sections()

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

◆ rs6000_aix_ld_info_to_xml()

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 )

◆ rs6000_aix_osabi_sniffer()

static enum gdb_osabi rs6000_aix_osabi_sniffer ( bfd * abfd)
static

◆ rs6000_aix_shared_library_to_xml()

static void rs6000_aix_shared_library_to_xml ( struct ld_info * ldi,
struct obstack * obstack )
static

◆ rs6000_aix_supply_regset()

static void rs6000_aix_supply_regset ( const struct regset * regset,
struct regcache * regcache,
int regnum,
const void * gregs,
size_t len )
static

Definition at line 389 of file rs6000-aix-tdep.c.

References ppc_supply_fpregset(), ppc_supply_gregset(), and regnum.

◆ rs6000_aix_supply_vrregset()

static void rs6000_aix_supply_vrregset ( const struct regset * regset,
struct regcache * regcache,
int regnum,
const void * vrregs,
size_t len )
static

◆ rs6000_aix_supply_vsxregset()

static void rs6000_aix_supply_vsxregset ( const struct regset * regset,
struct regcache * regcache,
int regnum,
const void * vsxregs,
size_t len )
static

◆ rs6000_convert_from_func_ptr_addr()

static CORE_ADDR rs6000_convert_from_func_ptr_addr ( struct gdbarch * gdbarch,
CORE_ADDR addr,
struct target_ops * targ )
static

◆ rs6000_push_dummy_call()

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

◆ rs6000_return_value()

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

◆ rs6000_software_single_step()

static std::vector< CORE_ADDR > rs6000_software_single_step ( struct regcache * regcache)
static

Variable Documentation

◆ aix_sighandle_frame_unwind

const struct frame_unwind aix_sighandle_frame_unwind
static
Initial value:
= {
"rs6000 aix sighandle",
NULL,
}
enum unwind_stop_reason default_frame_unwind_stop_reason(frame_info_ptr this_frame, void **this_cache)
@ SIGTRAMP_FRAME
Definition frame.h:198
static int aix_sighandle_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache)
static struct value * aix_sighandle_frame_prev_register(frame_info_ptr this_frame, void **this_prologue_cache, int regnum)
static void aix_sighandle_frame_this_id(frame_info_ptr this_frame, void **this_prologue_cache, struct frame_id *this_id)

Definition at line 331 of file rs6000-aix-tdep.c.

Referenced by rs6000_aix_init_osabi().

◆ ld_info32_desc

const struct ld_info_desc ld_info32_desc
static
Initial value:
=
{
{0, 4},
{4, 4},
{8, 4},
{12, 4},
{16, 4},
{20, 4},
{24, 2},
}

Definition at line 1160 of file rs6000-aix-tdep.c.

Referenced by rs6000_aix_extract_ld_info().

◆ ld_info64_desc

const struct ld_info_desc ld_info64_desc
static
Initial value:
=
{
{0, 4},
{8, 4},
{16, 8},
{24, 8},
{32, 8},
{40, 8},
{48, 2},
}

Definition at line 1173 of file rs6000-aix-tdep.c.

Referenced by rs6000_aix_extract_ld_info().

◆ rs6000_aix32_reg_offsets

struct ppc_reg_offsets rs6000_aix32_reg_offsets
static
Initial value:
=
{
208,
4,
4,
24,
28,
32,
36,
40,
44,
48,
336,
56,
4
}

Definition at line 343 of file rs6000-aix-tdep.c.

◆ rs6000_aix32_regset

const struct regset rs6000_aix32_regset
static
Initial value:
=
{
}
static void rs6000_aix_collect_regset(const struct regset *regset, const struct regcache *regcache, int regnum, void *gregs, size_t len)
static struct ppc_reg_offsets rs6000_aix32_reg_offsets
static void rs6000_aix_supply_regset(const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len)

Definition at line 413 of file rs6000-aix-tdep.c.

Referenced by rs6000_aix_iterate_over_regset_sections().

◆ rs6000_aix64_reg_offsets

struct ppc_reg_offsets rs6000_aix64_reg_offsets
static
Initial value:
=
{
0,
8,
4,
264,
256,
288,
272,
280,
292,
-1,
312,
296,
4
}

Definition at line 363 of file rs6000-aix-tdep.c.

◆ rs6000_aix64_regset

const struct regset rs6000_aix64_regset
static
Initial value:
=
{
}
static struct ppc_reg_offsets rs6000_aix64_reg_offsets

Definition at line 420 of file rs6000-aix-tdep.c.

Referenced by rs6000_aix_iterate_over_regset_sections().

◆ rs6000_aix_vrreg_offset

struct rs6000_aix_reg_vrreg_offset rs6000_aix_vrreg_offset
static
Initial value:
=
{
32,
544,
560
}

Definition at line 78 of file rs6000-aix-tdep.c.

◆ rs6000_aix_vrregset

const struct regset rs6000_aix_vrregset
static
Initial value:
= {
}
static void rs6000_aix_supply_vrregset(const struct regset *regset, struct regcache *regcache, int regnum, const void *vrregs, size_t len)
static struct rs6000_aix_reg_vrreg_offset rs6000_aix_vrreg_offset
static void rs6000_aix_collect_vrregset(const struct regset *regset, const struct regcache *regcache, int regnum, void *vrregs, size_t len)

Definition at line 230 of file rs6000-aix-tdep.c.

Referenced by rs6000_aix_iterate_over_regset_sections().

◆ rs6000_aix_vsxregset

const struct regset rs6000_aix_vsxregset
static
Initial value:
= {
}
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_supply_vsxregset(const struct regset *regset, struct regcache *regcache, int regnum, const void *vsxregs, size_t len)

Definition at line 236 of file rs6000-aix-tdep.c.

Referenced by rs6000_aix_iterate_over_regset_sections().