35 #include "opcode/arc.h" 36 #include "opcodes/arc-dis.h" 107 "r0",
"r1",
"r2",
"r3",
108 "r4",
"r5",
"r6",
"r7",
109 "r8",
"r9",
"r10",
"r11",
110 "r12",
"r13",
"r14",
"r15",
111 "r16",
"r17",
"r18",
"r19",
112 "r20",
"r21",
"r22",
"r23",
113 "r24",
"r25",
"gp",
"fp",
114 "sp",
"ilink",
"r30",
"blink",
115 "r32",
"r33",
"r34",
"r35",
116 "r36",
"r37",
"r38",
"r39",
117 "r40",
"r41",
"r42",
"r43",
118 "r44",
"r45",
"r46",
"r47",
119 "r48",
"r49",
"r50",
"r51",
120 "r52",
"r53",
"r54",
"r55",
121 "r56",
"r57",
"accl",
"acch",
122 "lp_count",
"reserved",
"limm",
"pcl",
130 "r0",
"r1",
"r2",
"r3",
131 "r4",
"r5",
"r6",
"r7",
132 "r8",
"r9",
"r10",
"r11",
133 "r12",
"r13",
"r14",
"r15",
134 "r16",
"r17",
"r18",
"r19",
135 "r20",
"r21",
"r22",
"r23",
136 "r24",
"r25",
"gp",
"fp",
137 "sp",
"ilink1",
"ilink2",
"blink",
138 "r32",
"r33",
"r34",
"r35",
139 "r36",
"r37",
"r38",
"r39",
140 "r40",
"r41",
"r42",
"r43",
141 "r44",
"r45",
"r46",
"r47",
142 "r48",
"r49",
"r50",
"r51",
143 "r52",
"r53",
"r54",
"r55",
144 "r56",
"r57",
"r58",
"r59",
145 "lp_count",
"reserved",
"limm",
"pcl",
160 unsigned int operand_num)
162 switch (insn.operands[operand_num].kind)
164 case ARC_OPERAND_KIND_LIMM:
166 return insn.limm_value;
167 case ARC_OPERAND_KIND_SHIMM:
168 return insn.operands[operand_num].value;
174 insn.operands[operand_num].value,
184 unsigned int operand_num)
186 switch (insn.operands[operand_num].kind)
188 case ARC_OPERAND_KIND_LIMM:
195 case ARC_OPERAND_KIND_SHIMM:
197 return insn.operands[operand_num].value;
203 insn.operands[operand_num].value,
215 if (insn.insn_class == PUSH || insn.insn_class == POP)
218 gdb_assert (insn.insn_class == LOAD || insn.insn_class == STORE);
225 return insn.operands[1].value;
235 if (insn.insn_class == POP)
237 else if (insn.insn_class == PUSH)
240 gdb_assert (insn.insn_class == LOAD || insn.insn_class == STORE);
246 if (insn.operands_count < 3)
251 if (insn.writeback_mode == ARC_WRITEBACK_AS)
255 gdb_assert (insn.data_size_mode != ARC_SCALING_B);
256 if (insn.data_size_mode == ARC_SCALING_H)
270 if (insn.insn_class == BI)
276 else if (insn.insn_class == BIH)
283 else if (insn.insn_class == JLI)
286 "JLI_S instruction is not supported by the GDB.");
289 else if (insn.insn_class == EI)
292 "EI_S instruction is not supported by the GDB.");
296 else if (insn.insn_class == LEAVE)
304 else if (insn.insn_class == BBIT0 || insn.insn_class == BBIT1
305 || insn.insn_class == BRCC)
313 return pcrel_addr +
align_down (insn.address, 4);
316 else if (insn.insn_class == BRANCH || insn.insn_class == LOOP)
322 return pcrel_addr +
align_down (insn.address, 4);
325 else if (insn.insn_class == JUMP)
342 arc_print (
"Dumping arc_instruction at %s\n",
344 arc_print (
"\tlength = %u\n", insn.length);
348 arc_print (
"\tThis is not a valid ARC instruction.\n");
352 arc_print (
"\tlength_with_limm = %u\n", insn.length + (insn.limm_p ? 4 : 0));
353 arc_print (
"\tcc = 0x%x\n", insn.condition_code);
354 arc_print (
"\tinsn_class = %u\n", insn.insn_class);
355 arc_print (
"\tis_control_flow = %i\n", insn.is_control_flow);
356 arc_print (
"\thas_delay_slot = %i\n", insn.has_delay_slot);
361 if (insn.is_control_flow)
367 arc_print (
"\tlimm_p = %i\n", insn.limm_p);
369 arc_print (
"\tlimm_value = 0x%08x\n", insn.limm_value);
371 if (insn.insn_class == STORE || insn.insn_class == LOAD
372 || insn.insn_class == PUSH || insn.insn_class == POP)
374 arc_print (
"\twriteback_mode = %u\n", insn.writeback_mode);
375 arc_print (
"\tdata_size_mode = %u\n", insn.data_size_mode);
376 arc_print (
"\tmemory_base_register = %s\n",
385 arc_print (
"\toperands_count = %u\n", insn.operands_count);
386 for (
unsigned int i = 0; i < insn.operands_count; ++i)
388 int is_reg = (insn.operands[i].kind == ARC_OPERAND_KIND_REG);
410 return (insn.address + insn.length + (insn.limm_p ? 4 : 0));
468 debug_printf (
"arc: Changing PC while in delay slot. Will " 469 "reset STATUS32.DE bit to zero. Value of STATUS32 " 470 "register is 0x%s\n",
506 int *reg_ptr,
LONGEST *offset_ptr)
599 debug_printf (
"arc: push_dummy_call (nargs = %d)\n", nargs);
616 debug_printf (
"arc: struct return address %s passed in R%d",
624 unsigned int total_space = 0;
628 for (
int i = 0; i < nargs; i++)
631 unsigned int space =
align_up (len, 4);
633 total_space += space;
636 debug_printf (
"arc: arg %d: %u bytes -> %u\n", i, len, space);
644 for (
int i = 0; i < nargs; i++)
647 unsigned int space =
align_up (len, 4);
651 debug_printf (
"arc: copying arg %d, val 0x%08x, len %d to mem\n",
662 debug_printf (
"arc: passing 0x%02x%02x%02x%02x in register R%d\n",
663 data[0], data[1], data[2], data[3], arg_reg);
673 if (total_space == 0)
684 debug_printf (
"arc: passing %d bytes on stack\n", total_space);
690 xfree (memory_image);
815 error (
_(
"arc: extract_return_value: type length %u too large"), len);
869 error (
_(
"arc_store_return_value: type length too large."));
911 debug_printf (
"arc: return_value (readbuf = %s, writebuf = %s)\n",
915 if (writebuf != NULL)
923 else if (readbuf != NULL)
932 return (is_struct_return
952 if (insn.operands[operand].kind == ARC_OPERAND_KIND_REG)
953 return regs[insn.operands[operand].value];
978 if (insn.is_control_flow || insn.condition_code != ARC_CC_AL)
982 if (insn.insn_class == STORE || insn.insn_class == PUSH)
989 if (insn.operands_count > 1
990 && insn.operands[1].kind != ARC_OPERAND_KIND_REG)
1011 if (insn.writeback_mode == ARC_WRITEBACK_AB)
1012 addr =
regs[base_reg];
1020 if (insn.data_size_mode != ARC_SCALING_D)
1027 if (insn.data_size_mode == ARC_SCALING_B)
1029 else if (insn.data_size_mode == ARC_SCALING_H)
1038 if (insn.operands[0].kind == ARC_OPERAND_KIND_REG)
1041 pv_t store_value1 =
regs[insn.operands[0].value];
1042 pv_t store_value2 =
regs[insn.operands[0].value + 1];
1056 if (insn.writeback_mode == ARC_WRITEBACK_A
1057 || insn.writeback_mode == ARC_WRITEBACK_AB)
1063 else if (insn.insn_class == MOVE)
1068 if (insn.operands[0].kind == ARC_OPERAND_KIND_REG)
1070 int dst_regnum = insn.operands[0].value;
1075 else if (insn.insn_class ==
SUB)
1080 if (insn.operands[0].kind != ARC_OPERAND_KIND_REG)
1083 int dst_regnum = insn.operands[0].value;
1088 else if (insn.insn_class == ENTER)
1119 if (insn.operands_count > 1)
1122 is_fp_saved =
false;
1124 bool is_blink_saved;
1125 if (insn.operands_count > 1)
1126 is_blink_saved = (insn.operands[insn.operands_count - 1].value
1129 is_blink_saved =
false;
1132 CORE_ADDR st_size = ((regs_saved + is_fp_saved + is_blink_saved)
1189 arc_fprintf_disasm (
void *stream, const
char *format, ...)
1194 struct disassemble_info
1197 struct disassemble_info di;
1198 init_disassemble_info (&di, &
null_stream, arc_fprintf_disasm);
1202 di.read_memory_func = [](bfd_vma memaddr,
gdb_byte *myaddr,
1203 unsigned int len,
struct disassemble_info *info)
1265 debug_printf (
"arc: analyze_prologue (entrypoint=%s, limit_pc=%s)\n",
1275 CORE_ADDR current_prologue_end = entrypoint;
1278 while (current_prologue_end < limit_pc)
1280 struct arc_instruction insn;
1294 debug_printf (
"arc: End of prologue reached at address %s\n",
1325 return current_prologue_end;
1360 const char *func_name;
1369 if (postprologue_pc != 0)
1370 return std::max (pc, postprologue_pc);
1426 if ((info->disassembler_options == NULL) && (info->section == NULL))
1486 if ((length_with_limm == 4 || length_with_limm == 8)
1567 (addresses_known) ?
"address" :
"offset",
1590 prologue_end = prev_pc;
1591 else if (sal.
end < prologue_end)
1593 prologue_end = sal.
end;
1595 prologue_end = std::min (prologue_end, prev_pc);
1623 if (unwound_fb == 0)
1650 if (*this_cache == NULL)
1687 static struct value *
1689 void **this_cache,
int regnum)
1691 if (*this_cache == NULL)
1768 debug_printf (
"arc: Target description initialization.\n");
1788 const int is_arcv2 = (info.
bfd_arch_info->mach == bfd_mach_arc_arcv2);
1790 const char *
const *core_regs;
1791 const char *core_feature_name;
1800 debug_printf (
"arc: Using default register set for ARC v2.\n");
1806 debug_printf (
"arc: Using default register set for ARCompact.\n");
1829 if (feature != NULL)
1844 arc_print (
_(
"Error: ARC v2 target description supplied for " 1845 "non-ARCv2 target.\n"));
1849 is_reduced_rf = FALSE;
1856 if (feature != NULL)
1860 arc_print (
_(
"Error: ARC v2 target description supplied for " 1861 "non-ARCv2 target.\n"));
1865 is_reduced_rf = TRUE;
1873 if (feature != NULL)
1877 arc_print (
_(
"Error: ARCompact target description supplied " 1878 "for non-ARCompact target.\n"));
1882 is_reduced_rf = FALSE;
1888 arc_print (
_(
"Error: Couldn't find core register feature in " 1889 "supplied target description."));
1922 arc_print (
_(
"Error: Cannot find required register `%s' in " 1923 "feature `%s'.\n"), core_regs[i], core_feature_name);
1932 if (feature == NULL)
1934 arc_print (
_(
"Error: Cannot find required feature `%s' in supplied " 1946 arc_print (
_(
"Error: Cannot find required register `%s' " 1947 "in feature `%s'.\n"),
2071 const struct bfd_arch_info *tdesc_arch
2073 if (tdesc_arch != NULL)
2093 switch (tdesc_arch->mach)
2095 case bfd_mach_arc_arc601:
2098 case bfd_mach_arc_arc600:
2101 case bfd_mach_arc_arc700:
2104 case bfd_mach_arc_arcv2:
2151 if (args != NULL && strlen (args) > 0)
2158 struct arc_instruction insn;
2176 _(
"ARC-specific maintenance commands for printing GDB " 2183 _(
"Dump arc_instruction structure for specified address."),
2189 _(
"Set ARC specific debugging."),
2190 _(
"Show ARC specific debugging."),
2191 _(
"Non-zero enables ARC specific debugging."),
struct gdbarch * target_gdbarch(void)
void set_gdbarch_num_regs(struct gdbarch *gdbarch, int num_regs)
void set_gdbarch_double_bit(struct gdbarch *gdbarch, int double_bit)
void set_gdbarch_frame_align(struct gdbarch *gdbarch, gdbarch_frame_align_ftype frame_align)
void set_gdbarch_have_nonsteppable_watchpoint(struct gdbarch *gdbarch, int have_nonsteppable_watchpoint)
void set_gdbarch_cannot_fetch_register(struct gdbarch *gdbarch, gdbarch_cannot_fetch_register_ftype cannot_fetch_register)
static pv_t arc_pv_get_operand(pv_t *regs, const struct arc_instruction &insn, int operand)
bool store_would_trash(pv_t addr)
void set_gdbarch_float_format(struct gdbarch *gdbarch, const struct floatformat **float_format)
void set_gdbarch_ps_regnum(struct gdbarch *gdbarch, int ps_regnum)
static const struct frame_base arc_normal_base
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
static void arc_dwarf2_frame_init_reg(struct gdbarch *gdbarch, int regnum, struct dwarf2_frame_state_reg *reg, struct frame_info *info)
void set_gdbarch_get_longjmp_target(struct gdbarch *gdbarch, gdbarch_get_longjmp_target_ftype get_longjmp_target)
CORE_ADDR get_frame_address_in_block(struct frame_info *this_frame)
static const gdb_byte arc_brk_be[]
void set_gdbarch_float_bit(struct gdbarch *gdbarch, int float_bit)
CORE_ADDR get_frame_pc(struct frame_info *frame)
void set_gdbarch_fp0_regnum(struct gdbarch *gdbarch, int fp0_regnum)
void gdbarch_init_osabi(struct gdbarch_info info, struct gdbarch *gdbarch)
pv_t pv_add_constant(pv_t v, CORE_ADDR k)
struct value * trad_frame_get_prev_register(struct frame_info *this_frame, struct trad_frame_saved_reg this_saved_regs[], int regnum)
const struct floatformat * floatformats_ieee_double[BFD_ENDIAN_UNKNOWN]
int trad_frame_addr_p(struct trad_frame_saved_reg this_saved_regs[], int regnum)
static struct cmd_list_element * maintenance_print_arc_list
struct bfd_section * the_bfd_section
LONGEST frame_base_offset
struct gdbarch_tdep * tdep
void set_gdbarch_write_pc(struct gdbarch *gdbarch, gdbarch_write_pc_ftype write_pc)
char * plongest(LONGEST l)
ULONGEST align_down(ULONGEST v, int n)
static void maintenance_print_arc_command(const char *args, int from_tty)
ULONGEST frame_unwind_register_unsigned(struct frame_info *frame, int regnum)
int gdb_insn_length(struct gdbarch *gdbarch, CORE_ADDR addr)
void set_gdbarch_short_bit(struct gdbarch *gdbarch, int short_bit)
char * phex(ULONGEST l, int sizeof_l)
CORE_ADDR get_frame_sp(struct frame_info *this_frame)
int pv_is_register(pv_t a, int r)
static struct value * arc_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
static const gdb_byte arc_brk_le[]
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, const char *doc, struct cmd_list_element **list)
CORE_ADDR skip_prologue_using_sal(struct gdbarch *gdbarch, CORE_ADDR func_addr)
const struct bfd_arch_info * bfd_arch_info
static void arc_store_return_value(struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
static int arc_get_longjmp_target(struct frame_info *frame, CORE_ADDR *pc)
static const char *const aux_minimal_register_names[]
static int arc_mach_is_arc600(struct gdbarch *gdbarch)
struct gdbarch_tdep * gdbarch_tdep(struct gdbarch *gdbarch)
void set_gdbarch_long_long_align_bit(struct gdbarch *gdbarch, int long_long_align_bit)
static int ATTRIBUTE_PRINTF(2, 3)
static struct frame_id arc_dummy_id(struct gdbarch *gdbarch, struct frame_info *this_frame)
void tdesc_data_cleanup(void *data_untyped)
int gdbarch_ps_regnum(struct gdbarch *gdbarch)
const char * tdesc_feature_name(const struct tdesc_feature *feature)
static void dump_arc_instruction_command(const char *args, int from_tty)
void frame_unwind_append_unwinder(struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
pv_t pv_constant(CORE_ADDR k)
struct regcache * get_current_regcache(void)
#define FRAME_OBSTACK_ZALLOC(TYPE)
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR addr)
#define host_address_to_string(ADDR)
struct value * frame_unwind_got_constant(struct frame_info *frame, int regnum, ULONGEST val)
static const gdb_byte * arc_sw_breakpoint_from_kind(struct gdbarch *gdbarch, int kind, int *size)
struct cmd_list_element * add_prefix_cmd(const char *name, enum command_class theclass, cmd_const_cfunc_ftype *fun, const char *doc, struct cmd_list_element **prefixlist, const char *prefixname, int allow_unknown, struct cmd_list_element **list)
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)
int target_read_code(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
void gdbarch_register(enum bfd_architecture bfd_architecture, gdbarch_init_ftype *init, gdbarch_dump_tdep_ftype *dump_tdep)
int pv_is_identical(pv_t a, pv_t b)
struct value * evaluate_expression(struct expression *exp)
void set_gdbarch_addr_bit(struct gdbarch *gdbarch, int addr_bit)
CORE_ADDR arc_insn_get_branch_target(const struct arc_instruction &insn)
int tdesc_numbered_register(const struct tdesc_feature *feature, struct tdesc_arch_data *data, int regno, const char *name)
static int arc_breakpoint_kind_from_pc(struct gdbarch *gdbarch, CORE_ADDR *pcptr)
static ULONGEST arc_insn_get_operand_value(const struct arc_instruction &insn, unsigned int operand_num)
void frame_base_set_default(struct gdbarch *gdbarch, const struct frame_base *default_base)
static void arc_extract_return_value(struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, gdb_byte *valbuf)
static CORE_ADDR arc_analyze_prologue(struct gdbarch *gdbarch, const CORE_ADDR entrypoint, const CORE_ADDR limit_pc, struct arc_frame_cache *cache)
#define ARC_REGISTER_SIZE
static const int MAX_PROLOGUE_LENGTH
const gdb_byte * value_contents(struct value *value)
#define arc_print(fmt, args...)
static struct gdbarch * arc_gdbarch_init(struct gdbarch_info info, struct gdbarch_list *arches)
struct symtab_and_line find_pc_line(CORE_ADDR pc, int notcurrent)
int gdbarch_sp_regnum(struct gdbarch *gdbarch)
static int arc_tdesc_init(struct gdbarch_info info, const struct target_desc **tdesc, struct tdesc_arch_data **tdesc_data)
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
enum register_status regcache_cooked_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
void set_gdbarch_sp_regnum(struct gdbarch *gdbarch, int sp_regnum)
void _initialize_arc_tdep(void)
void add_setshow_zinteger_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
void set_gdbarch_decr_pc_after_break(struct gdbarch *gdbarch, CORE_ADDR decr_pc_after_break)
void set_gdbarch_dummy_id(struct gdbarch *gdbarch, gdbarch_dummy_id_ftype dummy_id)
void arc_insn_dump(const struct arc_instruction &insn)
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
void set_gdbarch_believe_pcc_promotion(struct gdbarch *gdbarch, int believe_pcc_promotion)
#define gdb_assert_not_reached(message)
int default_print_insn(bfd_vma memaddr, disassemble_info *info)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
char * pulongest(ULONGEST u)
void set_gdbarch_cannot_store_register(struct gdbarch *gdbarch, gdbarch_cannot_store_register_ftype cannot_store_register)
static bool arc_arch_is_hs(const struct bfd_arch_info *arch)
int find_pc_partial_function(CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr)
static void arc_print_frame_cache(struct gdbarch *gdbarch, const char *message, struct arc_frame_cache *cache, int addresses_known)
static const char aux_minimal_feature_name[]
static const struct frame_unwind arc_frame_unwind
void set_gdbarch_unwind_pc(struct gdbarch *gdbarch, gdbarch_unwind_pc_ftype unwind_pc)
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
static CORE_ADDR arc_skip_prologue(struct gdbarch *gdbarch, CORE_ADDR pc)
static const char core_reduced_v2_feature_name[]
void store(pv_t addr, CORE_ADDR size, pv_t value)
const char * gdbarch_register_name(struct gdbarch *gdbarch, int regnr)
static void initialize_tdesc_arc_v2(void)
int gdbarch_addr_bit(struct gdbarch *gdbarch)
void set_gdbarch_unwind_sp(struct gdbarch *gdbarch, gdbarch_unwind_sp_ftype unwind_sp)
struct cmd_list_element * setdebuglist
static LONGEST arc_insn_get_operand_value_signed(const struct arc_instruction &insn, unsigned int operand_num)
static char * arc_disassembler_options
struct obj_section * find_pc_section(CORE_ADDR pc)
ULONGEST get_frame_register_unsigned(struct frame_info *frame, int regnum)
static void arc_write_pc(struct regcache *regcache, CORE_ADDR new_pc)
struct cmd_list_element * maintenanceprintlist
void set_gdbarch_breakpoint_kind_from_pc(struct gdbarch *gdbarch, gdbarch_breakpoint_kind_from_pc_ftype breakpoint_kind_from_pc)
struct trad_frame_saved_reg * trad_frame_alloc_saved_regs(struct gdbarch *gdbarch)
void set_gdbarch_long_long_bit(struct gdbarch *gdbarch, int long_long_bit)
void cmd_show_list(struct cmd_list_element *list, int from_tty, const char *prefix)
const struct target_desc * target_desc
struct trad_frame_saved_reg * saved_regs
struct disassemble_info arc_disassemble_info(struct gdbarch *gdbarch)
void set_gdbarch_disassembler_options(struct gdbarch *gdbarch, char **disassembler_options)
const struct floatformat * floatformats_ieee_single[BFD_ENDIAN_UNKNOWN]
static struct arc_frame_cache * arc_make_frame_cache(struct frame_info *this_frame)
void set_gdbarch_push_dummy_code(struct gdbarch *gdbarch, gdbarch_push_dummy_code_ftype push_dummy_code)
static const char *const core_v2_register_names[]
#define gdb_static_assert(expr)
void tdesc_use_registers(struct gdbarch *gdbarch, const struct target_desc *target_desc, struct tdesc_arch_data *early_data)
int core_addr_lessthan(CORE_ADDR lhs, CORE_ADDR rhs)
static const gdb_byte arc_brk_s_be[]
ULONGEST align_up(ULONGEST v, int n)
CORE_ADDR arc_insn_get_memory_offset(const struct arc_instruction &insn)
void set_gdbarch_char_signed(struct gdbarch *gdbarch, int char_signed)
CORE_ADDR entry_point_address(void)
static CORE_ADDR arc_unwind_pc(struct gdbarch *gdbarch, struct frame_info *next_frame)
#define TYPE_CODE(thistype)
static bool arc_is_in_prologue(struct gdbarch *gdbarch, const struct arc_instruction &insn, pv_t *regs, struct pv_area *stack)
static void initialize_tdesc_arc_arcompact(void)
void regcache_cooked_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
void set_gdbarch_int_bit(struct gdbarch *gdbarch, int int_bit)
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, int struct_return, CORE_ADDR struct_addr)
static const char core_arcompact_feature_name[]
void set_gdbarch_virtual_frame_pointer(struct gdbarch *gdbarch, gdbarch_virtual_frame_pointer_ftype virtual_frame_pointer)
void set_gdbarch_num_pseudo_regs(struct gdbarch *gdbarch, int num_pseudo_regs)
void dwarf2_append_unwinders(struct gdbarch *gdbarch)
struct m32c_reg regs[M32C_MAX_NUM_REGS]
const struct bfd_arch_info * tdesc_architecture(const struct target_desc *target_desc)
CORE_ADDR arc_insn_get_linear_next_pc(const struct arc_instruction &insn)
void set_gdbarch_double_format(struct gdbarch *gdbarch, const struct floatformat **double_format)
static int arc_cannot_fetch_register(struct gdbarch *gdbarch, int regnum)
int record_latest_value(struct value *val)
struct tdesc_arch_data * tdesc_data_alloc(void)
const char * print_core_address(struct gdbarch *gdbarch, CORE_ADDR address)
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)
unsigned long long ULONGEST
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
static CORE_ADDR arc_frame_base_address(struct frame_info *this_frame, void **prologue_cache)
expression_up parse_expression(const char *)
static void arc_virtual_frame_pointer(struct gdbarch *gdbarch, CORE_ADDR pc, int *reg_ptr, LONGEST *offset_ptr)
const struct tdesc_feature * tdesc_find_feature(const struct target_desc *target_desc, const char *name)
struct type * value_type(const struct value *value)
void set_gdbarch_long_bit(struct gdbarch *gdbarch, int long_bit)
void set_gdbarch_return_value(struct gdbarch *gdbarch, gdbarch_return_value_ftype return_value)
const struct bfd_arch_info * gdbarch_bfd_arch_info(struct gdbarch *gdbarch)
void dwarf2_frame_set_init_reg(struct gdbarch *gdbarch, void(*init_reg)(struct gdbarch *, int, struct dwarf2_frame_state_reg *, struct frame_info *))
struct cmd_list_element * showdebuglist
struct value * access_value_history(int num)
int gdbarch_pc_regnum(struct gdbarch *gdbarch)
CORE_ADDR value_as_address(struct value *val)
bool find_reg(struct gdbarch *gdbarch, int reg, CORE_ADDR *offset_p)
void set_gdbarch_cannot_step_breakpoint(struct gdbarch *gdbarch, int cannot_step_breakpoint)
static CORE_ADDR arc_frame_align(struct gdbarch *gdbarch, CORE_ADDR sp)
int arc_delayed_print_insn(bfd_vma addr, struct disassemble_info *info)
#define TYPE_LENGTH(thistype)
void set_gdbarch_ptr_bit(struct gdbarch *gdbarch, int ptr_bit)
pv_t pv_subtract(pv_t a, pv_t b)
void set_gdbarch_push_dummy_call(struct gdbarch *gdbarch, gdbarch_push_dummy_call_ftype push_dummy_call)
void debug_printf(const char *fmt,...)
void set_gdbarch_sw_breakpoint_from_kind(struct gdbarch *gdbarch, gdbarch_sw_breakpoint_from_kind_ftype sw_breakpoint_from_kind)
static CORE_ADDR arc_unwind_sp(struct gdbarch *gdbarch, struct frame_info *next_frame)
void write_memory(CORE_ADDR memaddr, const bfd_byte *myaddr, ssize_t len)
void set_gdbarch_skip_prologue(struct gdbarch *gdbarch, gdbarch_skip_prologue_ftype skip_prologue)
struct target_desc * tdesc_arc_v2
int arc_insn_get_memory_base_reg(const struct arc_instruction &insn)
static struct gdbarch_data * tdesc_data
static void arc_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static const gdb_byte arc_brk_s_le[]
void set_gdbarch_pc_regnum(struct gdbarch *gdbarch, int pc_regnum)
void set_gdbarch_max_insn_length(struct gdbarch *gdbarch, ULONGEST max_insn_length)
int tdesc_has_registers(const struct target_desc *target_desc)
CORE_ADDR get_frame_func(struct frame_info *this_frame)
static void arc_dump_tdep(struct gdbarch *gdbarch, struct ui_file *file)
void error(const char *fmt,...)
pv_t pv_register(int reg, CORE_ADDR k)
struct gdbarch * gdbarch_alloc(const struct gdbarch_info *info, struct gdbarch_tdep *tdep)
void set_gdbarch_inner_than(struct gdbarch *gdbarch, gdbarch_inner_than_ftype inner_than)
enum register_status regcache_cooked_read_signed(struct regcache *regcache, int regnum, LONGEST *val)
static const char core_v2_feature_name[]
struct gdbarch * get_frame_arch(struct frame_info *this_frame)
void regcache_cooked_write(struct regcache *regcache, int regnum, const gdb_byte *buf)
static const char *const core_arcompact_register_names[]
void set_gdbarch_print_insn(struct gdbarch *gdbarch, gdbarch_print_insn_ftype print_insn)
static void store_unsigned_integer(gdb_byte *addr, int len, enum bfd_endian byte_order, ULONGEST val)
struct target_desc * tdesc_arc_arcompact
static int arc_cannot_store_register(struct gdbarch *gdbarch, int regnum)