GDB (xrefs)
Classes | Defines | Functions | Variables
/home/stan/gdb/src/gdb/ppc-linux-tdep.c File Reference
#include "defs.h"
#include "frame.h"
#include "inferior.h"
#include "symtab.h"
#include "target.h"
#include "gdbcore.h"
#include "gdbcmd.h"
#include "symfile.h"
#include "objfiles.h"
#include "regcache.h"
#include "value.h"
#include "osabi.h"
#include "regset.h"
#include "solib-svr4.h"
#include "solib-spu.h"
#include "solib.h"
#include "solist.h"
#include "ppc-tdep.h"
#include "ppc64-tdep.h"
#include "ppc-linux-tdep.h"
#include "glibc-tdep.h"
#include "trad-frame.h"
#include "frame-unwind.h"
#include "tramp-frame.h"
#include "observer.h"
#include "auxv.h"
#include "elf/common.h"
#include "exceptions.h"
#include "arch-utils.h"
#include "spu-tdep.h"
#include "xml-syscall.h"
#include "linux-tdep.h"
#include "stap-probe.h"
#include "ax.h"
#include "ax-gdb.h"
#include "cli/cli-utils.h"
#include "parser-defs.h"
#include "user-regs.h"
#include <ctype.h>
#include "elf-bfd.h"
#include "features/rs6000/powerpc-32l.c"
#include "features/rs6000/powerpc-altivec32l.c"
#include "features/rs6000/powerpc-cell32l.c"
#include "features/rs6000/powerpc-vsx32l.c"
#include "features/rs6000/powerpc-isa205-32l.c"
#include "features/rs6000/powerpc-isa205-altivec32l.c"
#include "features/rs6000/powerpc-isa205-vsx32l.c"
#include "features/rs6000/powerpc-64l.c"
#include "features/rs6000/powerpc-altivec64l.c"
#include "features/rs6000/powerpc-cell64l.c"
#include "features/rs6000/powerpc-vsx64l.c"
#include "features/rs6000/powerpc-isa205-64l.c"
#include "features/rs6000/powerpc-isa205-altivec64l.c"
#include "features/rs6000/powerpc-isa205-vsx64l.c"
#include "features/rs6000/powerpc-e500l.c"

Go to the source code of this file.

Classes

struct  ppu2spu_cache
struct  ppu2spu_data

Defines

#define XML_SYSCALL_FILENAME_PPC   "syscalls/ppc-linux.xml"
#define XML_SYSCALL_FILENAME_PPC64   "syscalls/ppc64-linux.xml"
#define POWERPC32_PLT_STUB_LEN   ARRAY_SIZE (powerpc32_plt_stub)

Functions

static int ppc_linux_memory_remove_breakpoint (struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
static enum return_value_convention ppc_linux_return_value (struct gdbarch *gdbarch, struct value *function, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
static int powerpc_linux_in_dynsym_resolve_code (CORE_ADDR pc)
static CORE_ADDR ppc_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
static void ppc_linux_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len)
static void ppc_linux_collect_gregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *gregs, size_t len)
struct regsetppc_linux_gregset (int wordsize)
struct regsetppc_linux_fpregset (void)
static struct regsetppc_linux_regset_from_core_section (struct gdbarch *core_arch, const char *sect_name, size_t sect_size)
static void ppc_linux_sigtramp_cache (struct frame_info *this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func, LONGEST offset, int bias)
static void ppc32_linux_sigaction_cache_init (const struct tramp_frame *self, struct frame_info *this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func)
static void ppc64_linux_sigaction_cache_init (const struct tramp_frame *self, struct frame_info *this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func)
static void ppc32_linux_sighandler_cache_init (const struct tramp_frame *self, struct frame_info *this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func)
static void ppc64_linux_sighandler_cache_init (const struct tramp_frame *self, struct frame_info *this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func)
static void ppc_linux_inferior_created (struct target_ops *target, int from_tty)
static CORE_ADDR ppc_linux_displaced_step_location (struct gdbarch *gdbarch)
int ppc_linux_trap_reg_p (struct gdbarch *gdbarch)
static LONGEST ppc_linux_get_syscall_number (struct gdbarch *gdbarch, ptid_t ptid)
static void ppc_linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
static int ppc_linux_spu_section (bfd *abfd, asection *asect, void *user_data)
static struct target_descppc_linux_core_read_description (struct gdbarch *gdbarch, struct target_ops *target, bfd *abfd)
static int ppc_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
static int ppc_stap_parse_special_token (struct gdbarch *gdbarch, struct stap_parse_info *p)
static void ppc_linux_spe_context_lookup (struct objfile *objfile)
static void ppc_linux_spe_context_inferior_created (struct target_ops *t, int from_tty)
static void ppc_linux_spe_context_solib_loaded (struct so_list *so)
static void ppc_linux_spe_context_solib_unloaded (struct so_list *so)
static CORE_ADDR ppc_linux_spe_context (int wordsize, enum bfd_endian byte_order, int n, int *id, unsigned int *npc)
static struct gdbarchppu2spu_prev_arch (struct frame_info *this_frame, void **this_cache)
static void ppu2spu_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static struct valueppu2spu_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
static int ppu2spu_unwind_register (void *src, int regnum, gdb_byte *buf)
static int ppu2spu_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
static void ppu2spu_dealloc_cache (struct frame_info *self, void *this_cache)
static void ppc_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
void _initialize_ppc_linux_tdep (void)

