GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
riscv-tdep.c File Reference
#include "defs.h"
#include "frame.h"
#include "inferior.h"
#include "symtab.h"
#include "value.h"
#include "gdbcmd.h"
#include "language.h"
#include "gdbcore.h"
#include "symfile.h"
#include "objfiles.h"
#include "gdbtypes.h"
#include "target.h"
#include "arch-utils.h"
#include "regcache.h"
#include "osabi.h"
#include "riscv-tdep.h"
#include "reggroups.h"
#include "opcode/riscv.h"
#include "elf/riscv.h"
#include "elf-bfd.h"
#include "symcat.h"
#include "dis-asm.h"
#include "frame-unwind.h"
#include "frame-base.h"
#include "trad-frame.h"
#include "infcall.h"
#include "floatformat.h"
#include "remote.h"
#include "target-descriptions.h"
#include "dwarf2/frame.h"
#include "user-regs.h"
#include "valprint.h"
#include "gdbsupport/common-defs.h"
#include "opcode/riscv-opc.h"
#include "cli/cli-decode.h"
#include "observable.h"
#include "prologue-value.h"
#include "arch/riscv.h"
#include "riscv-ravenscar-thread.h"
#include "gdbsupport/gdb-safe-ctype.h"

Go to the source code of this file.

Classes

struct  riscv_unwind_cache
 
class  riscv_pending_register_alias
 
struct  riscv_register_feature
 
struct  riscv_register_feature::register_info
 
struct  riscv_xreg_feature
 
struct  riscv_freg_feature
 
struct  riscv_virtual_feature
 
struct  riscv_csr_feature
 
struct  riscv_vector_feature
 
class  riscv_insn
 
union  riscv_insn::riscv_insn_immediate
 
struct  riscv_arg_info
 
struct  riscv_arg_info::location
 
struct  riscv_arg_reg
 
struct  riscv_memory_offsets
 
struct  riscv_call_info
 
class  riscv_struct_info
 

Macros

#define SP_ALIGNMENT   16
 
#define BIGGEST_ALIGNMENT   16
 
#define DECLARE_INSN(INSN_NAME, INSN_MATCH, INSN_MASK)
 
#define riscv_breakpoints_debug_printf(fmt, ...)
 
#define riscv_infcall_debug_printf(fmt, ...)
 
#define RISCV_INFCALL_SCOPED_DEBUG_START_END(fmt, ...)
 
#define riscv_unwinder_debug_printf(fmt, ...)
 
#define riscv_gdbarch_debug_printf(fmt, ...)
 
#define DECLARE_CSR(NAME, VALUE, CLASS, DEFINE_VER, ABORT_VER)    { RISCV_ ## VALUE ## _REGNUM, { # NAME } },
 
#define DECLARE_CSR(name, num, class, define_ver, abort_ver)   case RISCV_ ## num ## _REGNUM:
 

Functions

static struct valuevalue_of_riscv_user_reg (frame_info_ptr frame, const void *baton)
 
static void show_use_compressed_breakpoints (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static void show_riscv_debug_variable (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
int riscv_isa_xlen (struct gdbarch *gdbarch)
 
int riscv_abi_xlen (struct gdbarch *gdbarch)
 
int riscv_isa_flen (struct gdbarch *gdbarch)
 
int riscv_abi_flen (struct gdbarch *gdbarch)
 
bool riscv_abi_embedded (struct gdbarch *gdbarch)
 
static bool riscv_has_fp_regs (struct gdbarch *gdbarch)
 
static bool riscv_has_fp_abi (struct gdbarch *gdbarch)
 
static bool riscv_is_fp_regno_p (int regno)
 
static int riscv_breakpoint_kind_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr)
 
static const gdb_byte * riscv_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
 
static const char * riscv_register_name (struct gdbarch *gdbarch, int regnum)
 
static enum register_status riscv_pseudo_register_read (struct gdbarch *gdbarch, readable_regcache *regcache, int regnum, gdb_byte *buf)
 
static void riscv_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, const gdb_byte *buf)
 
static int riscv_cannot_store_register (struct gdbarch *gdbarch, int regnum)
 
static struct typeriscv_fpreg_d_type (struct gdbarch *gdbarch)
 
static struct typeriscv_register_type (struct gdbarch *gdbarch, int regnum)
 
static void riscv_print_one_register_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, int regnum)
 
static bool riscv_is_regnum_a_named_csr (int regnum)
 
