GDB (xrefs)
|
#include "defs.h"
#include "arch-utils.h"
#include "dis-asm.h"
#include "dwarf2.h"
#include "dwarf2/frame.h"
#include "frame.h"
#include "frame-base.h"
#include "frame-unwind.h"
#include "gdbcore.h"
#include "gdbtypes.h"
#include "inferior.h"
#include "symtab.h"
#include "objfiles.h"
#include "osabi.h"
#include "regcache.h"
#include "target.h"
#include "target-descriptions.h"
#include "value.h"
#include "sparc-tdep.h"
#include "sparc-ravenscar-thread.h"
#include <algorithm>
Go to the source code of this file.
Macros | |
#define | BIAS 2047 |
#define | X_OP(i) (((i) >> 30) & 0x3) |
#define | X_RD(i) (((i) >> 25) & 0x1f) |
#define | X_A(i) (((i) >> 29) & 1) |
#define | X_COND(i) (((i) >> 25) & 0xf) |
#define | X_OP2(i) (((i) >> 22) & 0x7) |
#define | X_IMM22(i) ((i) & 0x3fffff) |
#define | X_OP3(i) (((i) >> 19) & 0x3f) |
#define | X_RS1(i) (((i) >> 14) & 0x1f) |
#define | X_RS2(i) ((i) & 0x1f) |
#define | X_I(i) (((i) >> 13) & 1) |
#define | X_DISP22(i) ((X_IMM22 (i) ^ 0x200000) - 0x200000) |
#define | X_DISP19(i) ((((i) & 0x7ffff) ^ 0x40000) - 0x40000) |
#define | X_DISP10(i) ((((((i) >> 11) && 0x300) | (((i) >> 5) & 0xff)) ^ 0x200) - 0x200) |
#define | X_SIMM13(i) ((((i) & 0x1fff) ^ 0x1000) - 0x1000) |
#define | X_RETTURN(i) ((X_OP (i) == 0x2) && (X_OP3 (i) == 0x39)) |
#define | SPARC32_FPU_REGISTERS |
#define | SPARC32_CP0_REGISTERS "y", "psr", "wim", "tbr", "pc", "npc", "fsr", "csr" |
#define | SPARC32_NUM_REGS ARRAY_SIZE (sparc32_register_names) |
#define | SPARC32_NUM_PSEUDO_REGS ARRAY_SIZE (sparc32_pseudo_register_names) |
Functions | |
unsigned long | sparc_fetch_instruction (CORE_ADDR pc) |
static int | sparc_is_unimp_insn (CORE_ADDR pc) |
int | sparc_is_annulled_branch_insn (CORE_ADDR pc) |
ULONGEST | sparc_fetch_wcookie (struct gdbarch *gdbarch) |
static int | sparc_integral_or_pointer_p (const struct type *type) |
static int | sparc_floating_p (const struct type *type) |
static int | sparc_complex_floating_p (const struct type *type) |
static int | sparc_structure_or_union_p (const struct type *type) |
static bool | sparc_structure_return_p (const struct type *type) |
static bool | sparc_arg_by_memory_p (const struct type *type) |
static const char * | sparc32_pseudo_register_name (struct gdbarch *gdbarch, int regnum) |
static const char * | sparc32_register_name (struct gdbarch *gdbarch, int regnum) |
static struct type * | sparc_psr_type (struct gdbarch *gdbarch) |
static struct type * | sparc_fsr_type (struct gdbarch *gdbarch) |
static struct type * | sparc32_pseudo_register_type (struct gdbarch *gdbarch, int regnum) |
static struct type * | sparc32_register_type (struct gdbarch *gdbarch, int regnum) |
static enum register_status | sparc32_pseudo_register_read (struct gdbarch *gdbarch, readable_regcache *regcache, int regnum, gdb_byte *buf) |
static void | sparc32_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, const gdb_byte *buf) |
int | sparc_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc) |
static CORE_ADDR | sparc32_frame_align (struct gdbarch *gdbarch, CORE_ADDR address) |
static CORE_ADDR | sparc32_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp, CORE_ADDR funcaddr, struct value **args, int nargs, struct type *value_type, CORE_ADDR *real_pc, CORE_ADDR *bp_addr, struct regcache *regcache) |
static CORE_ADDR | sparc32_store_arguments (struct regcache *regcache, int nargs, struct value **args, CORE_ADDR sp, function_call_return_method return_method, CORE_ADDR struct_addr) |
static CORE_ADDR | sparc32_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) |
typedef | BP_MANIPULATION (sparc_break_insn) |
static CORE_ADDR | sparc_skip_stack_check (const CORE_ADDR start_pc) |
void | sparc_record_save_insn (struct sparc_frame_cache *cache) |
CORE_ADDR | sparc_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR current_pc, struct sparc_frame_cache *cache) |
static CORE_ADDR | sparc32_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) |
struct sparc_frame_cache * | sparc_frame_cache (frame_info_ptr this_frame, void **this_cache) |
static int | sparc32_struct_return_from_sym (struct symbol *sym) |
struct sparc_frame_cache * | sparc32_frame_cache (frame_info_ptr this_frame, void **this_cache) |
static void | sparc32_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id) |
static struct value * | sparc32_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum) |
static CORE_ADDR | sparc32_frame_base_address (frame_info_ptr this_frame, void **this_cache) |
static struct frame_id | sparc_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame) |
static void | sparc32_extract_return_value (struct type *type, struct regcache *regcache, gdb_byte *valbuf) |
static void | sparc32_store_return_value (struct type *type, struct regcache *regcache, const gdb_byte *valbuf) |
static enum return_value_convention | sparc32_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, struct value **read_value, const gdb_byte *writebuf) |
static int | sparc32_stabs_argument_has_addr (struct gdbarch *gdbarch, struct type *type) |
static int | sparc32_dwarf2_struct_return_p (frame_info_ptr this_frame) |
static void | sparc32_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, struct dwarf2_frame_state_reg *reg, frame_info_ptr this_frame) |
static bool | sparc_execute_dwarf_cfa_vendor_op (struct gdbarch *gdbarch, gdb_byte op, struct dwarf2_frame_state *fs) |
static CORE_ADDR | sparc_analyze_control_transfer (struct regcache *regcache, CORE_ADDR pc, CORE_ADDR *npc) |
static CORE_ADDR | sparc_step_trap (frame_info_ptr frame, unsigned long insn) |
static std::vector< CORE_ADDR > | sparc_software_single_step (struct regcache *regcache) |
static void | sparc_write_pc (struct regcache *regcache, CORE_ADDR pc) |
static void | sparc_iterate_over_regset_sections (struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache) |
static int | validate_tdesc_registers (const struct target_desc *tdesc, struct tdesc_arch_data *tdesc_data, const char *feature_name, const char *const register_names[], unsigned int registers_num, unsigned int reg_start) |
static struct gdbarch * | sparc32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) |
void | sparc_supply_rwindow (struct regcache *regcache, CORE_ADDR sp, int regnum) |
void | sparc_collect_rwindow (const struct regcache *regcache, CORE_ADDR sp, int regnum) |
void | sparc32_supply_gregset (const struct sparc_gregmap *gregmap, struct regcache *regcache, int regnum, const void *gregs) |
void | sparc32_collect_gregset (const struct sparc_gregmap *gregmap, const struct regcache *regcache, int regnum, void *gregs) |
void | sparc32_supply_fpregset (const struct sparc_fpregmap *fpregmap, struct regcache *regcache, int regnum, const void *fpregs) |
void | sparc32_collect_fpregset (const struct sparc_fpregmap *fpregmap, const struct regcache *regcache, int regnum, void *fpregs) |
void | _initialize_sparc_tdep () |
Variables | |
static const char *const | sparc_core_register_names [] |
static const char *const | sparc32_fpu_register_names [] |
static const char *const | sparc32_cp0_register_names [] |
static const char *const | sparc32_register_names [] |
static const char *const | sparc32_pseudo_register_names [] |
constexpr gdb_byte | sparc_break_insn [] = { 0x91, 0xd0, 0x20, 0x01 } |
static const struct frame_unwind | sparc32_frame_unwind |
static const struct frame_base | sparc32_frame_base |
const struct sparc_gregmap | sparc32_sunos4_gregmap |
const struct sparc_fpregmap | sparc32_sunos4_fpregmap |
const struct sparc_fpregmap | sparc32_bsd_fpregmap |
#define BIAS 2047 |
Definition at line 68 of file sparc-tdep.c.
Referenced by sparc64_linux_sigframe_init(), sparc64_linux_step_trap(), sparc64_push_dummy_call(), sparc64_sol2_sigtramp_frame_cache(), sparc64_store_arguments(), sparc64fbsd_sigtramp_frame_cache(), sparc64nbsd_sigcontext_frame_cache(), sparc64nbsd_sigcontext_saved_regs(), sparc64nbsd_supply_pcb(), sparc64obsd_frame_cache(), sparc64obsd_supply_pcb(), sparc64obsd_trapframe_cache(), sparc_analyze_prologue(), sparc_collect_rwindow(), sparc_dummy_id(), sparc_frame_cache(), and sparc_supply_rwindow().
#define SPARC32_CP0_REGISTERS "y", "psr", "wim", "tbr", "pc", "npc", "fsr", "csr" |
Definition at line 359 of file sparc-tdep.c.
#define SPARC32_FPU_REGISTERS |
Definition at line 354 of file sparc-tdep.c.
#define SPARC32_NUM_PSEUDO_REGS ARRAY_SIZE (sparc32_pseudo_register_names) |
Definition at line 392 of file sparc-tdep.c.
Referenced by sparc32_gdbarch_init(), and sparc32_pseudo_register_name().
#define SPARC32_NUM_REGS ARRAY_SIZE (sparc32_register_names) |
Definition at line 380 of file sparc-tdep.c.
Referenced by sparc32_gdbarch_init().
#define X_A | ( | i | ) | (((i) >> 29) & 1) |
Definition at line 73 of file sparc-tdep.c.
Referenced by sparc_analyze_control_transfer(), and sparc_is_annulled_branch_insn().
#define X_COND | ( | i | ) | (((i) >> 25) & 0xf) |
Definition at line 74 of file sparc-tdep.c.
Referenced by sparc_analyze_control_transfer(), and sparc_skip_stack_check().
#define X_DISP10 | ( | i | ) | ((((((i) >> 11) && 0x300) | (((i) >> 5) & 0xff)) ^ 0x200) - 0x200) |
Definition at line 84 of file sparc-tdep.c.
Referenced by sparc_analyze_control_transfer().
#define X_DISP19 | ( | i | ) | ((((i) & 0x7ffff) ^ 0x40000) - 0x40000) |
Definition at line 83 of file sparc-tdep.c.
Referenced by sparc_analyze_control_transfer().
#define X_DISP22 | ( | i | ) | ((X_IMM22 (i) ^ 0x200000) - 0x200000) |
Definition at line 82 of file sparc-tdep.c.
Referenced by sparc_analyze_control_transfer().
#define X_I | ( | i | ) | (((i) >> 13) & 1) |
Definition at line 80 of file sparc-tdep.c.
Referenced by sparc32_skip_prologue(), sparc_analyze_prologue(), and sparc_skip_stack_check().
#define X_IMM22 | ( | i | ) | ((i) & 0x3fffff) |
Definition at line 76 of file sparc-tdep.c.
#define X_OP | ( | i | ) | (((i) >> 30) & 0x3) |
Definition at line 71 of file sparc-tdep.c.
Referenced by sparc32_skip_prologue(), sparc_analyze_control_transfer(), sparc_analyze_prologue(), sparc_is_annulled_branch_insn(), and sparc_skip_stack_check().
#define X_OP2 | ( | i | ) | (((i) >> 22) & 0x7) |
Definition at line 75 of file sparc-tdep.c.
Referenced by sparc_analyze_control_transfer(), sparc_analyze_prologue(), sparc_is_annulled_branch_insn(), and sparc_skip_stack_check().
#define X_OP3 | ( | i | ) | (((i) >> 19) & 0x3f) |
Definition at line 77 of file sparc-tdep.c.
Referenced by sparc32_skip_prologue(), sparc_analyze_control_transfer(), sparc_analyze_prologue(), and sparc_skip_stack_check().
#define X_RD | ( | i | ) | (((i) >> 25) & 0x1f) |
Definition at line 72 of file sparc-tdep.c.
Referenced by sparc32_skip_prologue(), sparc_analyze_prologue(), and sparc_skip_stack_check().
Definition at line 88 of file sparc-tdep.c.
Referenced by sparc_stack_frame_destroyed_p().
#define X_RS1 | ( | i | ) | (((i) >> 14) & 0x1f) |
Definition at line 78 of file sparc-tdep.c.
Referenced by sparc32_skip_prologue(), sparc_analyze_prologue(), and sparc_skip_stack_check().
#define X_RS2 | ( | i | ) | ((i) & 0x1f) |
Definition at line 79 of file sparc-tdep.c.
Referenced by sparc_analyze_prologue(), and sparc_skip_stack_check().
#define X_SIMM13 | ( | i | ) | ((((i) & 0x1fff) ^ 0x1000) - 0x1000) |
Definition at line 85 of file sparc-tdep.c.
Referenced by sparc32_skip_prologue(), sparc_analyze_prologue(), and sparc_skip_stack_check().
void _initialize_sparc_tdep | ( | ) |
Definition at line 2269 of file sparc-tdep.c.
References gdbarch_register(), and sparc32_gdbarch_init().
typedef BP_MANIPULATION | ( | sparc_break_insn | ) |
Definition at line 746 of file sparc-tdep.c.
References sparc_frame_cache::base, sparc_frame_cache::copied_regs_mask, FRAME_OBSTACK_ZALLOC, sparc_frame_cache::frame_offset, sparc_frame_cache::frameless_p, sparc_frame_cache::pc, sparc_frame_cache::saved_regs_mask, and sparc_frame_cache::struct_return_p.
void sparc32_collect_fpregset | ( | const struct sparc_fpregmap * | fpregmap, |
const struct regcache * | regcache, | ||
int | regnum, | ||
void * | fpregs ) |
Definition at line 2220 of file sparc-tdep.c.
References sparc_fpregmap::r_f0_offset, sparc_fpregmap::r_fsr_offset, reg_buffer::raw_collect(), regnum, SPARC32_FSR_REGNUM, and SPARC_F0_REGNUM.
Referenced by _initialize_sparc_nat(), fill_fpregset(), sparc32_linux_collect_core_fpregset(), sparc32_sol2_collect_core_fpregset(), and sparc64nbsd_collect_fpregset().
void sparc32_collect_gregset | ( | const struct sparc_gregmap * | gregmap, |
const struct regcache * | regcache, | ||
int | regnum, | ||
void * | gregs ) |
Definition at line 2150 of file sparc-tdep.c.
References sparc_gregmap::r_g1_offset, sparc_gregmap::r_l0_offset, sparc_gregmap::r_npc_offset, sparc_gregmap::r_pc_offset, sparc_gregmap::r_psr_offset, sparc_gregmap::r_y_offset, reg_buffer::raw_collect(), regnum, SPARC32_NPC_REGNUM, SPARC32_PC_REGNUM, SPARC32_PSR_REGNUM, SPARC32_Y_REGNUM, SPARC_G1_REGNUM, SPARC_I7_REGNUM, SPARC_L0_REGNUM, and SPARC_O7_REGNUM.
Referenced by _initialize_sparc_nat(), fill_gregset(), sparc32_linux_collect_core_gregset(), sparc32_sol2_collect_core_gregset(), and sparc64nbsd_collect_gregset().
|
static |
Definition at line 1563 of file sparc-tdep.c.
References DWARF2_FRAME_REG_CFA, DWARF2_FRAME_REG_RA_OFFSET, DWARF2_FRAME_REG_SAME_VALUE, dwarf2_frame_state_reg::how, dwarf2_frame_state_reg::loc, dwarf2_frame_state_reg::offset, regnum, sparc32_dwarf2_struct_return_p(), SPARC32_NPC_REGNUM, SPARC32_PC_REGNUM, SPARC_G0_REGNUM, and SPARC_SP_REGNUM.
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 1552 of file sparc-tdep.c.
References find_pc_function(), get_frame_address_in_block(), and sparc32_struct_return_from_sym().
Referenced by sparc32_dwarf2_frame_init_reg().
|
static |
Definition at line 1394 of file sparc-tdep.c.
References type::code(), readable_regcache::cooked_read(), type::length(), sparc_complex_floating_p(), SPARC_F0_REGNUM, SPARC_F1_REGNUM, SPARC_F2_REGNUM, SPARC_F3_REGNUM, SPARC_F4_REGNUM, SPARC_F5_REGNUM, SPARC_F6_REGNUM, SPARC_F7_REGNUM, sparc_floating_p(), sparc_integral_or_pointer_p(), SPARC_O0_REGNUM, SPARC_O1_REGNUM, and sparc_structure_return_p().
Referenced by sparc32_return_value().
|
static |
Definition at line 576 of file sparc-tdep.c.
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 1362 of file sparc-tdep.c.
References sparc_frame_cache::base, and sparc32_frame_cache().
struct sparc_frame_cache * sparc32_frame_cache | ( | frame_info_ptr | this_frame, |
void ** | this_cache ) |
Definition at line 1242 of file sparc-tdep.c.
References sparc_frame_cache::copied_regs_mask, find_pc_function(), get_frame_register_unsigned(), sparc_frame_cache::pc, regnum, sparc32_struct_return_from_sym(), sparc_frame_cache(), SPARC_I7_REGNUM, sparc_is_unimp_insn(), SPARC_O7_REGNUM, and sparc_frame_cache::struct_return_p.
Referenced by sparc32_frame_base_address(), sparc32_frame_prev_register(), and sparc32_frame_this_id().
|
static |
Definition at line 1292 of file sparc-tdep.c.
References sparc_frame_cache::base, sparc_frame_cache::copied_regs_mask, frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_register(), sparc_frame_cache::frameless_p, get_frame_arch(), get_frame_memory_unsigned(), get_frame_register_unsigned(), sparc_frame_cache::pc, regnum, sparc_frame_cache::saved_regs_mask, sparc32_frame_cache(), SPARC32_NPC_REGNUM, SPARC32_PC_REGNUM, sparc_fetch_wcookie(), SPARC_I0_REGNUM, SPARC_I7_REGNUM, SPARC_L0_REGNUM, SPARC_O0_REGNUM, SPARC_O7_REGNUM, and sparc_frame_cache::struct_return_p.
|
static |
Definition at line 1278 of file sparc-tdep.c.
References sparc_frame_cache::base, frame_id_build(), sparc_frame_cache::pc, and sparc32_frame_cache().
|
static |
Definition at line 1811 of file sparc-tdep.c.
References arches, core_addr_lessthan(), sparc_gdbarch_tdep::cp0_register_names, sparc_gdbarch_tdep::cp0_registers_num, dwarf2_frame_set_init_reg(), floatformats_ieee_quad, sparc_gdbarch_tdep::fpu_register_names, sparc_gdbarch_tdep::fpu_registers_num, frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), registry< T >::get(), sparc_gdbarch_tdep::gregset, sparc_gdbarch_tdep::npc_regnum, ON_STACK, sparc_gdbarch_tdep::pc_regnum, register_sparc_ravenscar_ops(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_call_dummy_location(), set_gdbarch_dummy_id(), set_gdbarch_execute_dwarf_cfa_vendor_op(), set_gdbarch_fp0_regnum(), set_gdbarch_frame_align(), set_gdbarch_frame_args_skip(), set_gdbarch_inner_than(), set_gdbarch_iterate_over_regset_sections(), set_gdbarch_long_double_bit(), set_gdbarch_long_double_format(), 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_push_dummy_call(), set_gdbarch_push_dummy_code(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_return_value_as_value(), set_gdbarch_skip_prologue(), set_gdbarch_software_single_step(), set_gdbarch_sp_regnum(), set_gdbarch_stabs_argument_has_addr(), set_gdbarch_sw_breakpoint_from_kind(), set_gdbarch_wchar_bit(), set_gdbarch_wchar_signed(), set_gdbarch_write_pc(), set_tdesc_pseudo_register_name(), set_tdesc_pseudo_register_type(), sparc32_cp0_register_names, sparc32_dwarf2_frame_init_reg(), sparc32_fpu_register_names, sparc32_frame_align(), sparc32_frame_base, sparc32_frame_unwind, SPARC32_NPC_REGNUM, SPARC32_NUM_PSEUDO_REGS, SPARC32_NUM_REGS, SPARC32_PC_REGNUM, sparc32_pseudo_register_name(), sparc32_pseudo_register_read(), sparc32_pseudo_register_type(), sparc32_pseudo_register_write(), sparc32_push_dummy_call(), sparc32_push_dummy_code(), sparc32_register_name(), sparc32_register_type(), sparc32_return_value(), sparc32_skip_prologue(), sparc32_stabs_argument_has_addr(), sparc_core_register_names, sparc_dummy_id(), sparc_execute_dwarf_cfa_vendor_op(), SPARC_F0_REGNUM, SPARC_G0_REGNUM, sparc_iterate_over_regset_sections(), sparc_software_single_step(), SPARC_SP_REGNUM, sparc_step_trap(), sparc_write_pc(), sparc_gdbarch_tdep::step_trap, tdesc_data, tdesc_data_alloc(), tdesc_has_registers(), tdesc_use_registers(), and validate_tdesc_registers().
Referenced by _initialize_sparc_tdep().
|
static |
Definition at line 397 of file sparc-tdep.c.
References gdbarch_num_regs(), regnum, SPARC32_NUM_PSEUDO_REGS, and sparc32_pseudo_register_names.
Referenced by sparc32_gdbarch_init(), and sparc32_register_name().
|
static |
Definition at line 522 of file sparc-tdep.c.
References gdbarch_num_regs(), readable_regcache::raw_read(), regnum, SPARC32_D0_REGNUM, SPARC32_D30_REGNUM, SPARC_F0_REGNUM, and status.
Referenced by sparc32_gdbarch_init().
Definition at line 480 of file sparc-tdep.c.
References builtin_type::builtin_double, builtin_type(), gdbarch_num_regs(), regnum, SPARC32_D0_REGNUM, and SPARC32_D30_REGNUM.
Referenced by sparc32_gdbarch_init(), and sparc32_register_type().
|
static |
Definition at line 539 of file sparc-tdep.c.
References gdbarch_num_regs(), regcache::raw_write(), regnum, SPARC32_D0_REGNUM, SPARC32_D30_REGNUM, and SPARC_F0_REGNUM.
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 710 of file sparc-tdep.c.
References regcache_cooked_write_unsigned(), return_method_struct, sparc32_store_arguments(), SPARC_O7_REGNUM, and SPARC_SP_REGNUM.
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 583 of file sparc-tdep.c.
References gdbarch_byte_order(), type::length(), store_unsigned_integer(), using_struct_return(), and write_memory().
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 408 of file sparc-tdep.c.
References gdbarch_num_regs(), gdbarch_target_desc(), regnum, sparc32_pseudo_register_name(), sparc32_register_names, tdesc_has_registers(), and tdesc_register_name().
Referenced by sparc32_gdbarch_init().
Definition at line 495 of file sparc-tdep.c.
References builtin_type::builtin_data_ptr, builtin_type::builtin_float, builtin_type::builtin_func_ptr, builtin_type::builtin_int32, builtin_type(), gdbarch_num_regs(), gdbarch_target_desc(), regnum, SPARC32_FSR_REGNUM, SPARC32_NPC_REGNUM, SPARC32_PC_REGNUM, sparc32_pseudo_register_type(), SPARC32_PSR_REGNUM, SPARC_F0_REGNUM, SPARC_F31_REGNUM, SPARC_FP_REGNUM, sparc_fsr_type(), sparc_psr_type(), SPARC_SP_REGNUM, tdesc_has_registers(), and tdesc_register_type().
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 1497 of file sparc-tdep.c.
References value::allocate(), gdbarch_byte_order(), type::length(), read_memory_unsigned_integer(), regcache_cooked_read_unsigned(), RETURN_VALUE_ABI_PRESERVES_ADDRESS, RETURN_VALUE_REGISTER_CONVENTION, sparc32_extract_return_value(), sparc32_store_return_value(), SPARC_SP_REGNUM, sparc_structure_return_p(), value_at_non_lval(), and write_memory().
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 1118 of file sparc-tdep.c.
References sparc_frame_cache::copied_regs_mask, find_pc_partial_function(), regnum, skip_prologue_using_sal(), sparc_analyze_prologue(), sparc_fetch_instruction(), SPARC_FP_REGNUM, SPARC_I0_REGNUM, SPARC_I5_REGNUM, SPARC_O0_REGNUM, SPARC_O5_REGNUM, X_I, X_OP, X_OP3, X_RD, X_RS1, and X_SIMM13.
Referenced by sparc32_gdbarch_init().
Definition at line 1544 of file sparc-tdep.c.
References type::length(), sparc_complex_floating_p(), sparc_floating_p(), and sparc_structure_or_union_p().
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 610 of file sparc-tdep.c.
References reg_buffer::arch(), regcache::cooked_write(), gdbarch_byte_order(), type::length(), lookup_pointer_type(), regnum, return_method_struct, sparc_arg_by_memory_p(), sparc_floating_p(), SPARC_O0_REGNUM, store_unsigned_integer(), value_from_pointer(), and write_memory().
Referenced by sparc32_push_dummy_call().
|
static |
Definition at line 1448 of file sparc-tdep.c.
References regcache::cooked_write(), type::length(), sparc_complex_floating_p(), SPARC_F0_REGNUM, SPARC_F1_REGNUM, SPARC_F2_REGNUM, SPARC_F3_REGNUM, SPARC_F4_REGNUM, SPARC_F5_REGNUM, SPARC_F6_REGNUM, SPARC_F7_REGNUM, sparc_floating_p(), sparc_integral_or_pointer_p(), SPARC_O0_REGNUM, SPARC_O1_REGNUM, and sparc_structure_return_p().
Referenced by sparc32_return_value().
|
static |
Definition at line 1225 of file sparc-tdep.c.
References check_typedef(), code, type::code(), type::length(), sparc_floating_p(), sparc_structure_or_union_p(), type::target_type(), and symbol::type().
Referenced by sparc32_dwarf2_struct_return_p(), and sparc32_frame_cache().
void sparc32_supply_fpregset | ( | const struct sparc_fpregmap * | fpregmap, |
struct regcache * | regcache, | ||
int | regnum, | ||
const void * | fpregs ) |
Definition at line 2201 of file sparc-tdep.c.
References sparc_fpregmap::r_f0_offset, sparc_fpregmap::r_fsr_offset, reg_buffer::raw_supply(), regnum, SPARC32_FSR_REGNUM, and SPARC_F0_REGNUM.
Referenced by _initialize_sparc_nat(), sparc32_linux_supply_core_fpregset(), sparc32_sol2_supply_core_fpregset(), sparc32nbsd_supply_fpregset(), sparc32nbsd_supply_gregset(), sparc64nbsd_supply_fpregset(), and supply_fpregset().
void sparc32_supply_gregset | ( | const struct sparc_gregmap * | gregmap, |
struct regcache * | regcache, | ||
int | regnum, | ||
const void * | gregs ) |
Definition at line 2089 of file sparc-tdep.c.
References sparc_gregmap::r_g1_offset, sparc_gregmap::r_l0_offset, sparc_gregmap::r_npc_offset, sparc_gregmap::r_pc_offset, sparc_gregmap::r_psr_offset, sparc_gregmap::r_y_offset, reg_buffer::raw_supply(), regcache_cooked_read_unsigned(), regnum, SPARC32_NPC_REGNUM, SPARC32_PC_REGNUM, SPARC32_PSR_REGNUM, SPARC32_Y_REGNUM, SPARC_G0_REGNUM, SPARC_G1_REGNUM, SPARC_I7_REGNUM, SPARC_L0_REGNUM, SPARC_O7_REGNUM, SPARC_SP_REGNUM, and sparc_supply_rwindow().
Referenced by _initialize_sparc_nat(), sparc32_linux_supply_core_gregset(), sparc32_sol2_supply_core_gregset(), sparc32nbsd_supply_gregset(), sparc64nbsd_supply_gregset(), and supply_gregset().
|
static |
Definition at line 1627 of file sparc-tdep.c.
References reg_buffer::arch(), symbol::arch, get_current_frame(), sparc_fetch_instruction(), sparc_gdbarch_tdep::step_trap, X_A, X_COND, X_DISP10, X_DISP19, X_DISP22, X_OP, X_OP2, and X_OP3.
Referenced by sparc_software_single_step().
CORE_ADDR sparc_analyze_prologue | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc, | ||
CORE_ADDR | current_pc, | ||
struct sparc_frame_cache * | cache ) |
Definition at line 983 of file sparc-tdep.c.
References BIAS, sparc_frame_cache::copied_regs_mask, sparc_frame_cache::frame_offset, sparc_frame_cache::frameless_p, in_plt_section(), sparc_frame_cache::pc, sparc_gdbarch_tdep::plt_entry_size, regnum, sparc_frame_cache::saved_regs_mask, sparc_fetch_instruction(), SPARC_FP_REGNUM, SPARC_G0_REGNUM, SPARC_I7_REGNUM, SPARC_L0_REGNUM, SPARC_O7_REGNUM, sparc_record_save_insn(), sparc_skip_stack_check(), SPARC_SP_REGNUM, X_I, X_OP, X_OP2, X_OP3, X_RD, X_RS1, X_RS2, and X_SIMM13.
Referenced by sparc32_skip_prologue(), sparc64_skip_prologue(), and sparc_frame_cache().
|
static |
Definition at line 328 of file sparc-tdep.c.
References check_typedef(), type::code(), type::is_vector(), type::length(), sparc_complex_floating_p(), sparc_floating_p(), sparc_structure_or_union_p(), and type::target_type().
Referenced by sparc32_store_arguments().
void sparc_collect_rwindow | ( | const struct regcache * | regcache, |
CORE_ADDR | sp, | ||
int | regnum ) |
Definition at line 2015 of file sparc-tdep.c.
References reg_buffer::arch(), BIAS, extract_unsigned_integer(), gdbarch_byte_order(), gdbarch_ptr_bit(), inferior_ptid, regcache::ptid(), reg_buffer::raw_collect(), regnum, sparc_fetch_wcookie(), SPARC_I7_REGNUM, SPARC_L0_REGNUM, SPARC_SP_REGNUM, store_unsigned_integer(), and target_write_memory().
Referenced by sparc32obsd_collect_uthread(), sparc64obsd_collect_uthread(), and sparc_store_inferior_registers().
|
static |
Definition at line 258 of file sparc-tdep.c.
References type::code(), and type::length().
Referenced by sparc32_extract_return_value(), sparc32_stabs_argument_has_addr(), sparc32_store_return_value(), and sparc_arg_by_memory_p().
|
static |
Definition at line 1379 of file sparc-tdep.c.
References BIAS, frame_id_build(), get_frame_pc(), get_frame_register_unsigned(), and SPARC_SP_REGNUM.
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 1596 of file sparc-tdep.c.
References DWARF2_FRAME_REG_SAVED_OFFSET, DWARF2_FRAME_REG_SAVED_REG, register_size(), and size.
Referenced by sparc32_gdbarch_init().
unsigned long sparc_fetch_instruction | ( | CORE_ADDR | pc | ) |
Definition at line 94 of file sparc-tdep.c.
References target_read_memory().
Referenced by sparc32_skip_prologue(), sparc32obsd_pc_in_sigtramp(), sparc64obsd_pc_in_sigtramp(), sparc_analyze_control_transfer(), sparc_analyze_prologue(), sparc_is_annulled_branch_insn(), sparc_is_unimp_insn(), sparc_skip_stack_check(), and sparc_stack_frame_destroyed_p().
ULONGEST sparc_fetch_wcookie | ( | struct gdbarch * | gdbarch | ) |
Definition at line 185 of file sparc-tdep.c.
References current_inferior(), extract_unsigned_integer(), gdbarch_byte_order(), TARGET_OBJECT_WCOOKIE, target_read(), and inferior::top_target().
Referenced by sparc32_frame_prev_register(), sparc32nbsd_sigcontext_saved_regs(), sparc64_frame_prev_register(), sparc64nbsd_sigcontext_saved_regs(), sparc_collect_rwindow(), and sparc_supply_rwindow().
|
static |
Definition at line 239 of file sparc-tdep.c.
References type::code(), and type::length().
Referenced by sparc32_extract_return_value(), sparc32_stabs_argument_has_addr(), sparc32_store_arguments(), sparc32_store_return_value(), sparc32_struct_return_from_sym(), sparc_arg_by_memory_p(), and sparc_structure_return_p().
struct sparc_frame_cache * sparc_frame_cache | ( | frame_info_ptr | this_frame, |
void ** | this_cache ) |
Definition at line 1185 of file sparc-tdep.c.
References sparc_frame_cache::base, BIAS, sparc_frame_cache::frame_offset, sparc_frame_cache::frameless_p, get_frame_arch(), get_frame_func(), get_frame_pc(), get_frame_register_unsigned(), sparc_frame_cache::pc, sparc_analyze_prologue(), SPARC_FP_REGNUM, and SPARC_SP_REGNUM.
Referenced by sparc32_frame_cache(), sparc32_sol2_sigtramp_frame_cache(), sparc32nbsd_sigcontext_frame_cache(), sparc32obsd_sigtramp_frame_cache(), sparc64_frame_cache(), sparc64_sol2_sigtramp_frame_cache(), sparc64fbsd_sigtramp_frame_cache(), sparc64nbsd_sigcontext_frame_cache(), sparc64obsd_frame_cache(), and sparc64obsd_trapframe_cache().
Definition at line 444 of file sparc-tdep.c.
References append_flags_type_flag(), arch_flags_type(), sparc_gdbarch_tdep::sparc_fsr_type, and type.
Referenced by sparc32_register_type().
|
static |
Definition at line 209 of file sparc-tdep.c.
References type::code(), and type::length().
Referenced by sparc32_extract_return_value(), and sparc32_store_return_value().
int sparc_is_annulled_branch_insn | ( | CORE_ADDR | pc | ) |
Definition at line 126 of file sparc-tdep.c.
References sparc_fetch_instruction(), X_A, X_OP, and X_OP2.
Referenced by sparc64_linux_get_longjmp_target().
|
static |
Definition at line 115 of file sparc-tdep.c.
References sparc_fetch_instruction().
Referenced by sparc32_frame_cache().
|
static |
Definition at line 1773 of file sparc-tdep.c.
References sparc_gdbarch_tdep::fpregset, sparc_gdbarch_tdep::gregset, sparc_gdbarch_tdep::sizeof_fpregset, and sparc_gdbarch_tdep::sizeof_gregset.
Referenced by sparc32_gdbarch_init().
Definition at line 422 of file sparc-tdep.c.
References append_flags_type_flag(), arch_flags_type(), sparc_gdbarch_tdep::sparc_psr_type, and type.
Referenced by sparc32_register_type().
void sparc_record_save_insn | ( | struct sparc_frame_cache * | cache | ) |
Definition at line 960 of file sparc-tdep.c.
References sparc_frame_cache::copied_regs_mask, sparc_frame_cache::frame_offset, sparc_frame_cache::frameless_p, and sparc_frame_cache::saved_regs_mask.
Referenced by sparc32nbsd_sigcontext_frame_cache(), sparc32obsd_sigtramp_frame_cache(), sparc64nbsd_sigcontext_frame_cache(), sparc64obsd_frame_cache(), and sparc_analyze_prologue().
|
static |
Definition at line 778 of file sparc-tdep.c.
References sparc_frame_cache::pc, sparc_fetch_instruction(), X_COND, X_I, X_OP, X_OP2, X_OP3, X_RD, X_RS1, X_RS2, and X_SIMM13.
Referenced by sparc_analyze_prologue().
|
static |
Definition at line 1730 of file sparc-tdep.c.
References reg_buffer::arch(), sparc_gdbarch_tdep::npc_regnum, sparc_gdbarch_tdep::pc_regnum, and sparc_analyze_control_transfer().
Referenced by sparc32_gdbarch_init().
int sparc_stack_frame_destroyed_p | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc ) |
Definition at line 554 of file sparc-tdep.c.
References sparc_fetch_instruction(), and X_RETTURN.
Referenced by sparc64_init_abi().
|
static |
Definition at line 1724 of file sparc-tdep.c.
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 281 of file sparc-tdep.c.
References type::code().
Referenced by sparc32_stabs_argument_has_addr(), sparc32_struct_return_from_sym(), sparc_arg_by_memory_p(), and sparc_structure_return_p().
|
static |
Definition at line 300 of file sparc-tdep.c.
References check_typedef(), type::code(), type::is_vector(), type::length(), sparc_floating_p(), sparc_structure_or_union_p(), and type::target_type().
Referenced by sparc32_extract_return_value(), sparc32_return_value(), and sparc32_store_return_value().
void sparc_supply_rwindow | ( | struct regcache * | regcache, |
CORE_ADDR | sp, | ||
int | regnum ) |
Definition at line 1939 of file sparc-tdep.c.
References reg_buffer::arch(), BIAS, extract_unsigned_integer(), gdbarch_byte_order(), gdbarch_ptr_bit(), inferior_ptid, regcache::ptid(), reg_buffer::raw_supply(), regnum, sparc_fetch_wcookie(), SPARC_I7_REGNUM, SPARC_L0_REGNUM, store_unsigned_integer(), and target_read_memory().
Referenced by sparc32_supply_gregset(), sparc32nbsd_supply_pcb(), sparc32obsd_supply_uthread(), sparc64_supply_gregset(), sparc64fbsd_kvm_supply_pcb(), sparc64nbsd_supply_pcb(), sparc64obsd_supply_pcb(), and sparc64obsd_supply_uthread().
|
static |
Definition at line 1760 of file sparc-tdep.c.
References reg_buffer::arch(), sparc_gdbarch_tdep::npc_regnum, sparc_gdbarch_tdep::pc_regnum, and regcache_cooked_write_unsigned().
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 1788 of file sparc-tdep.c.
References tdesc_data, tdesc_find_feature(), and tdesc_numbered_register().
Referenced by sparc32_gdbarch_init().
const struct sparc_fpregmap sparc32_bsd_fpregmap |
Definition at line 2261 of file sparc-tdep.c.
Referenced by _initialize_sparc_linux_nat(), _initialize_sparcnbsd_nat(), sparc32_linux_collect_core_fpregset(), sparc32_linux_supply_core_fpregset(), sparc32nbsd_supply_fpregset(), sparc32nbsd_supply_gregset(), sparc64nbsd_collect_fpregset(), and sparc64nbsd_supply_fpregset().
|
static |
Definition at line 368 of file sparc-tdep.c.
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 365 of file sparc-tdep.c.
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 1370 of file sparc-tdep.c.
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 1349 of file sparc-tdep.c.
Referenced by sparc32_gdbarch_init().
|
static |
Definition at line 385 of file sparc-tdep.c.
Referenced by sparc32_pseudo_register_name().
|
static |
Definition at line 372 of file sparc-tdep.c.
Referenced by sparc32_register_name().
const struct sparc_fpregmap sparc32_sunos4_fpregmap |
Definition at line 2255 of file sparc-tdep.c.
Referenced by _initialize_sparc_nat().
const struct sparc_gregmap sparc32_sunos4_gregmap |
Definition at line 2243 of file sparc-tdep.c.
Referenced by _initialize_sparc_nat().
|
constexpr |
Definition at line 744 of file sparc-tdep.c.
|
static |
Definition at line 362 of file sparc-tdep.c.
Referenced by sparc32_gdbarch_init().