Variables

static struct target_so_ops powerpc_so_ops
static struct core_regset_section ppc_linux_vsx_regset_sections []
static struct core_regset_section ppc_linux_vmx_regset_sections []
static struct core_regset_section ppc_linux_fp_regset_sections []
static struct core_regset_section ppc64_linux_vsx_regset_sections []
static struct core_regset_section ppc64_linux_vmx_regset_sections []
static struct core_regset_section ppc64_linux_fp_regset_sections []
static struct ppc_insn_pattern powerpc32_plt_stub []
static struct ppc_insn_pattern powerpc32_plt_stub_so []
static struct ppc_reg_offsets ppc32_linux_reg_offsets
static struct ppc_reg_offsets ppc64_linux_reg_offsets
static struct regset ppc32_linux_gregset
static struct regset ppc64_linux_gregset
static struct regset ppc32_linux_fpregset
static struct regset ppc32_linux_vrregset
static struct regset ppc32_linux_vsxregset
static struct tramp_frame ppc32_linux_sigaction_tramp_frame
static struct tramp_frame ppc64_linux_sigaction_tramp_frame
static struct tramp_frame ppc32_linux_sighandler_tramp_frame
static struct tramp_frame ppc64_linux_sighandler_tramp_frame
static CORE_ADDR ppc_linux_entry_point_addr = 0
static struct objfilespe_context_objfile = NULL
static CORE_ADDR spe_context_lm_addr = 0
static CORE_ADDR spe_context_offset = 0
static ptid_t spe_context_cache_ptid
static CORE_ADDR spe_context_cache_address
static struct frame_unwind ppu2spu_unwind
initialize_file_ftype _initialize_ppc_linux_tdep

Define Documentation

#define POWERPC32_PLT_STUB_LEN   ARRAY_SIZE (powerpc32_plt_stub)

Definition at line 326 of file ppc-linux-tdep.c.

Referenced by ppc_skip_trampoline_code().

#define XML_SYSCALL_FILENAME_PPC   "syscalls/ppc-linux.xml"

Definition at line 82 of file ppc-linux-tdep.c.

Referenced by ppc_linux_init_abi().

#define XML_SYSCALL_FILENAME_PPC64   "syscalls/ppc64-linux.xml"

Definition at line 83 of file ppc-linux-tdep.c.

Referenced by ppc_linux_init_abi().


Function Documentation

void _initialize_ppc_linux_tdep ( void  )
static void ppc32_linux_sigaction_cache_init ( const struct tramp_frame self,
struct frame_info this_frame,
struct trad_frame_cache this_cache,
CORE_ADDR  func 
) [static]

Definition at line 637 of file ppc-linux-tdep.c.

References ppc_linux_sigtramp_cache().

static void ppc32_linux_sighandler_cache_init ( const struct tramp_frame self,
struct frame_info this_frame,
struct trad_frame_cache this_cache,
CORE_ADDR  func 
) [static]

Definition at line 661 of file ppc-linux-tdep.c.

References ppc_linux_sigtramp_cache().

static void ppc64_linux_sigaction_cache_init ( const struct tramp_frame self,
struct frame_info this_frame,
struct trad_frame_cache this_cache,
CORE_ADDR  func 
) [static]

Definition at line 649 of file ppc-linux-tdep.c.

References ppc_linux_sigtramp_cache().

static void ppc64_linux_sighandler_cache_init ( const struct tramp_frame self,
struct frame_info this_frame,
struct trad_frame_cache this_cache,
CORE_ADDR  func 
) [static]

Definition at line 673 of file ppc-linux-tdep.c.

References ppc_linux_sigtramp_cache().