static bool riscv_is_unknown_csr (struct gdbarch *gdbarch, int regnum)
 
static int riscv_register_reggroup_p (struct gdbarch *gdbarch, int regnum, const struct reggroup *reggroup)
 
static const char * riscv_pseudo_register_name (struct gdbarch *gdbarch, int regnum)
 
static struct typeriscv_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
 
static int riscv_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum, const struct reggroup *reggroup)
 
static void riscv_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, int regnum, int print_all)
 
static bool is_insn_load_of_fp_from_sp (const struct riscv_insn &insn)
 
static bool is_insn_addi_of_sp_to_sp (const struct riscv_insn &insn)
 
static bool previous_insn_is_load_fp_from_stack (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static bool previous_insn_is_add_imm_to_sp (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR *prev_pc)
 
static bool riscv_detect_end_of_function (struct gdbarch *gdbarch, CORE_ADDR pc, int *offset)
 
static CORE_ADDR riscv_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc, CORE_ADDR end_pc, struct riscv_unwind_cache *cache)
 
static CORE_ADDR riscv_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static CORE_ADDR riscv_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp, CORE_ADDR funaddr, struct value **args, int nargs, struct type *value_type, CORE_ADDR *real_pc, CORE_ADDR *bp_addr, struct regcache *regcache)
 
static ULONGEST riscv_type_align (gdbarch *gdbarch, type *type)
 
static int riscv_arg_regs_available (struct riscv_arg_reg *reg)
 
static bool riscv_assign_reg_location (struct riscv_arg_info::location *loc, struct riscv_arg_reg *reg, int length, int offset)
 
static void riscv_assign_stack_location (struct riscv_arg_info::location *loc, struct riscv_memory_offsets *memory, int length, int align)
 
static void riscv_call_arg_scalar_int (struct riscv_arg_info *ainfo, struct riscv_call_info *cinfo)
 
static void riscv_call_arg_scalar_float (struct riscv_arg_info *ainfo, struct riscv_call_info *cinfo)
 
static void riscv_call_arg_complex_float (struct riscv_arg_info *ainfo, struct riscv_call_info *cinfo)
 
static void riscv_call_arg_struct (struct riscv_arg_info *ainfo, struct riscv_call_info *cinfo)
 
static void riscv_arg_location (struct gdbarch *gdbarch, struct riscv_arg_info *ainfo, struct riscv_call_info *cinfo, struct type *type, bool is_unnamed)
 
static void riscv_print_arg_location (ui_file *stream, struct gdbarch *gdbarch, struct riscv_arg_info *info, CORE_ADDR sp_refs, CORE_ADDR sp_args)
 
static void riscv_regcache_cooked_write (int regnum, const gdb_byte *data, int len, struct regcache *regcache, int flen)
 
static CORE_ADDR riscv_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 riscv_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, struct value **read_value, const gdb_byte *writebuf)
 
static CORE_ADDR riscv_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
 
static struct riscv_unwind_cacheriscv_frame_cache (frame_info_ptr this_frame, void **this_cache)
 
static void riscv_frame_this_id (frame_info_ptr this_frame, void **prologue_cache, struct frame_id *this_id)
 
static struct valueriscv_frame_prev_register (frame_info_ptr this_frame, void **prologue_cache, int regnum)
 
static struct riscv_gdbarch_features riscv_features_from_bfd (const bfd *abfd)
 
static const struct target_descriscv_find_default_target_description (const struct gdbarch_info info)
 
static void riscv_add_reggroups (struct gdbarch *gdbarch)
 
static int riscv_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
 
static std::string riscv_gcc_target_options (struct gdbarch *gdbarch)
 
static int riscv_tdesc_unknown_reg (struct gdbarch *gdbarch, tdesc_feature *feature, const char *reg_name, int possible_regnum)
 
static const char * riscv_gnu_triplet_regexp (struct gdbarch *gdbarch)
 
static int riscv_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
 
static struct gdbarchriscv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
static CORE_ADDR riscv_next_pc (struct regcache *regcache, CORE_ADDR pc)
 
static bool riscv_next_pc_atomic_sequence (struct regcache *regcache, CORE_ADDR pc, CORE_ADDR *next_pc)
 
std::vector< CORE_ADDR > riscv_software_single_step (struct regcache *regcache)
 
static void riscv_init_reggroups ()
 
void riscv_supply_regset (const struct regset *regset, struct regcache *regcache, int regnum, const void *regs, size_t len)
 
