GDB (xrefs)
|
#include "defs.h"
#include "frame.h"
#include "frame-unwind.h"
#include "frame-base.h"
#include "trad-frame.h"
#include "dwarf2/frame.h"
#include "symtab.h"
#include "inferior.h"
#include "gdbtypes.h"
#include "gdbcore.h"
#include "gdbcmd.h"
#include "target.h"
#include "dis-asm.h"
#include "regcache.h"
#include "value.h"
#include "symfile.h"
#include "arch-utils.h"
#include "glibc-tdep.h"
#include "infcall.h"
#include "regset.h"
#include "tramp-frame.h"
#include "linux-tdep.h"
#include "solib.h"
#include "objfiles.h"
#include "osabi.h"
#include "tic6x-tdep.h"
#include "language.h"
#include "target-descriptions.h"
#include <algorithm>
Go to the source code of this file.
Classes | |
struct | tic6x_unwind_cache |
Macros | |
#define | TIC6X_OPCODE_SIZE 4 |
#define | TIC6X_FETCH_PACKET_SIZE 32 |
#define | INST_S_BIT(INST) ((INST >> 1) & 1) |
#define | INST_X_BIT(INST) ((INST >> 12) & 1) |
Functions | |
static const char * | tic6x_register_name (struct gdbarch *gdbarch, int regno) |
static struct type * | tic6x_register_type (struct gdbarch *gdbarch, int regno) |
static void | tic6x_setup_default (struct tic6x_unwind_cache *cache) |
static unsigned long | tic6x_fetch_instruction (struct gdbarch *, CORE_ADDR) |
static int | tic6x_register_number (int reg, int side, int crosspath) |
static CORE_ADDR | tic6x_analyze_prologue (struct gdbarch *gdbarch, const CORE_ADDR start_pc, const CORE_ADDR current_pc, struct tic6x_unwind_cache *cache, frame_info_ptr this_frame) |
static CORE_ADDR | tic6x_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) |
static int | tic6x_breakpoint_kind_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr) |
static const gdb_byte * | tic6x_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size) |
static void | tic6x_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, struct dwarf2_frame_state_reg *reg, frame_info_ptr this_frame) |
static CORE_ADDR | tic6x_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame) |
static struct tic6x_unwind_cache * | tic6x_frame_unwind_cache (frame_info_ptr this_frame, void **this_prologue_cache) |
static void | tic6x_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id) |
static struct value * | tic6x_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum) |
static CORE_ADDR | tic6x_frame_base_address (frame_info_ptr this_frame, void **this_cache) |
static struct tic6x_unwind_cache * | tic6x_make_stub_cache (frame_info_ptr this_frame) |
static void | tic6x_stub_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id) |
static int | tic6x_stub_unwind_sniffer (const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache) |
static int | tic6x_condition_true (struct regcache *regcache, unsigned long inst) |
static int | tic6x_extract_signed_field (int value, int low_bit, int bits) |
static CORE_ADDR | tic6x_get_next_pc (struct regcache *regcache, CORE_ADDR pc) |
static std::vector< CORE_ADDR > | tic6x_software_single_step (struct regcache *regcache) |
static CORE_ADDR | tic6x_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr) |
static void | tic6x_extract_return_value (struct type *valtype, struct regcache *regcache, enum bfd_endian byte_order, gdb_byte *valbuf) |
static void | tic6x_store_return_value (struct type *valtype, struct regcache *regcache, enum bfd_endian byte_order, const gdb_byte *valbuf) |
static enum return_value_convention | tic6x_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf) |
static int | tic6x_arg_type_alignment (struct type *type) |
static CORE_ADDR | tic6x_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 int | tic6x_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc) |
static int | tic6x_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc) |
static int | tic6x_return_in_first_hidden_param_p (struct gdbarch *gdbarch, struct type *type) |
static struct gdbarch * | tic6x_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) |
void | _initialize_tic6x_tdep () |
Variables | |
const gdb_byte | tic6x_bkpt_illegal_opcode_be [] = { 0x56, 0x45, 0x43, 0x14 } |
const gdb_byte | tic6x_bkpt_illegal_opcode_le [] = { 0x14, 0x43, 0x45, 0x56 } |
static const char *const | tic6x_register_names [] |
static const int | arg_regs [] = { 4, 20, 6, 22, 8, 24, 10, 26, 12, 28 } |
static const struct frame_unwind | tic6x_frame_unwind |
static const struct frame_base | tic6x_frame_base |
static const struct frame_unwind | tic6x_stub_unwind |
#define INST_S_BIT | ( | INST | ) | ((INST >> 1) & 1) |
Definition at line 55 of file tic6x-tdep.c.
Referenced by tic6x_analyze_prologue(), tic6x_get_next_pc(), and tic6x_stack_frame_destroyed_p().
#define INST_X_BIT | ( | INST | ) | ((INST >> 12) & 1) |
Definition at line 56 of file tic6x-tdep.c.
Referenced by tic6x_get_next_pc(), and tic6x_stack_frame_destroyed_p().
#define TIC6X_FETCH_PACKET_SIZE 32 |
Definition at line 53 of file tic6x-tdep.c.
Referenced by tic6x_get_next_pc().
#define TIC6X_OPCODE_SIZE 4 |
Definition at line 52 of file tic6x-tdep.c.
Referenced by tic6x_fetch_instruction(), and tic6x_get_next_pc().
void _initialize_tic6x_tdep | ( | ) |
Definition at line 1298 of file tic6x-tdep.c.
References gdbarch_register(), and tic6x_gdbarch_init().
|
static |
Definition at line 142 of file tic6x-tdep.c.
References tic6x_unwind_cache::base, tic6x_unwind_cache::cfa, get_frame_register_unsigned(), INST_S_BIT, tic6x_unwind_cache::reg_saved, TIC6X_DP_REGNUM, tic6x_fetch_instruction(), TIC6X_FP_REGNUM, TIC6X_NUM_CORE_REGS, tic6x_register_number(), and TIC6X_SP_REGNUM.
Referenced by tic6x_frame_unwind_cache(), and tic6x_skip_prologue().
|
static |
Definition at line 808 of file tic6x-tdep.c.
References check_typedef(), type::code(), and type::length().
Referenced by tic6x_push_dummy_call().
|
static |
Definition at line 315 of file tic6x-tdep.c.
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 542 of file tic6x-tdep.c.
References regcache_raw_get_signed().
Referenced by tic6x_get_next_pc().
|
static |
Definition at line 341 of file tic6x-tdep.c.
References DWARF2_FRAME_REG_CFA, DWARF2_FRAME_REG_RA, DWARF2_FRAME_REG_SAME_VALUE, DWARF2_FRAME_REG_UNDEFINED, gdbarch_pc_regnum(), gdbarch_sp_regnum(), dwarf2_frame_state_reg::how, and regnum.
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 699 of file tic6x-tdep.c.
References readable_regcache::cooked_read(), readable_regcache::cooked_read_part(), type::length(), TIC6X_A4_REGNUM, and TIC6X_A5_REGNUM.
Referenced by tic6x_return_value().
|
static |
|
static |
Definition at line 532 of file tic6x-tdep.c.
References gdbarch_byte_order(), read_memory_unsigned_integer(), and TIC6X_OPCODE_SIZE.
Referenced by tic6x_analyze_prologue(), tic6x_get_next_pc(), and tic6x_stack_frame_destroyed_p().
|
static |
Definition at line 690 of file tic6x-tdep.c.
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 448 of file tic6x-tdep.c.
References tic6x_frame_unwind_cache().
|
static |
Definition at line 421 of file tic6x-tdep.c.
References tic6x_unwind_cache::cfa, frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_register(), tic6x_unwind_cache::reg_saved, regnum, tic6x_unwind_cache::return_regnum, tic6x_frame_unwind_cache(), TIC6X_PC_REGNUM, and TIC6X_SP_REGNUM.
|
static |
Definition at line 407 of file tic6x-tdep.c.
References tic6x_unwind_cache::base, tic6x_unwind_cache::cfa, frame_id_build(), tic6x_unwind_cache::pc, and tic6x_frame_unwind_cache().
|
static |
Definition at line 379 of file tic6x-tdep.c.
References FRAME_OBSTACK_ZALLOC, get_frame_arch(), get_frame_func(), get_frame_pc(), tic6x_unwind_cache::pc, tic6x_unwind_cache::return_regnum, tic6x_analyze_prologue(), TIC6X_RA_REGNUM, and tic6x_setup_default().
Referenced by tic6x_frame_base_address(), tic6x_frame_prev_register(), and tic6x_frame_this_id().
|
static |
Definition at line 1137 of file tic6x-tdep.c.
References arches, tic6x_gdbarch_tdep::breakpoint, core_addr_lessthan(), dwarf2_append_unwinders(), dwarf2_frame_set_init_reg(), floatformats_ieee_double, floatformats_ieee_single, frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), registry< T >::get(), tic6x_gdbarch_tdep::has_gp, set_gdbarch_addr_bit(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_double_bit(), set_gdbarch_double_format(), set_gdbarch_float_bit(), set_gdbarch_float_format(), set_gdbarch_frame_align(), set_gdbarch_get_longjmp_target(), set_gdbarch_inner_than(), set_gdbarch_int_bit(), set_gdbarch_long_bit(), set_gdbarch_long_long_bit(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_return_in_first_hidden_param_p(), set_gdbarch_return_value(), set_gdbarch_short_bit(), set_gdbarch_skip_prologue(), set_gdbarch_software_single_step(), set_gdbarch_sp_regnum(), set_gdbarch_stack_frame_destroyed_p(), set_gdbarch_sw_breakpoint_from_kind(), set_gdbarch_unwind_pc(), tdesc_data, tdesc_data_alloc(), tdesc_find_feature(), tdesc_has_registers(), tdesc_numbered_register(), tdesc_use_registers(), tic6x_breakpoint_kind_from_pc(), TIC6X_CSR_REGNUM, tic6x_dwarf2_frame_init_reg(), tic6x_frame_align(), tic6x_frame_base, tic6x_frame_unwind, tic6x_get_longjmp_target(), TIC6X_NUM_REGS, TIC6X_PC_REGNUM, tic6x_push_dummy_call(), tic6x_register_name(), tic6x_register_names, tic6x_register_type(), tic6x_return_in_first_hidden_param_p(), tic6x_return_value(), tic6x_skip_prologue(), tic6x_software_single_step(), TIC6X_SP_REGNUM, tic6x_stack_frame_destroyed_p(), tic6x_stub_unwind, tic6x_sw_breakpoint_from_kind(), and tic6x_unwind_pc().
Referenced by _initialize_tic6x_tdep().
|
static |
Definition at line 1106 of file tic6x-tdep.c.
References extract_unsigned_integer(), gdbarch_byte_order(), get_frame_arch(), get_frame_register_unsigned(), and target_read_memory().
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 583 of file tic6x-tdep.c.
References reg_buffer::arch(), get_current_frame(), INST_S_BIT, INST_X_BIT, regcache_raw_get_signed(), tic6x_gdbarch_tdep::syscall_next_pc, tic6x_condition_true(), tic6x_extract_signed_field(), tic6x_fetch_instruction(), TIC6X_FETCH_PACKET_SIZE, TIC6X_INST_SWE, TIC6X_OPCODE_SIZE, and tic6x_register_number().
Referenced by tic6x_software_single_step().
|
static |
Definition at line 476 of file tic6x-tdep.c.
References tic6x_unwind_cache::cfa, FRAME_OBSTACK_ZALLOC, get_frame_register_unsigned(), tic6x_unwind_cache::return_regnum, TIC6X_RA_REGNUM, tic6x_setup_default(), and TIC6X_SP_REGNUM.
Referenced by tic6x_stub_this_id().
|
static |
Definition at line 856 of file tic6x-tdep.c.
References arg_regs, check_typedef(), type::code(), value::contents(), regcache::cooked_write(), regcache::cooked_write_part(), extract_unsigned_integer(), gdbarch_byte_order(), type::length(), regcache_cooked_write_signed(), regcache_cooked_write_unsigned(), return_method_struct, store_unsigned_integer(), tic6x_arg_type_alignment(), TIC6X_RA_REGNUM, TIC6X_SP_REGNUM, value::type(), and write_memory().
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 103 of file tic6x-tdep.c.
References gdbarch_target_desc(), tdesc_has_registers(), tdesc_register_name(), and tic6x_register_names.
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 562 of file tic6x-tdep.c.
Referenced by tic6x_analyze_prologue(), tic6x_get_next_pc(), and tic6x_stack_frame_destroyed_p().
Definition at line 116 of file tic6x-tdep.c.
References builtin_type::builtin_func_ptr, builtin_type(), builtin_type::builtin_uint32, and TIC6X_PC_REGNUM.
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 1130 of file tic6x-tdep.c.
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 775 of file tic6x-tdep.c.
References check_typedef(), current_language, gdbarch_byte_order(), language_defn::la_language, language_cplus, language_pass_by_reference(), type::length(), RETURN_VALUE_REGISTER_CONVENTION, RETURN_VALUE_STRUCT_CONVENTION, tic6x_extract_return_value(), and tic6x_store_return_value().
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 126 of file tic6x-tdep.c.
References tic6x_unwind_cache::reg_saved, and TIC6X_NUM_CORE_REGS.
Referenced by tic6x_frame_unwind_cache(), and tic6x_make_stub_cache().
|
static |
Definition at line 290 of file tic6x-tdep.c.
References find_pc_partial_function(), skip_prologue_using_sal(), and tic6x_analyze_prologue().
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 680 of file tic6x-tdep.c.
References regcache_read_pc(), and tic6x_get_next_pc().
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 1087 of file tic6x-tdep.c.
References INST_S_BIT, INST_X_BIT, tic6x_fetch_instruction(), TIC6X_RA_REGNUM, and tic6x_register_number().
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 743 of file tic6x-tdep.c.
References regcache::cooked_write(), regcache::cooked_write_part(), type::length(), TIC6X_A4_REGNUM, and TIC6X_A5_REGNUM.
Referenced by tic6x_return_value().
|
static |
Definition at line 492 of file tic6x-tdep.c.
References tic6x_unwind_cache::cfa, frame_id_build(), get_frame_pc(), and tic6x_make_stub_cache().
|
static |
Definition at line 505 of file tic6x-tdep.c.
References get_frame_address_in_block(), and in_plt_section().
|
static |
Definition at line 323 of file tic6x-tdep.c.
References tic6x_gdbarch_tdep::breakpoint, gdbarch_byte_order_for_code(), size, tic6x_bkpt_illegal_opcode_be, and tic6x_bkpt_illegal_opcode_le.
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 368 of file tic6x-tdep.c.
References extract_typed_address(), frame_unwind_register(), and TIC6X_PC_REGNUM.
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 98 of file tic6x-tdep.c.
Referenced by tic6x_push_dummy_call().
const gdb_byte tic6x_bkpt_illegal_opcode_be[] = { 0x56, 0x45, 0x43, 0x14 } |
Definition at line 58 of file tic6x-tdep.c.
Referenced by tic6x_sw_breakpoint_from_kind(), and tic6x_uclinux_init_abi().
const gdb_byte tic6x_bkpt_illegal_opcode_le[] = { 0x14, 0x43, 0x45, 0x56 } |
Definition at line 59 of file tic6x-tdep.c.
Referenced by tic6x_sw_breakpoint_from_kind(), and tic6x_uclinux_init_abi().
|
static |
Definition at line 466 of file tic6x-tdep.c.
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 455 of file tic6x-tdep.c.
Referenced by tic6x_gdbarch_init().
|
static |
Definition at line 83 of file tic6x-tdep.c.
Referenced by tic6x_gdbarch_init(), and tic6x_register_name().
|
static |
Definition at line 518 of file tic6x-tdep.c.
Referenced by tic6x_gdbarch_init().