static void ppc_linux_collect_gregset ( const struct regset regset,
const struct regcache regcache,
int  regnum,
void *  gregs,
size_t  len 
) [static]
static struct target_desc* ppc_linux_core_read_description ( struct gdbarch gdbarch,
struct target_ops target,
bfd *  abfd 
) [static, read]
static CORE_ADDR ppc_linux_displaced_step_location ( struct gdbarch gdbarch) [static]
struct regset* ppc_linux_fpregset ( void  ) [read]

Definition at line 539 of file ppc-linux-tdep.c.

References ppc32_linux_fpregset.

Referenced by fill_fpregset(), and supply_fpregset().

static LONGEST ppc_linux_get_syscall_number ( struct gdbarch gdbarch,
ptid_t  ptid 
) [static]
struct regset* ppc_linux_gregset ( int  wordsize) [read]

Definition at line 533 of file ppc-linux-tdep.c.

References ppc32_linux_gregset.

Referenced by fill_gregset(), and supply_gregset().

static void ppc_linux_inferior_created ( struct target_ops target,
int  from_tty 
) [static]

Definition at line 737 of file ppc-linux-tdep.c.

References ppc_linux_entry_point_addr.

Referenced by _initialize_ppc_linux_tdep().

static void ppc_linux_init_abi ( struct gdbarch_info  info,
struct gdbarch gdbarch 
) [static]

Definition at line 1243 of file ppc-linux-tdep.c.

References floatformats_ibm_long_double, frame_unwind_prepend_unwinder(), gdb_assert, gdbarch_byte_order(), gdbarch_num_regs(), gdbarch_tdep(), glibc_skip_solib_resolver(), target_so_ops::in_dynsym_resolve_code, linux_get_siginfo_type(), linux_init_abi(), powerpc_linux_in_dynsym_resolve_code(), powerpc_so_ops, ppc64_convert_from_func_ptr_addr(), ppc64_elf_make_msymbol_special(), ppc64_skip_trampoline_code(), ppc_linux_core_read_description(), ppc_linux_displaced_step_location(), ppc_linux_get_syscall_number(), ppc_linux_memory_remove_breakpoint(), ppc_linux_regset_from_core_section(), ppc_linux_return_value(), ppc_linux_write_pc(), PPC_ORIG_R3_REGNUM, ppc_skip_trampoline_code(), ppc_stap_is_single_operand(), ppc_stap_parse_special_token(), PPC_TRAP_REGNUM, set_gdbarch_convert_from_func_ptr_addr(), set_gdbarch_core_read_description(), set_gdbarch_core_regset_sections(), set_gdbarch_displaced_step_location(), set_gdbarch_elf_make_msymbol_special(), set_gdbarch_elfcore_write_linux_prpsinfo(), set_gdbarch_fetch_tls_load_module_address(), set_gdbarch_gcore_bfd_target(), set_gdbarch_get_siginfo_type(), set_gdbarch_get_syscall_number(), set_gdbarch_long_double_bit(), set_gdbarch_long_double_format(), set_gdbarch_memory_remove_breakpoint(), set_gdbarch_num_regs(), set_gdbarch_regset_from_core_section(), set_gdbarch_return_value(), set_gdbarch_skip_solib_resolver(), set_gdbarch_skip_trampoline_code(), set_gdbarch_stap_gdb_register_prefix(), set_gdbarch_stap_integer_prefix(), set_gdbarch_stap_is_single_operand(), set_gdbarch_stap_parse_special_token(), set_gdbarch_stap_register_indirection_prefix(), set_gdbarch_stap_register_indirection_suffix(), set_gdbarch_write_pc(), set_solib_ops(), set_solib_svr4_fetch_link_map_offsets(), set_spu_solib_ops(), set_xml_syscall_file_name(), svr4_fetch_objfile_link_map(), svr4_ilp32_fetch_link_map_offsets(), svr4_lp64_fetch_link_map_offsets(), svr4_so_ops, gdbarch_info::target_desc, gdbarch_info::tdep_info, tdesc_compatible_p(), tdesc_data, tdesc_find_feature(), tdesc_numbered_register(), tramp_frame_prepend_unwinder(), gdbarch_tdep::wordsize, XML_SYSCALL_FILENAME_PPC, and XML_SYSCALL_FILENAME_PPC64.

Referenced by _initialize_ppc_linux_tdep().

