GDB (xrefs)
Classes | Functions | Variables
/tmp/gdb-7.10/gdb/frv-tdep.c File Reference
#include "defs.h"
#include "inferior.h"
#include "gdbcore.h"
#include "arch-utils.h"
#include "regcache.h"
#include "frame.h"
#include "frame-unwind.h"
#include "frame-base.h"
#include "trad-frame.h"
#include "dis-asm.h"
#include "sim-regno.h"
#include "gdb/sim-frv.h"
#include "opcodes/frv-desc.h"
#include "symtab.h"
#include "elf-bfd.h"
#include "elf/frv.h"
#include "osabi.h"
#include "infcall.h"
#include "solib.h"
#include "frv-tdep.h"
#include "objfiles.h"

Go to the source code of this file.

Classes

struct  frv_unwind_cache
 
struct  gdbarch_tdep
 

Functions

void _initialize_frv_tdep (void)
 
enum frv_abi frv_abi (struct gdbarch *gdbarch)
 
int frv_fdpic_loadmap_addresses (struct gdbarch *gdbarch, CORE_ADDR *interp_addr, CORE_ADDR *exec_addr)
 
static struct gdbarch_tdepnew_variant (void)
 
static void set_variant_num_gprs (struct gdbarch_tdep *var, int num_gprs)
 
static void set_variant_num_fprs (struct gdbarch_tdep *var, int num_fprs)
 
static void set_variant_abi_fdpic (struct gdbarch_tdep *var)
 
static void set_variant_scratch_registers (struct gdbarch_tdep *var)
 
static const char * frv_register_name (struct gdbarch *gdbarch, int reg)
 
static struct typefrv_register_type (struct gdbarch *gdbarch, int reg)
 
static enum register_status frv_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int reg, gdb_byte *buffer)
 
static void frv_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int reg, const gdb_byte *buffer)
 
static int frv_register_sim_regno (struct gdbarch *gdbarch, int reg)
 
static const unsigned char * frv_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenp)
 
static CORE_ADDR frv_adjust_breakpoint_address (struct gdbarch *gdbarch, CORE_ADDR bpaddr)
 
static int is_caller_saves_reg (int reg)
 
static int is_callee_saves_reg (int reg)
 
static int is_argument_reg (int reg)
 
static CORE_ADDR frv_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, struct frame_info *this_frame, struct frv_unwind_cache *info)
 
static CORE_ADDR frv_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static CORE_ADDR frv_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static struct frv_unwind_cachefrv_frame_unwind_cache (struct frame_info *this_frame, void **this_prologue_cache)
 
static void frv_extract_return_value (struct type *type, struct regcache *regcache, gdb_byte *valbuf)
 
static CORE_ADDR frv_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
 
static CORE_ADDR find_func_descr (struct gdbarch *gdbarch, CORE_ADDR entry_point)
 
static CORE_ADDR frv_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ)
 
static CORE_ADDR frv_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr)
 