void _initialize_riscv_tdep ()
 

Variables

static bool riscv_debug_breakpoints = false
 
static bool riscv_debug_infcall = false
 
static bool riscv_debug_unwinder = false
 
static bool riscv_debug_gdbarch = false
 
const char * riscv_feature_name_csr = "org.gnu.gdb.riscv.csr"
 
static const char * riscv_feature_name_cpu = "org.gnu.gdb.riscv.cpu"
 
static const char * riscv_feature_name_fpu = "org.gnu.gdb.riscv.fpu"
 
static const char * riscv_feature_name_virtual = "org.gnu.gdb.riscv.virtual"
 
static const char * riscv_feature_name_vector = "org.gnu.gdb.riscv.vector"
 
static char * riscv_disassembler_options
 
static const reggroupcsr_reggroup = nullptr
 
static const struct riscv_xreg_feature riscv_xreg_feature
 
static const struct riscv_freg_feature riscv_freg_feature
 
static const struct riscv_virtual_feature riscv_virtual_feature
 
static const struct riscv_csr_feature riscv_csr_feature
 
static const struct riscv_vector_feature riscv_vector_feature
 
static enum auto_boolean use_compressed_breakpoints
 
static struct cmd_list_elementsetriscvcmdlist = NULL
 
static struct cmd_list_elementshowriscvcmdlist = NULL
 
static struct cmd_list_elementsetdebugriscvcmdlist = NULL
 
static struct cmd_list_elementshowdebugriscvcmdlist = NULL
 
static const struct frame_unwind riscv_frame_unwind
 
static const char *const stap_register_indirection_prefixes []
 
static const char *const stap_register_indirection_suffixes []
 

Macro Definition Documentation

◆ BIGGEST_ALIGNMENT

#define BIGGEST_ALIGNMENT   16

Definition at line 65 of file riscv-tdep.c.

Referenced by riscv_type_align().

◆ DECLARE_CSR [1/2]

#define DECLARE_CSR ( name,
num,
class,
define_ver,
abort_ver )   case RISCV_ ## num ## _REGNUM:

◆ DECLARE_CSR [2/2]

#define DECLARE_CSR ( NAME,
VALUE,
CLASS,
DEFINE_VER,
ABORT_VER )    { RISCV_ ## VALUE ## _REGNUM, { # NAME } },

◆ DECLARE_INSN

#define DECLARE_INSN ( INSN_NAME,
INSN_MATCH,
INSN_MASK )
Value:
static inline bool is_ ## INSN_NAME ## _insn (long insn) \
{ \
return (insn & INSN_MASK) == INSN_MATCH; \
}

Definition at line 69 of file riscv-tdep.c.

◆ riscv_breakpoints_debug_printf

#define riscv_breakpoints_debug_printf ( fmt,
... )
Value:
debug_prefixed_printf_cond (riscv_debug_breakpoints, \
"riscv-breakpoints", \
fmt, ##__VA_ARGS__)
static bool riscv_debug_breakpoints
Definition riscv-tdep.c:80

Definition at line 84 of file riscv-tdep.c.

Referenced by riscv_breakpoint_kind_from_pc().

◆ riscv_gdbarch_debug_printf

#define riscv_gdbarch_debug_printf ( fmt,
... )
Value:
debug_prefixed_printf_cond (riscv_debug_gdbarch, "riscv-gdbarch", \
fmt, ##__VA_ARGS__)
static bool riscv_debug_gdbarch
Definition riscv-tdep.c:120

Definition at line 124 of file riscv-tdep.c.

Referenced by riscv_gdbarch_init().

◆ riscv_infcall_debug_printf

#define riscv_infcall_debug_printf ( fmt,
... )
Value:
debug_prefixed_printf_cond (riscv_debug_infcall, "riscv-infcall", \
fmt, ##__VA_ARGS__)
static bool riscv_debug_infcall
Definition riscv-tdep.c:92

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

Referenced by riscv_push_dummy_call(), riscv_push_dummy_code(), and riscv_return_value().

◆ RISCV_INFCALL_SCOPED_DEBUG_START_END

#define RISCV_INFCALL_SCOPED_DEBUG_START_END ( fmt,
... )
Value:
scoped_debug_start_end (riscv_debug_infcall, "riscv-infcall", \
fmt, ##__VA_ARGS__)

Definition at line 102 of file riscv-tdep.c.

Referenced by riscv_push_dummy_call().

◆ riscv_unwinder_debug_printf

#define riscv_unwinder_debug_printf ( fmt,
... )
Value:
debug_prefixed_printf_cond (riscv_debug_unwinder, "riscv-unwinder", \
fmt, ##__VA_ARGS__)
static bool riscv_debug_unwinder
Definition riscv-tdep.c:109

Definition at line 113 of file riscv-tdep.c.

Referenced by previous_insn_is_add_imm_to_sp(), previous_insn_is_load_fp_from_stack(), riscv_detect_end_of_function(), riscv_frame_cache(), and riscv_scan_prologue().

◆ SP_ALIGNMENT

#define SP_ALIGNMENT   16

Definition at line 62 of file riscv-tdep.c.

Referenced by riscv_push_dummy_call().

Function Documentation

◆ _initialize_riscv_tdep()

void _initialize_riscv_tdep ( )

◆ is_insn_addi_of_sp_to_sp()

static bool is_insn_addi_of_sp_to_sp ( const struct riscv_insn & insn)
static

◆ is_insn_load_of_fp_from_sp()

static bool is_insn_load_of_fp_from_sp ( const struct riscv_insn & insn)
static

◆ previous_insn_is_add_imm_to_sp()

static bool previous_insn_is_add_imm_to_sp ( struct gdbarch * gdbarch,
CORE_ADDR pc,
CORE_ADDR * prev_pc )
static

◆ previous_insn_is_load_fp_from_stack()

static bool previous_insn_is_load_fp_from_stack ( struct gdbarch * gdbarch,
CORE_ADDR pc )
static

◆ riscv_abi_embedded()

bool riscv_abi_embedded ( struct gdbarch * gdbarch)

◆ riscv_abi_flen()

int riscv_abi_flen ( struct gdbarch * gdbarch)

◆ riscv_abi_xlen()

int riscv_abi_xlen ( struct gdbarch * gdbarch)

◆ riscv_add_reggroups()

static void riscv_add_reggroups ( struct gdbarch * gdbarch)
static

Definition at line 3888 of file riscv-tdep.c.

References csr_reggroup, and reggroup_add().

Referenced by riscv_gdbarch_init().

◆ riscv_arg_location()

static void riscv_arg_location ( struct gdbarch * gdbarch,
struct riscv_arg_info * ainfo,
struct riscv_call_info * cinfo,
struct type * type,
bool is_unnamed )
static

◆ riscv_arg_regs_available()

static int riscv_arg_regs_available ( struct riscv_arg_reg * reg)
static

◆ riscv_assign_reg_location()

static bool riscv_assign_reg_location ( struct riscv_arg_info::location * loc,
struct riscv_arg_reg * reg,
int length,
int offset )
static

◆ riscv_assign_stack_location()

static void riscv_assign_stack_location ( struct riscv_arg_info::location * loc,
struct riscv_memory_offsets * memory,
int length,
int align )
static

Definition at line 2728 of file riscv-tdep.c.

References loc, and riscv_arg_info::location::on_stack.

Referenced by riscv_call_arg_scalar_int().

◆ riscv_breakpoint_kind_from_pc()

static int riscv_breakpoint_kind_from_pc ( struct gdbarch * gdbarch,
CORE_ADDR * pcptr )
static

◆ riscv_call_arg_complex_float()

static void riscv_call_arg_complex_float ( struct riscv_arg_info * ainfo,
struct riscv_call_info * cinfo )
static

◆ riscv_call_arg_scalar_float()

static void riscv_call_arg_scalar_float ( struct riscv_arg_info * ainfo,
struct riscv_call_info * cinfo )
static

◆ riscv_call_arg_scalar_int()

static void riscv_call_arg_scalar_int ( struct riscv_arg_info * ainfo,
struct riscv_call_info * cinfo )
static

◆ riscv_call_arg_struct()

static void riscv_call_arg_struct ( struct riscv_arg_info * ainfo,
struct riscv_call_info * cinfo )
static

◆ riscv_cannot_store_register()

static int riscv_cannot_store_register ( struct gdbarch * gdbarch,
int regnum )
static

Definition at line 1038 of file riscv-tdep.c.

References regnum, and RISCV_ZERO_REGNUM.

Referenced by riscv_gdbarch_init().

◆ riscv_detect_end_of_function()

static bool riscv_detect_end_of_function ( struct gdbarch * gdbarch,
CORE_ADDR pc,
int * offset )
static

◆ riscv_dwarf_reg_to_regnum()

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

◆ riscv_features_from_bfd()

static struct riscv_gdbarch_features riscv_features_from_bfd ( const bfd * abfd)
static

◆ riscv_find_default_target_description()

static const struct target_desc * riscv_find_default_target_description ( const struct gdbarch_info info)
static

◆ riscv_fpreg_d_type()

static struct type * riscv_fpreg_d_type ( struct gdbarch * gdbarch)
static

◆ riscv_frame_align()

static CORE_ADDR riscv_frame_align ( struct gdbarch * gdbarch,
CORE_ADDR addr )
static

Definition at line 3701 of file riscv-tdep.c.

Referenced by riscv_gdbarch_init().

◆ riscv_frame_cache()

static struct riscv_unwind_cache * riscv_frame_cache ( frame_info_ptr this_frame,
void ** this_cache )
static

◆ riscv_frame_prev_register()

static struct value * riscv_frame_prev_register ( frame_info_ptr this_frame,
void ** prologue_cache,
int regnum )
static

◆ riscv_frame_this_id()

static void riscv_frame_this_id ( frame_info_ptr this_frame,
void ** prologue_cache,
struct frame_id * this_id )
static

Definition at line 3770 of file riscv-tdep.c.

References riscv_frame_cache(), and riscv_unwind_cache::this_id.

◆ riscv_gcc_target_options()

static std::string riscv_gcc_target_options ( struct gdbarch * gdbarch)
static

Definition at line 3919 of file riscv-tdep.c.

References riscv_abi_flen(), riscv_abi_xlen(), riscv_isa_flen(), and riscv_isa_xlen().

Referenced by riscv_gdbarch_init().

◆ riscv_gdbarch_init()

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

Definition at line 4082 of file riscv-tdep.c.

References riscv_gdbarch_tdep::abi_features, alias, arches, riscv_xreg_feature::check(), riscv_freg_feature::check(), riscv_virtual_feature::check(), riscv_csr_feature::check(), riscv_vector_feature::check(), core_addr_lessthan(), dwarf2_append_unwinders(), riscv_gdbarch_tdep::fflags_regnum, riscv_gdbarch_features::flen, floatformats_ieee_quad, frame_unwind_append_unwinder(), riscv_gdbarch_tdep::frm_regnum, gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch_num_regs(), registry< T >::get(), riscv_gdbarch_features::has_fcsr_reg, riscv_gdbarch_features::has_fflags_reg, riscv_gdbarch_features::has_frm_reg, riscv_gdbarch_tdep::isa_features, ON_STACK, register_riscv_ravenscar_ops(), riscv_add_reggroups(), riscv_breakpoint_kind_from_pc(), riscv_cannot_store_register(), riscv_disassembler_options, riscv_dwarf_reg_to_regnum(), riscv_features_from_bfd(), riscv_find_default_target_description(), riscv_frame_align(), riscv_frame_unwind, riscv_gcc_target_options(), riscv_gdbarch_debug_printf, riscv_gnu_triplet_regexp(), riscv_isa_xlen(), RISCV_LAST_REGNUM, RISCV_PC_REGNUM, riscv_print_registers_info(), riscv_pseudo_register_name(), riscv_pseudo_register_read(), riscv_pseudo_register_reggroup_p(), riscv_pseudo_register_type(), riscv_pseudo_register_write(), riscv_push_dummy_call(), riscv_push_dummy_code(), riscv_register_name(), riscv_register_reggroup_p(), riscv_register_type(), riscv_return_value(), riscv_skip_prologue(), RISCV_SP_REGNUM, riscv_stap_is_single_operand(), riscv_sw_breakpoint_from_kind(), riscv_tdesc_unknown_reg(), riscv_type_align(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_call_dummy_location(), set_gdbarch_cannot_store_register(), set_gdbarch_char_signed(), set_gdbarch_disassembler_options(), set_gdbarch_double_bit(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_float_bit(), set_gdbarch_frame_align(), set_gdbarch_gcc_target_options(), set_gdbarch_gnu_triplet_regexp(), set_gdbarch_have_nonsteppable_watchpoint(), set_gdbarch_inner_than(), set_gdbarch_int_bit(), set_gdbarch_long_bit(), set_gdbarch_long_double_bit(), set_gdbarch_long_double_format(), set_gdbarch_long_long_bit(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_print_registers_info(), set_gdbarch_pseudo_register_read(), set_gdbarch_pseudo_register_write(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_push_dummy_code(), set_gdbarch_register_name(), set_gdbarch_register_reggroup_p(), set_gdbarch_register_type(), set_gdbarch_return_value_as_value(), set_gdbarch_short_bit(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_stap_is_single_operand(), set_gdbarch_stap_register_indirection_prefixes(), set_gdbarch_stap_register_indirection_suffixes(), set_gdbarch_sw_breakpoint_from_kind(), set_gdbarch_type_align(), set_gdbarch_valid_disassembler_options(), set_tdesc_pseudo_register_name(), set_tdesc_pseudo_register_reggroup_p(), set_tdesc_pseudo_register_type(), stap_register_indirection_prefixes, stap_register_indirection_suffixes, tdesc_data, tdesc_data_alloc(), tdesc_found_register(), tdesc_has_registers(), tdesc_use_registers(), and riscv_gdbarch_features::xlen.

Referenced by _initialize_riscv_tdep().

◆ riscv_gnu_triplet_regexp()

static const char * riscv_gnu_triplet_regexp ( struct gdbarch * gdbarch)
static

Definition at line 4042 of file riscv-tdep.c.

Referenced by riscv_gdbarch_init().

◆ riscv_has_fp_abi()

static bool riscv_has_fp_abi ( struct gdbarch * gdbarch)
static

◆ riscv_has_fp_regs()

static bool riscv_has_fp_regs ( struct gdbarch * gdbarch)
static

Definition at line 810 of file riscv-tdep.c.

References riscv_isa_flen().

Referenced by riscv_register_name(), and riscv_register_reggroup_p().

◆ riscv_init_reggroups()

static void riscv_init_reggroups ( )
static

Definition at line 4476 of file riscv-tdep.c.

References csr_reggroup, reggroup_new(), and USER_REGGROUP.

Referenced by _initialize_riscv_tdep().

◆ riscv_is_fp_regno_p()

static bool riscv_is_fp_regno_p ( int regno)
static

◆ riscv_is_regnum_a_named_csr()

static bool riscv_is_regnum_a_named_csr ( int regnum)
static

Definition at line 1348 of file riscv-tdep.c.

References regnum, RISCV_FIRST_CSR_REGNUM, and RISCV_LAST_CSR_REGNUM.

Referenced by riscv_register_reggroup_p().

◆ riscv_is_unknown_csr()

static bool riscv_is_unknown_csr ( struct gdbarch * gdbarch,
int regnum )
static

◆ riscv_isa_flen()

int riscv_isa_flen ( struct gdbarch * gdbarch)

◆ riscv_isa_xlen()

int riscv_isa_xlen ( struct gdbarch * gdbarch)

◆ riscv_next_pc()

static CORE_ADDR riscv_next_pc ( struct regcache * regcache,
CORE_ADDR pc )
static

◆ riscv_next_pc_atomic_sequence()

static bool riscv_next_pc_atomic_sequence ( struct regcache * regcache,
CORE_ADDR pc,
CORE_ADDR * next_pc )
static

◆ riscv_print_arg_location()

static void riscv_print_arg_location ( ui_file * stream,
struct gdbarch * gdbarch,
struct riscv_arg_info * info,
CORE_ADDR sp_refs,
CORE_ADDR sp_args )
static

◆ riscv_print_one_register_info()

static void riscv_print_one_register_info ( struct gdbarch * gdbarch,
struct ui_file * file,
frame_info_ptr frame,
int regnum )
static

◆ riscv_print_registers_info()

static void riscv_print_registers_info ( struct gdbarch * gdbarch,
struct ui_file * file,
frame_info_ptr frame,
int regnum,
int print_all )
static

◆ riscv_pseudo_register_name()

static const char * riscv_pseudo_register_name ( struct gdbarch * gdbarch,
int regnum )
static

◆ riscv_pseudo_register_read()

static enum register_status riscv_pseudo_register_read ( struct gdbarch * gdbarch,
readable_regcache * regcache,
int regnum,
gdb_byte * buf )
static

◆ riscv_pseudo_register_reggroup_p()

static int riscv_pseudo_register_reggroup_p ( struct gdbarch * gdbarch,
int regnum,
const struct reggroup * reggroup )
static

Definition at line 1494 of file riscv-tdep.c.

References regnum, and riscv_register_reggroup_p().

Referenced by riscv_gdbarch_init().

◆ riscv_pseudo_register_type()

static struct type * riscv_pseudo_register_type ( struct gdbarch * gdbarch,
int regnum )
static

◆ riscv_pseudo_register_write()

static void riscv_pseudo_register_write ( struct gdbarch * gdbarch,
struct regcache * regcache,
int regnum,
const gdb_byte * buf )
static

◆ riscv_push_dummy_call()

static CORE_ADDR riscv_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

◆ riscv_push_dummy_code()

static CORE_ADDR riscv_push_dummy_code ( struct gdbarch * gdbarch,
CORE_ADDR sp,
CORE_ADDR funaddr,
struct value ** args,
int nargs,
struct type * value_type,
CORE_ADDR * real_pc,
CORE_ADDR * bp_addr,
struct regcache * regcache )
static

Definition at line 2458 of file riscv-tdep.c.

References paddress(), riscv_infcall_debug_printf, status, and target_write_memory().

Referenced by riscv_gdbarch_init().

◆ riscv_regcache_cooked_write()

static void riscv_regcache_cooked_write ( int regnum,
const gdb_byte * data,
int len,
struct regcache * regcache,
int flen )
static

Definition at line 3280 of file riscv-tdep.c.

References regcache::cooked_write(), regnum, and riscv_is_fp_regno_p().

Referenced by riscv_push_dummy_call(), and riscv_return_value().

◆ riscv_register_name()

static const char * riscv_register_name ( struct gdbarch * gdbarch,
int regnum )
static

◆ riscv_register_reggroup_p()

static int riscv_register_reggroup_p ( struct gdbarch * gdbarch,
int regnum,
const struct reggroup * reggroup )
static

◆ riscv_register_type()

static struct type * riscv_register_type ( struct gdbarch * gdbarch,
int regnum )
static

◆ riscv_return_value()

static enum return_value_convention riscv_return_value ( struct gdbarch * gdbarch,
struct value * function,
struct type * type,
struct regcache * regcache,
struct value ** read_value,
const gdb_byte * writebuf )
static

◆ riscv_scan_prologue()

static CORE_ADDR riscv_scan_prologue ( struct gdbarch * gdbarch,
CORE_ADDR start_pc,
CORE_ADDR end_pc,
struct riscv_unwind_cache * cache )
static

◆ riscv_skip_prologue()

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

◆ riscv_software_single_step()

std::vector< CORE_ADDR > riscv_software_single_step ( struct regcache * regcache)

◆ riscv_stap_is_single_operand()

static int riscv_stap_is_single_operand ( struct gdbarch * gdbarch,
const char * s )
static

Definition at line 4051 of file riscv-tdep.c.

Referenced by riscv_gdbarch_init().

◆ riscv_supply_regset()

void riscv_supply_regset ( const struct regset * regset,
struct regcache * regcache,
int regnum,
const void * regs,
size_t len )

◆ riscv_sw_breakpoint_from_kind()

static const gdb_byte * riscv_sw_breakpoint_from_kind ( struct gdbarch * gdbarch,
int kind,
int * size )
static

Definition at line 890 of file riscv-tdep.c.

References size.

Referenced by riscv_gdbarch_init().

◆ riscv_tdesc_unknown_reg()

static int riscv_tdesc_unknown_reg ( struct gdbarch * gdbarch,
tdesc_feature * feature,
const char * reg_name,
int possible_regnum )
static

◆ riscv_type_align()

static ULONGEST riscv_type_align ( gdbarch * gdbarch,
type * type )
static

◆ show_riscv_debug_variable()

static void show_riscv_debug_variable ( struct ui_file * file,
int from_tty,
struct cmd_list_element * c,
const char * value )
static

Definition at line 753 of file riscv-tdep.c.

References gdb_printf(), and cmd_list_element::name.

Referenced by _initialize_riscv_tdep().

◆ show_use_compressed_breakpoints()

static void show_use_compressed_breakpoints ( struct ui_file * file,
int from_tty,
struct cmd_list_element * c,
const char * value )
static

Definition at line 731 of file riscv-tdep.c.

References gdb_printf().

Referenced by _initialize_riscv_tdep().

◆ value_of_riscv_user_reg()

static struct value * value_of_riscv_user_reg ( frame_info_ptr frame,
const void * baton )
static

Definition at line 168 of file riscv-tdep.c.

References value_of_register().

Referenced by riscv_pending_register_alias::create().

Variable Documentation

◆ csr_reggroup

const reggroup* csr_reggroup = nullptr
static

◆ riscv_csr_feature

const struct riscv_csr_feature riscv_csr_feature
static

Definition at line 611 of file riscv-tdep.c.

◆ riscv_debug_breakpoints

bool riscv_debug_breakpoints = false
static

Definition at line 80 of file riscv-tdep.c.

Referenced by _initialize_riscv_tdep(), and riscv_breakpoint_kind_from_pc().

◆ riscv_debug_gdbarch

bool riscv_debug_gdbarch = false
static

Definition at line 120 of file riscv-tdep.c.

Referenced by _initialize_riscv_tdep().

◆ riscv_debug_infcall

bool riscv_debug_infcall = false
static

Definition at line 92 of file riscv-tdep.c.

Referenced by _initialize_riscv_tdep(), riscv_push_dummy_call(), and riscv_return_value().

◆ riscv_debug_unwinder

bool riscv_debug_unwinder = false
static

Definition at line 109 of file riscv-tdep.c.

Referenced by _initialize_riscv_tdep().

◆ riscv_disassembler_options

char* riscv_disassembler_options
static

Definition at line 136 of file riscv-tdep.c.

Referenced by riscv_gdbarch_init().

◆ riscv_feature_name_cpu

const char* riscv_feature_name_cpu = "org.gnu.gdb.riscv.cpu"
static

Definition at line 130 of file riscv-tdep.c.

◆ riscv_feature_name_csr

const char* riscv_feature_name_csr = "org.gnu.gdb.riscv.csr"

Definition at line 129 of file riscv-tdep.c.

Referenced by riscv_iterate_over_regset_sections().

◆ riscv_feature_name_fpu

const char* riscv_feature_name_fpu = "org.gnu.gdb.riscv.fpu"
static

Definition at line 131 of file riscv-tdep.c.

◆ riscv_feature_name_vector

const char* riscv_feature_name_vector = "org.gnu.gdb.riscv.vector"
static

Definition at line 133 of file riscv-tdep.c.

◆ riscv_feature_name_virtual

const char* riscv_feature_name_virtual = "org.gnu.gdb.riscv.virtual"
static

Definition at line 132 of file riscv-tdep.c.

◆ riscv_frame_unwind

const struct frame_unwind riscv_frame_unwind
static
Initial value:
=
{
"riscv prologue",
NULL,
NULL,
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 * riscv_frame_prev_register(frame_info_ptr this_frame, void **prologue_cache, int regnum)
static void riscv_frame_this_id(frame_info_ptr this_frame, void **prologue_cache, struct frame_id *this_id)

Definition at line 3805 of file riscv-tdep.c.

Referenced by riscv_gdbarch_init().

◆ riscv_freg_feature

const struct riscv_freg_feature riscv_freg_feature
static

Definition at line 515 of file riscv-tdep.c.

◆ riscv_vector_feature

const struct riscv_vector_feature riscv_vector_feature
static

Definition at line 720 of file riscv-tdep.c.

◆ riscv_virtual_feature

const struct riscv_virtual_feature riscv_virtual_feature
static

Definition at line 555 of file riscv-tdep.c.

◆ riscv_xreg_feature

const struct riscv_xreg_feature riscv_xreg_feature
static

Definition at line 391 of file riscv-tdep.c.

◆ setdebugriscvcmdlist

struct cmd_list_element* setdebugriscvcmdlist = NULL
static

Definition at line 747 of file riscv-tdep.c.

Referenced by _initialize_riscv_tdep().

◆ setriscvcmdlist

struct cmd_list_element* setriscvcmdlist = NULL
static

Definition at line 742 of file riscv-tdep.c.

Referenced by _initialize_riscv_tdep().

◆ showdebugriscvcmdlist

struct cmd_list_element* showdebugriscvcmdlist = NULL
static

Definition at line 748 of file riscv-tdep.c.

Referenced by _initialize_riscv_tdep().

◆ showriscvcmdlist

struct cmd_list_element* showriscvcmdlist = NULL
static

Definition at line 743 of file riscv-tdep.c.

Referenced by _initialize_riscv_tdep().

◆ stap_register_indirection_prefixes

const char* const stap_register_indirection_prefixes[]
static

◆ stap_register_indirection_suffixes

const char* const stap_register_indirection_suffixes[]
static

◆ use_compressed_breakpoints

enum auto_boolean use_compressed_breakpoints
static

Definition at line 726 of file riscv-tdep.c.

Referenced by _initialize_riscv_tdep(), and riscv_breakpoint_kind_from_pc().