GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Functions | Variables
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 "sim/sim-frv.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"
#include "gdbarch.h"
#include "cgen-remap.h"
#include "opcodes/frv-desc.h"

Go to the source code of this file.

Classes

struct  frv_unwind_cache
 
struct  frv_gdbarch_tdep
 

Macros

#define GDB_CGEN_REMAP_PREFIX   frv
 

Typedefs

using frv_gdbarch_tdep_up = std::unique_ptr<frv_gdbarch_tdep>
 

Functions

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 frv_gdbarch_tdep_up new_variant ()
 
static void set_variant_num_gprs (frv_gdbarch_tdep *var, int num_gprs)
 
static void set_variant_num_fprs (frv_gdbarch_tdep *var, int num_fprs)
 
static void set_variant_abi_fdpic (frv_gdbarch_tdep *var)
 
static void set_variant_scratch_registers (frv_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, readable_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)
 
typedef BP_MANIPULATION (frv_break_insn)
 
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, frame_info_ptr 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 (frame_info_ptr 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, function_call_return_method return_method, 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 void frv_frame_this_id (frame_info_ptr this_frame, void **this_prologue_cache, struct frame_id *this_id)
 
static struct valuefrv_frame_prev_register (frame_info_ptr this_frame, void **this_prologue_cache, int regnum)
 
static CORE_ADDR frv_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 
static struct gdbarchfrv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
void _initialize_frv_tdep ()
 

Variables

constexpr gdb_byte frv_break_insn [] = {0xc0, 0x70, 0x00, 0x01}
 
static const struct frame_unwind frv_frame_unwind
 
static const struct frame_base frv_frame_base
 

Macro Definition Documentation

◆ GDB_CGEN_REMAP_PREFIX

#define GDB_CGEN_REMAP_PREFIX   frv

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

Typedef Documentation

◆ frv_gdbarch_tdep_up

using frv_gdbarch_tdep_up = std::unique_ptr<frv_gdbarch_tdep>

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

Function Documentation

◆ _initialize_frv_tdep()

void _initialize_frv_tdep ( )

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

References frv_gdbarch_init(), and gdbarch_register().

◆ BP_MANIPULATION()

typedef BP_MANIPULATION ( frv_break_insn )

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

References frv_instr_size, get_pc_function_start(), status, and target_read_memory().

◆ find_func_descr()

static CORE_ADDR find_func_descr ( struct gdbarch * gdbarch,
CORE_ADDR entry_point )
static

◆ frv_abi()

enum frv_abi frv_abi ( struct gdbarch * gdbarch)

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

◆ frv_analyze_prologue()

static CORE_ADDR frv_analyze_prologue ( struct gdbarch * gdbarch,
CORE_ADDR pc,
frame_info_ptr this_frame,
struct frv_unwind_cache * info )
static

◆ frv_convert_from_func_ptr_addr()

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

◆ frv_extract_return_value()

static void frv_extract_return_value ( struct type * type,
struct regcache * regcache,
gdb_byte * valbuf )
static

◆ frv_fdpic_loadmap_addresses()

int frv_fdpic_loadmap_addresses ( struct gdbarch * gdbarch,
CORE_ADDR * interp_addr,
CORE_ADDR * exec_addr )

◆ frv_frame_align()

static CORE_ADDR frv_frame_align ( struct gdbarch * gdbarch,
CORE_ADDR sp )
static

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

Referenced by frv_gdbarch_init().

◆ frv_frame_base_address()

static CORE_ADDR frv_frame_base_address ( frame_info_ptr this_frame,
void ** this_cache )
static

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

References frv_frame_unwind_cache().

◆ frv_frame_prev_register()

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

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

References frv_frame_unwind_cache(), regnum, and trad_frame_get_prev_register().

◆ frv_frame_this_id()

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

◆ frv_frame_unwind_cache()

static struct frv_unwind_cache * frv_frame_unwind_cache ( frame_info_ptr this_frame,
void ** this_prologue_cache )
static

◆ frv_gdbarch_init()

static struct gdbarch * frv_gdbarch_init ( struct gdbarch_info info,
struct gdbarch_list * arches )
static

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

References arches, core_addr_lessthan(), fp_regnum, frame_base_set_default(), frame_unwind_append_unwinder(), FRV_ABI_FDPIC, frv_convert_from_func_ptr_addr(), frv_fetch_objfile_link_map(), frv_frame_align(), frv_frame_base, frv_frame_unwind, 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, gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch::info(), new_variant(), frv_gdbarch_tdep::num_hw_breakpoints, frv_gdbarch_tdep::num_hw_watchpoints, pc_regnum, set_gdbarch_adjust_breakpoint_address(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_convert_from_func_ptr_addr(), set_gdbarch_deprecated_fp_regnum(), set_gdbarch_double_bit(), 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_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_so_ops(), set_gdbarch_sp_regnum(), set_gdbarch_sw_breakpoint_from_kind(), set_variant_abi_fdpic(), set_variant_num_fprs(), set_variant_num_gprs(), set_variant_scratch_registers(), and sp_regnum.

Referenced by _initialize_frv_tdep().

◆ frv_pseudo_register_read()

static enum register_status frv_pseudo_register_read ( struct gdbarch * gdbarch,
readable_regcache * regcache,
int reg,
gdb_byte * buffer )
static

◆ frv_pseudo_register_write()

static void frv_pseudo_register_write ( struct gdbarch * gdbarch,
struct regcache * regcache,
int reg,
const gdb_byte * buffer )
static

◆ frv_push_dummy_call()

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,
function_call_return_method return_method,
CORE_ADDR struct_addr )
static

◆ frv_register_name()

static const char * frv_register_name ( struct gdbarch * gdbarch,
int reg )
static

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

References frv_gdbarch_tdep::register_names.

Referenced by frv_gdbarch_init().

◆ frv_register_sim_regno()

static int frv_register_sim_regno ( struct gdbarch * gdbarch,
int reg )
static

◆ frv_register_type()

static struct type * frv_register_type ( struct gdbarch * gdbarch,
int reg )
static

◆ frv_return_value()

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

◆ frv_skip_main_prologue()

static CORE_ADDR frv_skip_main_prologue ( struct gdbarch * gdbarch,
CORE_ADDR pc )
static

◆ frv_skip_prologue()

static CORE_ADDR frv_skip_prologue ( struct gdbarch * gdbarch,
CORE_ADDR pc )
static

◆ frv_store_return_value()

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

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

References regcache::cooked_write(), and type::length().

Referenced by frv_return_value().

◆ is_argument_reg()

static int is_argument_reg ( int reg)
static

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

Referenced by frv_analyze_prologue().

◆ is_callee_saves_reg()

static int is_callee_saves_reg ( int reg)
static

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

Referenced by frv_analyze_prologue().

◆ is_caller_saves_reg()

static int is_caller_saves_reg ( int reg)
static

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

Referenced by frv_analyze_prologue().

◆ new_variant()

static frv_gdbarch_tdep_up new_variant ( )
static

◆ set_variant_abi_fdpic()

static void set_variant_abi_fdpic ( frv_gdbarch_tdep * var)
static

◆ set_variant_num_fprs()

static void set_variant_num_fprs ( frv_gdbarch_tdep * var,
int num_fprs )
static

◆ set_variant_num_gprs()

static void set_variant_num_gprs ( frv_gdbarch_tdep * var,
int num_gprs )
static

◆ set_variant_scratch_registers()

static void set_variant_scratch_registers ( frv_gdbarch_tdep * var)
static

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

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

Referenced by frv_gdbarch_init().

Variable Documentation

◆ frv_break_insn

constexpr gdb_byte frv_break_insn[] = {0xc0, 0x70, 0x00, 0x01}
constexpr

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

◆ frv_frame_base

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

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

Referenced by frv_gdbarch_init().

◆ frv_frame_unwind

const struct frame_unwind frv_frame_unwind
static
Initial value:
= {
"frv prologue",
NULL,
}
int default_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache)
enum unwind_stop_reason default_frame_unwind_stop_reason(frame_info_ptr this_frame, void **this_cache)
@ NORMAL_FRAME
Definition frame.h:187
static struct value * frv_frame_prev_register(frame_info_ptr this_frame, void **this_prologue_cache, int regnum)
Definition frv-tdep.c:1400
static void frv_frame_this_id(frame_info_ptr this_frame, void **this_prologue_cache, struct frame_id *this_id)
Definition frv-tdep.c:1370

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

Referenced by frv_gdbarch_init().