static int ppc_linux_memory_remove_breakpoint ( struct gdbarch gdbarch,
struct bp_target_info bp_tgt 
) [static]
static struct regset* ppc_linux_regset_from_core_section ( struct gdbarch core_arch,
const char *  sect_name,
size_t  sect_size 
) [static, read]
static enum return_value_convention ppc_linux_return_value ( struct gdbarch gdbarch,
struct value function,
struct type valtype,
struct regcache regcache,
gdb_byte readbuf,
const gdb_byte writebuf 
) [static]
static void ppc_linux_sigtramp_cache ( struct frame_info this_frame,
struct trad_frame_cache this_cache,
CORE_ADDR  func,
LONGEST  offset,
int  bias 
) [static]
static CORE_ADDR ppc_linux_spe_context ( int  wordsize,
enum bfd_endian  byte_order,
int  n,
int id,
unsigned int npc 
) [static]
static void ppc_linux_spe_context_inferior_created ( struct target_ops t,
int  from_tty 
) [static]

Definition at line 989 of file ppc-linux-tdep.c.

References ALL_OBJFILES, and ppc_linux_spe_context_lookup().

Referenced by _initialize_ppc_linux_tdep().

static void ppc_linux_spe_context_lookup ( struct objfile objfile) [static]
static void ppc_linux_spe_context_solib_loaded ( struct so_list so) [static]
static void ppc_linux_spe_context_solib_unloaded ( struct so_list so) [static]

Definition at line 1009 of file ppc-linux-tdep.c.

References so_list::objfile, and ppc_linux_spe_context_lookup().

Referenced by _initialize_ppc_linux_tdep().

static int ppc_linux_spu_section ( bfd *  abfd,
asection *  asect,
void *  user_data 
) [static]

Definition at line 835 of file ppc-linux-tdep.c.

Referenced by ppc_linux_core_read_description().

static void ppc_linux_supply_gregset ( const struct regset regset,
struct regcache regcache,
int  regnum,
const void *  gregs,
size_t  len 
) [static]
int ppc_linux_trap_reg_p ( struct gdbarch gdbarch)
static void ppc_linux_write_pc ( struct regcache regcache,
CORE_ADDR  pc 
) [static]
static CORE_ADDR ppc_skip_trampoline_code ( struct frame_info frame,
CORE_ADDR  pc 
) [static]
static int ppc_stap_is_single_operand ( struct gdbarch gdbarch,
const char *  s 
) [static]

Definition at line 883 of file ppc-linux-tdep.c.

Referenced by ppc_linux_init_abi().

static int ppc_stap_parse_special_token ( struct gdbarch gdbarch,
struct stap_parse_info p 
) [static]
static void ppu2spu_dealloc_cache ( struct frame_info self,
void *  this_cache 
) [static]

Definition at line 1224 of file ppc-linux-tdep.c.

References ppu2spu_cache::regcache, and regcache_xfree().

static struct gdbarch* ppu2spu_prev_arch ( struct frame_info this_frame,
void **  this_cache 
) [static, read]

Definition at line 1099 of file ppc-linux-tdep.c.

References get_regcache_arch(), and ppu2spu_cache::regcache.

static struct value* ppu2spu_prev_register ( struct frame_info this_frame,
void **  this_cache,
int  regnum 
) [static, read]
static int ppu2spu_sniffer ( const struct frame_unwind self,
struct frame_info this_frame,
void **  this_prologue_cache 
) [static]
static void ppu2spu_this_id ( struct frame_info this_frame,
void **  this_cache,
struct frame_id this_id 
) [static]

Definition at line 1106 of file ppc-linux-tdep.c.

References ppu2spu_cache::frame_id.

static int ppu2spu_unwind_register ( void *  src,
int  regnum,
gdb_byte buf 
) [static]

Variable Documentation

Initial value:
  {
    { 0xffff0000, 0x3d600000, 0 },      
    { 0xffff0000, 0x816b0000, 0 },      
    { 0xffffffff, 0x7d6903a6, 0 },      
    { 0xffffffff, 0x4e800420, 0 },      
    {          0,          0, 0 }
  }

Definition at line 308 of file ppc-linux-tdep.c.

Initial value:
  {
    { 0xffff0000, 0x817e0000, 0 },      
    { 0xffffffff, 0x7d6903a6, 0 },      
    { 0xffffffff, 0x4e800420, 0 },      
    { 0xffffffff, 0x60000000, 0 },      
    {          0,          0, 0 }
  }

Definition at line 318 of file ppc-linux-tdep.c.

struct target_so_ops powerpc_so_ops [static]

Definition at line 79 of file ppc-linux-tdep.c.

Referenced by ppc_linux_init_abi().

struct regset ppc32_linux_fpregset [static]
struct regset ppc32_linux_gregset [static]
Initial value:
  {
    
     0,
     4,
     4,
     128,
     132,
     152,
     144,
     140,
     148,
     156,

    
     0,
     256,
     8,

    
     0,
     512 + 12,
     528
  }

