39#include "opcode/arc.h"
40#include "opcodes/arc-dis.h"
127 =
"org.gnu.gdb.arc.core.arcompact";
129 =
"org.gnu.gdb.arc.core.v2";
131 =
"org.gnu.gdb.arc.core-reduced.v2";
133 =
"org.gnu.gdb.arc.aux-minimal";
313 unsigned int operand_num)
315 switch (insn.operands[operand_num].kind)
317 case ARC_OPERAND_KIND_LIMM:
318 gdb_assert (insn.limm_p);
319 return insn.limm_value;
320 case ARC_OPERAND_KIND_SHIMM:
321 return insn.operands[operand_num].value;
327 insn.operands[operand_num].value,
337 unsigned int operand_num)
339 switch (insn.operands[operand_num].kind)
341 case ARC_OPERAND_KIND_LIMM:
342 gdb_assert (insn.limm_p);
347 return (((LONGEST) insn.limm_value) ^ INT_MIN) - INT_MIN;
348 case ARC_OPERAND_KIND_SHIMM:
350 return insn.operands[operand_num].value;
356 insn.operands[operand_num].value,
368 if (insn.insn_class == PUSH || insn.insn_class == POP)
371 gdb_assert (insn.insn_class == LOAD || insn.insn_class == STORE);
377 gdb_assert (insn.operands_count >= 2);
378 return insn.operands[1].value;
388 if (insn.insn_class == POP)
390 else if (insn.insn_class == PUSH)
393 gdb_assert (insn.insn_class == LOAD || insn.insn_class == STORE);
399 if (insn.operands_count < 3)
404 if (insn.writeback_mode == ARC_WRITEBACK_AS)
408 gdb_assert (insn.data_size_mode != ARC_SCALING_B);
409 if (insn.data_size_mode == ARC_SCALING_H)
420 gdb_assert (insn.is_control_flow);
423 if (insn.insn_class == BI)
429 else if (insn.insn_class == BIH)
436 else if (insn.insn_class == JLI)
439 "JLI_S instruction is not supported by the GDB.");
442 else if (insn.insn_class == EI)
445 "EI_S instruction is not supported by the GDB.");
449 else if (insn.insn_class == LEAVE)
457 else if (insn.insn_class == BBIT0 || insn.insn_class == BBIT1
458 || insn.insn_class == BRCC)
466 return pcrel_addr + align_down (insn.address, 4);
469 else if (insn.insn_class == BRANCH || insn.insn_class == LOOP)
475 return pcrel_addr + align_down (insn.address, 4);
478 else if (insn.insn_class == JUMP)
485 gdb_assert_not_reached (
"Unknown branch instruction.");
495 arc_print (
"Dumping arc_instruction at %s\n",
497 arc_print (
"\tlength = %u\n", insn.length);
501 arc_print (
"\tThis is not a valid ARC instruction.\n");
505 arc_print (
"\tlength_with_limm = %u\n", insn.length + (insn.limm_p ? 4 : 0));
506 arc_print (
"\tcc = 0x%x\n", insn.condition_code);
507 arc_print (
"\tinsn_class = %u\n", insn.insn_class);
508 arc_print (
"\tis_control_flow = %i\n", insn.is_control_flow);
509 arc_print (
"\thas_delay_slot = %i\n", insn.has_delay_slot);
514 if (insn.is_control_flow)
520 arc_print (
"\tlimm_p = %i\n", insn.limm_p);
522 arc_print (
"\tlimm_value = 0x%08x\n", insn.limm_value);
524 if (insn.insn_class == STORE || insn.insn_class == LOAD
525 || insn.insn_class == PUSH || insn.insn_class == POP)
527 arc_print (
"\twriteback_mode = %u\n", insn.writeback_mode);
528 arc_print (
"\tdata_size_mode = %u\n", insn.data_size_mode);
529 arc_print (
"\tmemory_base_register = %s\n",
538 arc_print (
"\toperands_count = %u\n", insn.operands_count);
539 for (
unsigned int i = 0; i < insn.operands_count; ++i)
541 int is_reg = (insn.operands[i].kind == ARC_OPERAND_KIND_REG);
563 return (insn.address + insn.length + (insn.limm_p ? 4 : 0));
618 "reset STATUS32.DE bit to zero. Value of STATUS32 "
654 int *reg_ptr, LONGEST *offset_ptr)
730 struct value **args, CORE_ADDR sp,
732 CORE_ADDR struct_addr)
758 unsigned int total_space = 0;
762 for (
int i = 0; i < nargs; i++)
764 unsigned int len = args[i]->type ()->length ();
765 unsigned int space = align_up (len, 4);
767 total_space += space;
773 gdb_byte *memory_image = XCNEWVEC (gdb_byte, total_space);
776 gdb_byte *data = memory_image;
777 for (
int i = 0; i < nargs; i++)
779 unsigned int len = args[i]->type ()->length ();
780 unsigned int space = align_up (len, 4);
782 memcpy (data, args[i]->contents ().data (), (
size_t) len);
784 i, *((
int *) args[i]->contents ().data ()),
795 data[0], data[1], data[2], data[3], arg_reg);
805 if (total_space == 0)
821 xfree (memory_image);
848 struct value **args,
int nargs,
struct type *value_type,
849 CORE_ADDR *real_pc, CORE_ADDR *bp_addr,
943 error (_(
"arc: extract_return_value: type length %u too large"), len);
994 error (_(
"arc_store_return_value: type length too large."));
1023 gdb_byte *readbuf,
const gdb_byte *writebuf)
1030 int is_struct_return = (valtype->
code () == TYPE_CODE_STRUCT
1031 || valtype->
code () == TYPE_CODE_UNION
1035 host_address_to_string (readbuf),
1036 host_address_to_string (writebuf));
1038 if (writebuf != NULL)
1043 gdb_assert (!is_struct_return);
1046 else if (readbuf != NULL)
1051 gdb_assert (!is_struct_return);
1055 return (is_struct_return
1075 if (insn.operands[operand].kind == ARC_OPERAND_KIND_REG)
1076 return regs[insn.operands[operand].value];
1101 if (insn.is_control_flow || insn.condition_code != ARC_CC_AL)
1105 if (insn.insn_class == STORE || insn.insn_class == PUSH)
1109 gdb_assert (insn.operands_count > 0);
1112 if (insn.operands_count > 1
1113 && insn.operands[1].kind != ARC_OPERAND_KIND_REG)
1134 if (insn.writeback_mode == ARC_WRITEBACK_AB)
1135 addr = regs[base_reg];
1143 if (insn.data_size_mode != ARC_SCALING_D)
1150 if (insn.data_size_mode == ARC_SCALING_B)
1152 else if (insn.data_size_mode == ARC_SCALING_H)
1161 if (insn.operands[0].kind == ARC_OPERAND_KIND_REG)
1164 pv_t store_value1 = regs[insn.operands[0].value];
1165 pv_t store_value2 = regs[insn.operands[0].value + 1];
1179 if (insn.writeback_mode == ARC_WRITEBACK_A
1180 || insn.writeback_mode == ARC_WRITEBACK_AB)
1186 else if (insn.insn_class == MOVE)
1188 gdb_assert (insn.operands_count == 2);
1191 if (insn.operands[0].kind == ARC_OPERAND_KIND_REG)
1193 int dst_regnum = insn.operands[0].value;
1198 else if (insn.insn_class ==
SUB)
1200 gdb_assert (insn.operands_count == 3);
1203 if (insn.operands[0].kind != ARC_OPERAND_KIND_REG)
1206 int dst_regnum = insn.operands[0].value;
1211 else if (insn.insn_class == ENTER)
1237 gdb_assert (insn.operands_count > 0);
1242 if (insn.operands_count > 1)
1245 is_fp_saved =
false;
1247 bool is_blink_saved;
1248 if (insn.operands_count > 1)
1249 is_blink_saved = (insn.operands[insn.operands_count - 1].value
1252 is_blink_saved =
false;
1255 CORE_ADDR st_size = ((regs_saved + is_fp_saved + is_blink_saved)
1373 CORE_ADDR current_prologue_end = entrypoint;
1376 while (current_prologue_end < limit_pc)
1378 struct arc_instruction insn;
1381 arc_insn_decode (current_prologue_end, dis.
disasm_info (),
1423 return current_prologue_end;
1456 CORE_ADDR func_addr;
1457 const char *func_name;
1463 CORE_ADDR postprologue_pc
1466 if (postprologue_pc != 0)
1467 return std::max (pc, postprologue_pc);
1523 if ((info->disassembler_options == NULL) && (info->section == NULL))
1583 if ((length_with_limm == 4 || length_with_limm == 8)
1592static const gdb_byte *
1595 gdb_assert (kind == 2 || kind == 4);
1617 return align_down (sp, 4);
1637 (addresses_known) ?
"address" :
"offset",
1652 CORE_ADDR entrypoint, prologue_end;
1659 prologue_end = prev_pc;
1660 else if (sal.
end < prologue_end)
1662 prologue_end = sal.
end;
1664 prologue_end = std::min (prologue_end, prev_pc);
1692 if (unwound_fb == 0)
1719 if (*this_cache == NULL)
1723 CORE_ADDR stack_addr = cache->
prev_sp;
1756static struct value *
1758 void **this_cache,
int regnum)
1760 if (*this_cache == NULL)
1848 void **this_cache,
struct frame_id *this_id)
1852 if (*this_cache == NULL)
1857 CORE_ADDR stack_addr = cache->
prev_sp;
1865static struct value *
1867 void **this_cache,
int regnum)
1872 if (*this_cache == NULL)
1943 case bfd_mach_arc_arc600:
1944 case bfd_mach_arc_arc601:
1945 case bfd_mach_arc_arc700:
1947 case bfd_mach_arc_arcv2:
1950 internal_error (_(
"unknown machine id %lu"), mach);
1966 if (abfd !=
nullptr && bfd_get_flavour (abfd) == bfd_target_elf_flavour)
1968 unsigned char eclass = elf_elfheader (abfd)->e_ident[EI_CLASS];
1970 if (eclass == ELFCLASS32)
1972 else if (eclass == ELFCLASS64)
1975 internal_error (_(
"unknown ELF header class %d"), eclass);
1989static const struct tdesc_feature *
1992 const struct tdesc_feature *feat =
nullptr;
1996 if (feat ==
nullptr)
1999 if (feat ==
nullptr)
2008static const struct tdesc_feature *
2027 gdb_assert_not_reached
2028 (
"Unknown machine type to determine the core feature set.");
2054 const char *r58_alias
2055 = byte_order == BFD_ENDIAN_LITTLE ?
"accl" :
"acch";
2056 const char *r59_alias
2057 = byte_order == BFD_ENDIAN_LITTLE ?
"acch" :
"accl";
2073 const struct tdesc_feature *feature,
2076 for (
const auto ® : reg_set->
registers)
2080 for (
const char *
name : reg.names)
2089 if (!found && reg.required_p)
2091 std::ostringstream reg_names;
2092 for (std::size_t i = 0; i < reg.names.size(); ++i)
2095 reg_names <<
"'" << reg.names[0] <<
"'";
2097 reg_names <<
" or '" << reg.names[0] <<
"'";
2099 arc_print (_(
"Error: Cannot find required register(s) %s "
2100 "in feature '%s'.\n"), reg_names.str ().c_str (),
2101 feature->name.c_str ());
2121 if (feature_aux ==
nullptr)
2124 bool hw_loop_p =
false;
2125 const auto lp_start_name =
2127 const auto lp_end_name =
2147 const struct target_desc *tdesc_loc = info.target_desc;
2155 info.bfd_arch_info->mach);
2158 gdb_assert (tdesc_loc !=
nullptr);
2162 const struct tdesc_feature *feature_core
2164 const struct tdesc_feature *feature_aux
2168 if (feature_core ==
nullptr)
2170 if (feature_aux ==
nullptr)
2173 if (feature_core ==
nullptr)
2175 arc_print (_(
"Error: Cannot find required feature '%s' in supplied "
2180 if (feature_aux ==
nullptr)
2182 arc_print (_(
"Error: Cannot find required feature '%s' in supplied "
2198 arc_core_reg_feature);
2202 arc_aux_reg_feature);
2224 case TYPE_CODE_FUNC:
2225 case TYPE_CODE_FLAGS:
2227 case TYPE_CODE_RANGE:
2229 case TYPE_CODE_ENUM:
2231 case TYPE_CODE_RVALUE_REF:
2232 case TYPE_CODE_CHAR:
2233 case TYPE_CODE_BOOL:
2234 case TYPE_CODE_DECFLOAT:
2235 case TYPE_CODE_METHODPTR:
2236 case TYPE_CODE_MEMBERPTR:
2238 return std::min<ULONGEST> (4,
type->
length ());
2345 if (tdep->
jb_pc >= 0)
2351 if (info.target_desc != NULL)
2353 const struct bfd_arch_info *tdesc_arch
2355 if (tdesc_arch != NULL)
2375 switch (tdesc_arch->mach)
2377 case bfd_mach_arc_arc601:
2380 case bfd_mach_arc_arc600:
2383 case bfd_mach_arc_arc700:
2386 case bfd_mach_arc_arcv2:
2403 disassembler_options_arc ());
2419 gdb_printf (file,
"arc_dump_tdep: is_sigtramp = <%s>\n",
2421 gdb_printf (file,
"arc_dump_tdep: sigcontext_addr = <%s>\n",
2423 gdb_printf (file,
"arc_dump_tdep: sc_reg_offset = <%s>\n",
2425 gdb_printf (file,
"arc_dump_tdep: sc_num_regs = %d\n",
2436 if (args != NULL && strlen (args) > 0)
2443 struct arc_instruction insn;
2459 _(
"ARC-specific maintenance commands for printing GDB "
2466 _(
"Dump arc_instruction structure for specified address."),
2472 _(
"Set ARC specific debugging."),
2473 _(
"Show ARC specific debugging."),
2474 _(
"When set, ARC specific debugging is enabled."),
gdb_static_assert(sizeof(splay_tree_key) >=sizeof(CORE_ADDR *))
static enum arc_isa mach_type_to_arc_isa(const unsigned long mach)
static const gdb_byte arc_brk_s_le[]
static const gdb_byte arc_brk_s_be[]
static enum return_value_convention arc_return_value(struct gdbarch *gdbarch, struct value *function, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
static void arc_insn_dump(const struct arc_instruction &insn)
static CORE_ADDR arc_frame_base_address(frame_info_ptr this_frame, void **prologue_cache)
void _initialize_arc_tdep()
static void arc_sigtramp_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
static CORE_ADDR arc_analyze_prologue(struct gdbarch *gdbarch, const CORE_ADDR entrypoint, const CORE_ADDR limit_pc, struct arc_frame_cache *cache)
static bool arc_is_in_prologue(struct gdbarch *gdbarch, const struct arc_instruction &insn, pv_t *regs, struct pv_area *stack)
static pv_t arc_pv_get_operand(pv_t *regs, const struct arc_instruction &insn, int operand)
static const int MAX_PROLOGUE_LENGTH
static const gdb_byte arc_brk_le[]
static CORE_ADDR arc_frame_align(struct gdbarch *gdbarch, CORE_ADDR sp)
static ULONGEST arc_type_align(struct gdbarch *gdbarch, struct type *type)
static const char * ARC_AUX_FEATURE_NAME
static struct arc_register_feature arc_v1_core_reg_feature
static char * arc_disassembler_options
static struct gdbarch * arc_gdbarch_init(struct gdbarch_info info, struct gdbarch_list *arches)
static int arc_breakpoint_kind_from_pc(struct gdbarch *gdbarch, CORE_ADDR *pcptr)
static const struct frame_base arc_normal_base
static int arc_get_longjmp_target(frame_info_ptr frame, CORE_ADDR *pc)
CORE_ADDR arc_insn_get_linear_next_pc(const struct arc_instruction &insn)
static bool arc_tdesc_init(struct gdbarch_info info, const struct target_desc **tdesc, tdesc_arch_data_up *tdesc_data)
static const gdb_byte arc_brk_be[]
static struct arc_register_feature arc_v2_core_reg_feature
static const char * ARC_AUX_OBSOLETE_FEATURE_NAME
static LONGEST arc_insn_get_operand_value_signed(const struct arc_instruction &insn, unsigned int operand_num)
static const struct frame_unwind arc_sigtramp_frame_unwind
static const char * ARC_CORE_V2_REDUCED_OBSOLETE_FEATURE_NAME
static void arc_update_acc_reg_names(const int byte_order)
static int arc_insn_get_memory_base_reg(const struct arc_instruction &insn)
static CORE_ADDR arc_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)
arc_arch_features arc_arch_features_create(const bfd *abfd, const unsigned long mach)
static struct value * arc_sigtramp_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)
static struct arc_frame_cache * arc_make_frame_cache(frame_info_ptr this_frame)
static int arc_cannot_store_register(struct gdbarch *gdbarch, int regnum)
static void arc_write_pc(struct regcache *regcache, CORE_ADDR new_pc)
static void arc_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
static int arc_cannot_fetch_register(struct gdbarch *gdbarch, int regnum)
static const struct tdesc_feature * find_obsolete_core_names(const struct target_desc *tdesc)
static struct cmd_list_element * maintenance_print_arc_list
static const char * ARC_CORE_V1_OBSOLETE_FEATURE_NAME
static void arc_virtual_frame_pointer(struct gdbarch *gdbarch, CORE_ADDR pc, int *reg_ptr, LONGEST *offset_ptr)
static CORE_ADDR arc_skip_prologue(struct gdbarch *gdbarch, CORE_ADDR pc)
static void arc_print_frame_cache(struct gdbarch *gdbarch, const char *message, struct arc_frame_cache *cache, int addresses_known)
static struct value * arc_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)
static void arc_extract_return_value(struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, gdb_byte *valbuf)
static const arc_register_feature * determine_aux_reg_feature_set()
static ULONGEST arc_insn_get_operand_value(const struct arc_instruction &insn, unsigned int operand_num)
int arc_delayed_print_insn(bfd_vma addr, struct disassemble_info *info)
static const char * ARC_CORE_FEATURE_NAME
CORE_ADDR arc_insn_get_branch_target(const struct arc_instruction &insn)
static const char * ARC_CORE_V2_OBSOLETE_FEATURE_NAME
static void arc_store_return_value(struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
static void arc_dwarf2_frame_init_reg(struct gdbarch *gdbarch, int regnum, struct dwarf2_frame_state_reg *reg, frame_info_ptr info)
static struct arc_frame_cache * arc_make_sigtramp_frame_cache(frame_info_ptr this_frame)
static bool arc_check_for_hw_loops(const struct target_desc *tdesc, struct tdesc_arch_data *data)
static int arc_sigtramp_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_cache)
static const struct frame_unwind arc_frame_unwind
static CORE_ADDR arc_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 const struct tdesc_feature * find_obsolete_aux_names(const struct target_desc *tdesc)
static arc_register_feature * determine_core_reg_feature_set(const unsigned long mach)
static void dump_arc_instruction_command(const char *args, int from_tty)
static const gdb_byte * arc_sw_breakpoint_from_kind(struct gdbarch *gdbarch, int kind, int *size)
static const struct arc_register_feature arc_common_aux_reg_feature
static bool arc_check_tdesc_feature(struct tdesc_arch_data *tdesc_data, const struct tdesc_feature *feature, const struct arc_register_feature *reg_set)
static void arc_dump_tdep(struct gdbarch *gdbarch, struct ui_file *file)
static CORE_ADDR arc_insn_get_memory_offset(const struct arc_instruction &insn)
#define arc_print(fmt, args...)
static int arc_mach_is_arc600(struct gdbarch *gdbarch)
#define ARC_STATUS32_DE_MASK
#define ARC_REGISTER_SIZE
static bool arc_arch_is_hs(const struct bfd_arch_info *arch)
#define ARC_OFFSET_NO_REGISTER
#define arc_debug_printf(fmt,...)
const target_desc * arc_lookup_target_description(const struct arc_arch_features &features)
void gdbarch_register(enum bfd_architecture bfd_architecture, gdbarch_init_ftype *init, gdbarch_dump_tdep_ftype *dump_tdep, gdbarch_supports_arch_info_ftype *supports_arch_info)
int default_print_insn(bfd_vma memaddr, disassemble_info *info)
struct gdbarch * target_gdbarch(void)
static std::vector< const char * > arches
int core_addr_lessthan(CORE_ADDR lhs, CORE_ADDR rhs)
bool find_pc_partial_function(CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr, const struct block **block)
bool find_reg(struct gdbarch *gdbarch, int reg, CORE_ADDR *offset_p)
bool store_would_trash(pv_t addr)
void store(pv_t addr, CORE_ADDR size, pv_t value)
void cooked_write(int regnum, const gdb_byte *buf)
struct cmd_list_element * maintenanceprintlist
struct cmd_list_element * showdebuglist
struct cmd_list_element * setdebuglist
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, const char *doc, struct cmd_list_element **list)
set_show_commands add_setshow_boolean_cmd(const char *name, enum command_class theclass, bool *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_func_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
struct cmd_list_element * add_basic_prefix_cmd(const char *name, enum command_class theclass, const char *doc, struct cmd_list_element **subcommands, int allow_unknown, struct cmd_list_element **list)
void write_memory(CORE_ADDR memaddr, const bfd_byte *myaddr, ssize_t len)
static void store_unsigned_integer(gdb_byte *addr, int len, enum bfd_endian byte_order, ULONGEST val)
static ULONGEST extract_unsigned_integer(gdb::array_view< const gdb_byte > buf, enum bfd_endian byte_order)
@ RETURN_VALUE_REGISTER_CONVENTION
@ RETURN_VALUE_STRUCT_CONVENTION
int gdb_insn_length(struct gdbarch *gdbarch, CORE_ADDR addr)
void dwarf2_append_unwinders(struct gdbarch *gdbarch)
void dwarf2_frame_set_init_reg(struct gdbarch *gdbarch, void(*init_reg)(struct gdbarch *, int, struct dwarf2_frame_state_reg *, frame_info_ptr))
expression_up parse_expression(const char *, innermost_block_tracker *=nullptr, parser_flags flags=0)
void frame_base_set_default(struct gdbarch *gdbarch, const struct frame_base *default_base)
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)
struct value * frame_unwind_got_constant(frame_info_ptr frame, int regnum, ULONGEST val)
void frame_unwind_append_unwinder(struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
ULONGEST get_frame_register_unsigned(frame_info_ptr frame, int regnum)
CORE_ADDR get_frame_pc(frame_info_ptr frame)
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
struct gdbarch * get_frame_arch(frame_info_ptr this_frame)
CORE_ADDR get_frame_func(frame_info_ptr this_frame)
CORE_ADDR get_frame_address_in_block(frame_info_ptr this_frame)
#define FRAME_OBSTACK_ZALLOC(TYPE)
void set_gdbarch_long_long_bit(struct gdbarch *gdbarch, int long_long_bit)
void set_gdbarch_addr_bit(struct gdbarch *gdbarch, int addr_bit)
int gdbarch_pc_regnum(struct gdbarch *gdbarch)
void set_gdbarch_char_signed(struct gdbarch *gdbarch, int char_signed)
void set_gdbarch_ps_regnum(struct gdbarch *gdbarch, int ps_regnum)
void set_gdbarch_disassembler_options(struct gdbarch *gdbarch, char **disassembler_options)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
void set_gdbarch_breakpoint_kind_from_pc(struct gdbarch *gdbarch, gdbarch_breakpoint_kind_from_pc_ftype *breakpoint_kind_from_pc)
const char * gdbarch_register_name(struct gdbarch *gdbarch, int regnr)
void set_gdbarch_valid_disassembler_options(struct gdbarch *gdbarch, const disasm_options_and_args_t *valid_disassembler_options)
void set_gdbarch_frame_align(struct gdbarch *gdbarch, gdbarch_frame_align_ftype *frame_align)
void set_gdbarch_max_insn_length(struct gdbarch *gdbarch, ULONGEST max_insn_length)
void set_gdbarch_write_pc(struct gdbarch *gdbarch, gdbarch_write_pc_ftype *write_pc)
void set_gdbarch_get_longjmp_target(struct gdbarch *gdbarch, gdbarch_get_longjmp_target_ftype *get_longjmp_target)
void set_gdbarch_skip_prologue(struct gdbarch *gdbarch, gdbarch_skip_prologue_ftype *skip_prologue)
int gdbarch_addr_bit(struct gdbarch *gdbarch)
void set_gdbarch_push_dummy_code(struct gdbarch *gdbarch, gdbarch_push_dummy_code_ftype *push_dummy_code)
void set_gdbarch_int_bit(struct gdbarch *gdbarch, int int_bit)
void set_gdbarch_return_value(struct gdbarch *gdbarch, gdbarch_return_value_ftype *return_value)
void set_gdbarch_decr_pc_after_break(struct gdbarch *gdbarch, CORE_ADDR decr_pc_after_break)
void set_gdbarch_believe_pcc_promotion(struct gdbarch *gdbarch, int believe_pcc_promotion)
void set_gdbarch_have_nonsteppable_watchpoint(struct gdbarch *gdbarch, int have_nonsteppable_watchpoint)
void set_gdbarch_fp0_regnum(struct gdbarch *gdbarch, int fp0_regnum)
void set_gdbarch_double_bit(struct gdbarch *gdbarch, int double_bit)
void set_gdbarch_inner_than(struct gdbarch *gdbarch, gdbarch_inner_than_ftype *inner_than)
void set_gdbarch_cannot_step_breakpoint(struct gdbarch *gdbarch, int cannot_step_breakpoint)
void set_gdbarch_sp_regnum(struct gdbarch *gdbarch, int sp_regnum)
int gdbarch_sp_regnum(struct gdbarch *gdbarch)
void set_gdbarch_pc_regnum(struct gdbarch *gdbarch, int pc_regnum)
void set_gdbarch_virtual_frame_pointer(struct gdbarch *gdbarch, gdbarch_virtual_frame_pointer_ftype *virtual_frame_pointer)
void set_gdbarch_print_insn(struct gdbarch *gdbarch, gdbarch_print_insn_ftype *print_insn)
void set_gdbarch_float_bit(struct gdbarch *gdbarch, int float_bit)
int gdbarch_ps_regnum(struct gdbarch *gdbarch)
void set_gdbarch_short_bit(struct gdbarch *gdbarch, int short_bit)
void set_gdbarch_num_pseudo_regs(struct gdbarch *gdbarch, int num_pseudo_regs)
void set_gdbarch_long_bit(struct gdbarch *gdbarch, int long_bit)
void set_gdbarch_ptr_bit(struct gdbarch *gdbarch, int ptr_bit)
void set_gdbarch_type_align(struct gdbarch *gdbarch, gdbarch_type_align_ftype *type_align)
void set_gdbarch_cannot_store_register(struct gdbarch *gdbarch, gdbarch_cannot_store_register_ftype *cannot_store_register)
void set_gdbarch_cannot_fetch_register(struct gdbarch *gdbarch, gdbarch_cannot_fetch_register_ftype *cannot_fetch_register)
void set_gdbarch_num_regs(struct gdbarch *gdbarch, int num_regs)
void set_gdbarch_sw_breakpoint_from_kind(struct gdbarch *gdbarch, gdbarch_sw_breakpoint_from_kind_ftype *sw_breakpoint_from_kind)
void set_gdbarch_double_format(struct gdbarch *gdbarch, const struct floatformat **double_format)
void set_gdbarch_float_format(struct gdbarch *gdbarch, const struct floatformat **float_format)
void set_gdbarch_push_dummy_call(struct gdbarch *gdbarch, gdbarch_push_dummy_call_ftype *push_dummy_call)
struct gdbarch * gdbarch_alloc(const struct gdbarch_info *info, gdbarch_tdep_up tdep)
std::unique_ptr< gdbarch_tdep_base > gdbarch_tdep_up
function_call_return_method
const struct floatformat * floatformats_ieee_single[BFD_ENDIAN_UNKNOWN]
const struct floatformat * floatformats_ieee_double[BFD_ENDIAN_UNKNOWN]
struct type * check_typedef(struct type *type)
struct obj_section * find_pc_section(CORE_ADDR pc)
CORE_ADDR entry_point_address(void)
void gdbarch_init_osabi(struct gdbarch_info info, struct gdbarch *gdbarch)
pv_t pv_subtract(pv_t a, pv_t b)
pv_t pv_constant(CORE_ADDR k)
pv_t pv_register(int reg, CORE_ADDR k)
int pv_is_identical(pv_t a, pv_t b)
pv_t pv_add_constant(pv_t v, CORE_ADDR k)
int pv_is_register(pv_t a, int r)
enum register_status regcache_cooked_read_signed(struct regcache *regcache, int regnum, LONGEST *val)
enum register_status regcache_cooked_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
struct regcache * get_current_regcache(void)
void regcache_cooked_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
LONGEST frame_base_offset
trad_frame_saved_reg * saved_regs
const int * sc_reg_offset
bool(* is_sigtramp)(frame_info_ptr)
CORE_ADDR(* sigcontext_addr)(frame_info_ptr)
std::vector< const char * > names
std::vector< struct register_info > registers
enum dwarf2_frame_reg_rule how
struct disassemble_info * disasm_info()
struct bfd_section * the_bfd_section
std::vector< tdesc_feature_up > features
void set_addr(LONGEST addr)
CORE_ADDR skip_prologue_using_sal(struct gdbarch *gdbarch, CORE_ADDR func_addr)
struct symtab_and_line find_pc_line(CORE_ADDR pc, int notcurrent)
tdesc_arch_data_up tdesc_data_alloc(void)
const struct tdesc_feature * tdesc_find_feature(const struct target_desc *target_desc, const char *name)
int tdesc_numbered_register(const struct tdesc_feature *feature, struct tdesc_arch_data *data, int regno, const char *name)
static const registry< gdbarch >::key< tdesc_arch_data > tdesc_data
void tdesc_use_registers(struct gdbarch *gdbarch, const struct target_desc *target_desc, tdesc_arch_data_up &&early_data, tdesc_unknown_register_ftype unk_reg_cb)
int tdesc_has_registers(const struct target_desc *target_desc)
const struct bfd_arch_info * tdesc_architecture(const struct target_desc *target_desc)
std::unique_ptr< tdesc_arch_data, tdesc_arch_data_deleter > tdesc_arch_data_up
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
trad_frame_saved_reg * trad_frame_alloc_saved_regs(struct gdbarch *gdbarch)
struct value * trad_frame_get_prev_register(frame_info_ptr this_frame, trad_frame_saved_reg this_saved_regs[], int regnum)
const char * print_core_address(struct gdbarch *gdbarch, CORE_ADDR address)
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR addr)
void gdb_printf(struct ui_file *stream, const char *format,...)
CORE_ADDR value_as_address(struct value *val)
struct value * access_value_history(int num)