static void frv_store_return_value (struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
 
static enum return_value_convention frv_return_value (struct gdbarch *gdbarch, struct value *function, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
static CORE_ADDR frv_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
 
static void frv_frame_this_id (struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
 
static struct valuefrv_frame_prev_register (struct frame_info *this_frame, void **this_prologue_cache, int regnum)
 
static CORE_ADDR frv_frame_base_address (struct frame_info *this_frame, void **this_cache)
 
static CORE_ADDR frv_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame)
 
static struct frame_id frv_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
 
static struct gdbarchfrv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 

Variables

static const int max_instrs_per_bundle = 8
 
static const int frv_instr_size = 4
 
static const struct frame_unwind frv_frame_unwind
 
static const struct frame_base frv_frame_base
 

Function Documentation

void _initialize_frv_tdep ( void  )

Definition at line 1608 of file frv-tdep.c.

References frv_gdbarch_init(), and register_gdbarch_init().

static CORE_ADDR find_func_descr ( struct gdbarch gdbarch,
CORE_ADDR  entry_point 
)
static
enum frv_abi frv_abi ( struct gdbarch gdbarch)

Definition at line 95 of file frv-tdep.c.

References gdbarch_tdep::frv_abi, and gdbarch_tdep().

Referenced by frv_push_dummy_call().

static CORE_ADDR frv_adjust_breakpoint_address ( struct gdbarch gdbarch,
CORE_ADDR  bpaddr 
)
static
static CORE_ADDR frv_analyze_prologue ( struct gdbarch gdbarch,
CORE_ADDR  pc,
struct frame_info this_frame,
struct frv_unwind_cache info 
)
static
static const unsigned char* frv_breakpoint_from_pc ( struct gdbarch gdbarch,
CORE_ADDR pcptr,
int lenp 
)
static

Definition at line 429 of file frv-tdep.c.

Referenced by frv_gdbarch_init().

static CORE_ADDR frv_convert_from_func_ptr_addr ( struct gdbarch gdbarch,
CORE_ADDR  addr,
struct target_ops targ 
)
static
static struct frame_id frv_dummy_id ( struct gdbarch gdbarch,
struct frame_info this_frame 
)
static

Definition at line 1460 of file frv-tdep.c.

References frame_id_build(), get_frame_pc(), get_frame_register_unsigned(), and sp_regnum.

Referenced by frv_gdbarch_init().

static void frv_extract_return_value ( struct type type,
struct regcache regcache,
gdb_byte valbuf 
)
static
int frv_fdpic_loadmap_addresses ( struct gdbarch gdbarch,
CORE_ADDR interp_addr,
CORE_ADDR exec_addr 
)
static CORE_ADDR frv_frame_align ( struct gdbarch gdbarch,
CORE_ADDR  sp 
)
static

Definition at line 1145 of file frv-tdep.c.

References align_down().

Referenced by frv_gdbarch_init().

static CORE_ADDR frv_frame_base_address ( struct frame_info this_frame,
void **  this_cache 
)
static

Definition at line 1434 of file frv-tdep.c.

References frv_unwind_cache::base, and frv_frame_unwind_cache().

static struct value* frv_frame_prev_register ( struct frame_info this_frame,
void **  this_prologue_cache,
int  regnum 
)
static
static void frv_frame_this_id ( struct frame_info this_frame,
void **  this_prologue_cache,
struct frame_id this_id 
)
static
static struct frv_unwind_cache* frv_frame_unwind_cache ( struct frame_info this_frame,
void **  this_prologue_cache 
)
static
static struct gdbarch* frv_gdbarch_init ( struct gdbarch_info  info,
struct gdbarch_list arches 
)
static

Definition at line 1467 of file frv-tdep.c.

References gdbarch_info::abfd, gdbarch_info::bfd_arch_info, core_addr_lessthan(), gdbarch_tdep::elf_flags, fp_regnum, frame_base_set_default(), frame_unwind_append_unwinder(), FRV_ABI_FDPIC, frv_adjust_breakpoint_address(), frv_breakpoint_from_pc(), frv_convert_from_func_ptr_addr(), frv_dummy_id(), frv_fetch_objfile_link_map(), frv_frame_align(), frv_num_pseudo_regs, frv_num_regs, frv_pseudo_register_read(), frv_pseudo_register_write(), frv_push_dummy_call(), frv_register_name(), frv_register_sim_regno(), frv_register_type(), frv_return_value(), frv_skip_main_prologue(), frv_skip_prologue(), frv_so_ops, frv_unwind_pc(), frv_unwind_sp(), gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), new_variant(), gdbarch_tdep::num_hw_breakpoints, gdbarch_tdep::num_hw_watchpoints, pc_regnum, set_gdbarch_adjust_breakpoint_address(), set_gdbarch_breakpoint_from_pc(), set_gdbarch_convert_from_func_ptr_addr(), set_gdbarch_deprecated_fp_regnum(), set_gdbarch_double_bit(), set_gdbarch_dummy_id(), set_gdbarch_fetch_tls_load_module_address(), set_gdbarch_float_bit(), set_gdbarch_frame_align(), set_gdbarch_inner_than(), set_gdbarch_int_bit(), set_gdbarch_long_bit(), set_gdbarch_long_double_bit(), set_gdbarch_long_long_bit(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_print_insn(), set_gdbarch_pseudo_register_read(), set_gdbarch_pseudo_register_write(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_register_name(), set_gdbarch_register_sim_regno(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_short_bit(), set_gdbarch_skip_main_prologue(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_unwind_pc(), set_gdbarch_unwind_sp(), set_solib_ops(), set_variant_abi_fdpic(), set_variant_num_fprs(), set_variant_num_gprs(), set_variant_scratch_registers(), and sp_regnum.

Referenced by _initialize_frv_tdep().

static enum register_status frv_pseudo_register_read ( struct gdbarch gdbarch,
struct regcache regcache,
int  reg,
gdb_byte buffer 
)
static
static void frv_pseudo_register_write ( struct gdbarch gdbarch,
struct regcache regcache,
int  reg,
const gdb_byte buffer 
)
static
static CORE_ADDR frv_push_dummy_call ( struct gdbarch gdbarch,
struct value function,
struct regcache regcache,
CORE_ADDR  bp_addr,
int  nargs,
struct value **  args,
CORE_ADDR  sp,
int  struct_return,
CORE_ADDR  struct_addr 
)
static
static const char* frv_register_name ( struct gdbarch gdbarch,
int  reg 
)
static

Definition at line 278 of file frv-tdep.c.

References frv_num_pseudo_regs, frv_num_regs, gdbarch_tdep(), and gdbarch_tdep::register_names.

Referenced by frv_gdbarch_init().

static int frv_register_sim_regno ( struct gdbarch gdbarch,
int  reg 
)
static
static struct type* frv_register_type ( struct gdbarch gdbarch,
int  reg 
)
static
static enum return_value_convention frv_return_value ( struct gdbarch gdbarch,
struct value function,
struct type valtype,
struct regcache regcache,
gdb_byte readbuf,
const gdb_byte writebuf 
)
static
static CORE_ADDR frv_skip_main_prologue ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)
static
static CORE_ADDR frv_skip_prologue ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)
static

Definition at line 984 of file frv-tdep.c.

References find_pc_line(), find_pc_partial_function(), and frv_analyze_prologue().

Referenced by frv_gdbarch_init().

static void frv_store_return_value ( struct type type,
struct regcache regcache,
const gdb_byte valbuf 
)
static

Definition at line 1327 of file frv-tdep.c.

References _, internal_error(), len, regcache_cooked_write(), and TYPE_LENGTH.

Referenced by frv_return_value().

static CORE_ADDR frv_unwind_pc ( struct gdbarch gdbarch,
struct frame_info next_frame 
)
static

Definition at line 1377 of file frv-tdep.c.

References frame_unwind_register_unsigned(), and pc_regnum.

Referenced by frv_gdbarch_init().

static CORE_ADDR frv_unwind_sp ( struct gdbarch gdbarch,
struct frame_info next_frame 
)
static

Definition at line 1449 of file frv-tdep.c.

References frame_unwind_register_unsigned(), and sp_regnum.

Referenced by frv_gdbarch_init().

static int is_argument_reg ( int  reg)
static

Definition at line 504 of file frv-tdep.c.

Referenced by frv_analyze_prologue().

static int is_callee_saves_reg ( int  reg)
static

Definition at line 495 of file frv-tdep.c.

Referenced by frv_analyze_prologue().

static int is_caller_saves_reg ( int  reg)
static

Definition at line 485 of file frv-tdep.c.

Referenced by frv_analyze_prologue().

static struct gdbarch_tdep* new_variant ( void  )
static
static void set_variant_abi_fdpic ( struct gdbarch_tdep var)
static
static void set_variant_num_fprs ( struct gdbarch_tdep var,
int  num_fprs 
)
static
static void set_variant_num_gprs ( struct gdbarch_tdep var,
int  num_gprs 
)
static
static void set_variant_scratch_registers ( struct gdbarch_tdep var)
static

Definition at line 269 of file frv-tdep.c.

References gdbarch_tdep::register_names, scr0_regnum, scr1_regnum, scr2_regnum, and scr3_regnum.

Referenced by frv_gdbarch_init().

Variable Documentation

const struct frame_base frv_frame_base
static
Initial value:
= {
frv_frame_base_address
}
static const struct frame_unwind frv_frame_unwind
Definition: frv-tdep.c:1424
static CORE_ADDR frv_frame_base_address(struct frame_info *this_frame, void **this_cache)
Definition: frv-tdep.c:1434

Definition at line 1441 of file frv-tdep.c.

const struct frame_unwind frv_frame_unwind
static
Initial value:
= {
NULL,
}
static struct value * frv_frame_prev_register(struct frame_info *this_frame, void **this_prologue_cache, int regnum)
Definition: frv-tdep.c:1416
static void frv_frame_this_id(struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
Definition: frv-tdep.c:1386
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: frame-unwind.c:170
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: frame-unwind.c:180

Definition at line 1424 of file frv-tdep.c.

const int frv_instr_size = 4
static

Definition at line 441 of file frv-tdep.c.

Referenced by frv_adjust_breakpoint_address(), and frv_analyze_prologue().

const int max_instrs_per_bundle = 8
static

Definition at line 438 of file frv-tdep.c.

Referenced by frv_adjust_breakpoint_address().