Definition at line 447 of file ppc-linux-tdep.c.

Initial value:
 {
  SIGTRAMP_FRAME,
  4,
  { 
    { 0x380000ac, -1 }, 
    { 0x44000002, -1 }, 
    { TRAMP_SENTINEL_INSN },
  },
  ppc32_linux_sigaction_cache_init
}

Definition at line 684 of file ppc-linux-tdep.c.

Initial value:
 {
  SIGTRAMP_FRAME,
  4,
  { 
    { 0x38000077, -1 }, 
    { 0x44000002, -1 }, 
    { TRAMP_SENTINEL_INSN },
  },
  ppc32_linux_sighandler_cache_init
}

Definition at line 705 of file ppc-linux-tdep.c.

struct regset ppc32_linux_vrregset [static]
Initial value:

Definition at line 518 of file ppc-linux-tdep.c.

Referenced by ppc_linux_regset_from_core_section().

struct regset ppc32_linux_vsxregset [static]
Initial value:
{
  { ".reg", 48 * 8, "general-purpose" },
  { ".reg2", 264, "floating-point" },
  { NULL, 0}
}

Definition at line 300 of file ppc-linux-tdep.c.

struct regset ppc64_linux_gregset [static]
Initial value:
  {
    
     0,
     8,
     8,
     256,
     264,
     304,
     288,
     280,
     296,
     312,

    
     0,
     256,
     8,

    
     0,
     512 + 12,
     528
  }

Definition at line 472 of file ppc-linux-tdep.c.

Initial value:
 {
  SIGTRAMP_FRAME,
  4,
  {
    { 0x38210080, -1 }, 
    { 0x380000ac, -1 }, 
    { 0x44000002, -1 }, 
    { TRAMP_SENTINEL_INSN },
  },
  ppc64_linux_sigaction_cache_init
}

Definition at line 694 of file ppc-linux-tdep.c.

Initial value:
 {
  SIGTRAMP_FRAME,
  4,
  { 
    { 0x38210080, -1 }, 
    { 0x38000077, -1 }, 
    { 0x44000002, -1 }, 
    { TRAMP_SENTINEL_INSN },
  },
  ppc64_linux_sighandler_cache_init
}

Definition at line 715 of file ppc-linux-tdep.c.

Initial value:
{
  { ".reg", 48 * 8, "general-purpose" },
  { ".reg2", 264, "floating-point" },
  { ".reg-ppc-vmx", 544, "ppc Altivec" },
  { NULL, 0}
}

Definition at line 292 of file ppc-linux-tdep.c.

Initial value:
{
  { ".reg", 48 * 8, "general-purpose" },
  { ".reg2", 264, "floating-point" },
  { ".reg-ppc-vmx", 544, "ppc Altivec" },
  { ".reg-ppc-vsx", 256, "POWER7 VSX" },
  { NULL, 0}
}

Definition at line 283 of file ppc-linux-tdep.c.

Initial value:
{
  { ".reg", 48 * 4, "general-purpose" },
  { ".reg2", 264, "floating-point" },
  { NULL, 0}
}

Definition at line 276 of file ppc-linux-tdep.c.

Initial value:
{
  { ".reg", 48 * 4, "general-purpose" },
  { ".reg2", 264, "floating-point" },
  { ".reg-ppc-vmx", 544, "ppc Altivec" },
  { NULL, 0}
}

Definition at line 268 of file ppc-linux-tdep.c.

Initial value:
{
  { ".reg", 48 * 4, "general-purpose" },
  { ".reg2", 264, "floating-point" },
  { ".reg-ppc-vmx", 544, "ppc Altivec" },
  { ".reg-ppc-vsx", 256, "POWER7 VSX" },
  { NULL, 0}
}

Definition at line 259 of file ppc-linux-tdep.c.

struct frame_unwind ppu2spu_unwind [static]

Definition at line 956 of file ppc-linux-tdep.c.

Referenced by ppc_linux_spe_context(), and ppc_linux_spe_context_lookup().

Definition at line 955 of file ppc-linux-tdep.c.

Definition at line 952 of file ppc-linux-tdep.c.

Referenced by ppc_linux_spe_context(), and ppc_linux_spe_context_lookup().

struct objfile* spe_context_objfile = NULL [static]

Definition at line 951 of file ppc-linux-tdep.c.

Definition at line 953 of file ppc-linux-tdep.c.

Referenced by ppc_linux_spe_context(), and ppc_linux_spe_context_lookup().

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines