GDB (API)
|
#include "defs.h"
#include <ctype.h>
#include "frame.h"
#include "inferior.h"
#include "gdbcmd.h"
#include "gdbcore.h"
#include "gdb_string.h"
#include "dis-asm.h"
#include "regcache.h"
#include "reggroups.h"
#include "doublest.h"
#include "value.h"
#include "arch-utils.h"
#include "osabi.h"
#include "frame-unwind.h"
#include "frame-base.h"
#include "trad-frame.h"
#include "objfiles.h"
#include "dwarf2-frame.h"
#include "gdbtypes.h"
#include "prologue-value.h"
#include "remote.h"
#include "target-descriptions.h"
#include "user-regs.h"
#include "observer.h"
#include "arm-tdep.h"
#include "gdb/sim-arm.h"
#include "elf-bfd.h"
#include "coff/internal.h"
#include "elf/arm.h"
#include "gdb_assert.h"
#include "vec.h"
#include "record.h"
#include "record-full.h"
#include "features/arm-with-m.c"
#include "features/arm-with-m-fpa-layout.c"
#include "features/arm-with-m-vfp-d16.c"
#include "features/arm-with-iwmmxt.c"
#include "features/arm-with-vfpv2.c"
#include "features/arm-with-vfpv3.c"
#include "features/arm-with-neon.c"
#include "bfd-in2.h"
#include "libcoff.h"
Go to the source code of this file.
Defines | |
#define | MSYMBOL_SET_SPECIAL(msym) MSYMBOL_TARGET_FLAG_1 (msym) = 1 |
#define | MSYMBOL_IS_SPECIAL(msym) MSYMBOL_TARGET_FLAG_1 (msym) |
#define | DISPLACED_STEPPING_ARCH_VERSION 5 |
#define | IS_THUMB_ADDR(addr) ((addr) & 1) |
#define | MAKE_THUMB_ADDR(addr) ((addr) | 1) |
#define | UNMAKE_THUMB_ADDR(addr) ((addr) & ~1) |
#define | submask(x) ((1L << ((x) + 1)) - 1) |
#define | bit(obj, st) (((obj) >> (st)) & 1) |
#define | bits(obj, st, fn) (((obj) >> (st)) & submask ((fn) - (st))) |
#define | sbits(obj, st, fn) ((long) (bits(obj,st,fn) | ((long) bit(obj,fn) * ~ submask (fn - st)))) |
#define | BranchDest(addr, instr) ((CORE_ADDR) (((unsigned long) (addr)) + 8 + (sbits (instr, 0, 23) << 2))) |
#define | EXTRACT_MOVW_MOVT_IMM_T(insn1, insn2) |
#define | EXTRACT_MOVW_MOVT_IMM_A(insn) |
#define | MAX_IT_BLOCK_PREFIX 14 |
#define | IT_SCAN_THRESHOLD 32 |
#define | ARM_NOP 0xe1a00000 |
#define | THUMB_NOP 0x4600 |
#define | ARM_LE_BREAKPOINT {0xFE,0xDE,0xFF,0xE7} |
#define | ARM_BE_BREAKPOINT {0xE7,0xFF,0xDE,0xFE} |
#define | THUMB_LE_BREAKPOINT {0xbe,0xbe} |
#define | THUMB_BE_BREAKPOINT {0xbe,0xbe} |
#define | ARM_INSN_SIZE_BYTES 4 |
#define | THUMB_INSN_SIZE_BYTES 2 |
#define | THUMB2_INSN_SIZE_BYTES 4 |
#define | INSN_S_L_BIT_NUM 20 |
#define | REG_ALLOC(REGS, LENGTH, RECORD_BUF) |
#define | MEM_ALLOC(MEMS, LENGTH, RECORD_BUF) |
#define | INSN_RECORDED(ARM_RECORD) (0 != (ARM_RECORD)->reg_rec_count || 0 != (ARM_RECORD)->mem_rec_count) |
Typedefs | |
typedef struct arm_mapping_symbol | arm_mapping_symbol_s |
typedef struct arm_exidx_entry | arm_exidx_entry_s |
typedef struct insn_decode_record_t | insn_decode_record |
typedef int(* | sti_arm_hdl_fp_t )(insn_decode_record *) |
Enumerations | |
enum | arm_vfp_cprc_base_type { VFP_CPRC_UNKNOWN, VFP_CPRC_SINGLE, VFP_CPRC_DOUBLE, VFP_CPRC_VEC64, VFP_CPRC_VEC128 } |
enum | arm_record_strx_t { ARM_RECORD_STRH = 1, ARM_RECORD_STRD } |
enum | record_type_t { ARM_RECORD = 1, THUMB_RECORD, THUMB2_RECORD } |
Functions | |
DEF_VEC_O (arm_mapping_symbol_s) | |
int | arm_psr_thumb_bit (struct gdbarch *gdbarch) |
int | arm_frame_is_thumb (struct frame_info *frame) |
int | arm_pc_is_thumb (struct gdbarch *gdbarch, CORE_ADDR memaddr) |
DEF_VEC_O (arm_exidx_entry_s) | |
CORE_ADDR | arm_get_next_pc (struct frame_info *frame, CORE_ADDR pc) |
void | arm_insert_single_step_breakpoint (struct gdbarch *gdbarch, struct address_space *aspace, CORE_ADDR pc) |
int | arm_deal_with_atomic_sequence (struct frame_info *frame) |
int | arm_software_single_step (struct frame_info *frame) |
ULONGEST | displaced_read_reg (struct regcache *regs, struct displaced_step_closure *dsc, int regno) |
void | displaced_write_reg (struct regcache *regs, struct displaced_step_closure *dsc, int regno, ULONGEST val, enum pc_write_style write_pc) |
void | arm_process_displaced_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs, struct displaced_step_closure *dsc) |
void | arm_displaced_init_closure (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct displaced_step_closure *dsc) |
struct displaced_step_closure * | arm_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) |
void | arm_displaced_step_fixup (struct gdbarch *gdbarch, struct displaced_step_closure *dsc, CORE_ADDR from, CORE_ADDR to, struct regcache *regs) |
CORE_ADDR | arm_skip_stub (struct frame_info *frame, CORE_ADDR pc) |
void | _initialize_arm_tdep (void) |
int | arm_process_record (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR insn_addr) |
Variables | |
int | arm_apcs_32 = 1 |
struct frame_unwind | arm_prologue_unwind |
struct frame_unwind | arm_exidx_unwind |
struct frame_unwind | arm_stub_unwind |
struct frame_unwind | arm_m_exception_unwind |
struct frame_base | arm_normal_base |
initialize_file_ftype | _initialize_arm_tdep |
#define ARM_BE_BREAKPOINT {0xE7,0xFF,0xDE,0xFE} |
Definition at line 8774 of file arm-tdep.c.
#define ARM_INSN_SIZE_BYTES 4 |
Definition at line 10581 of file arm-tdep.c.
#define ARM_LE_BREAKPOINT {0xFE,0xDE,0xFF,0xE7} |
Definition at line 8773 of file arm-tdep.c.
#define ARM_NOP 0xe1a00000 |
Definition at line 5459 of file arm-tdep.c.
#define bit | ( | obj, | |
st | |||
) | (((obj) >> (st)) & 1) |
Definition at line 519 of file arm-tdep.c.
Definition at line 520 of file arm-tdep.c.
#define BranchDest | ( | addr, | |
instr | |||
) | ((CORE_ADDR) (((unsigned long) (addr)) + 8 + (sbits (instr, 0, 23) << 2))) |
Definition at line 523 of file arm-tdep.c.
#define DISPLACED_STEPPING_ARCH_VERSION 5 |
Definition at line 269 of file arm-tdep.c.
#define EXTRACT_MOVW_MOVT_IMM_A | ( | insn | ) |
Definition at line 537 of file arm-tdep.c.
#define EXTRACT_MOVW_MOVT_IMM_T | ( | insn1, | |
insn2 | |||
) |
#define INSN_RECORDED | ( | ARM_RECORD | ) | (0 != (ARM_RECORD)->reg_rec_count || 0 != (ARM_RECORD)->mem_rec_count) |
Definition at line 10614 of file arm-tdep.c.
#define INSN_S_L_BIT_NUM 20 |
Definition at line 10586 of file arm-tdep.c.
#define IS_THUMB_ADDR | ( | addr | ) | ((addr) & 1) |
Definition at line 273 of file arm-tdep.c.
#define IT_SCAN_THRESHOLD 32 |
Definition at line 5279 of file arm-tdep.c.
#define MAKE_THUMB_ADDR | ( | addr | ) | ((addr) | 1) |
Definition at line 274 of file arm-tdep.c.
#define MAX_IT_BLOCK_PREFIX 14 |
Definition at line 5275 of file arm-tdep.c.
#define MEM_ALLOC | ( | MEMS, | |
LENGTH, | |||
RECORD_BUF | |||
) |
do \ { \ unsigned int mem_len = LENGTH; \ if (mem_len) \ { \ MEMS = XNEWVEC (struct arm_mem_r, mem_len); \ memcpy(&MEMS->len, &RECORD_BUF[0], \ sizeof(struct arm_mem_r) * LENGTH); \ } \ } \ while (0)
Definition at line 10600 of file arm-tdep.c.
#define MSYMBOL_IS_SPECIAL | ( | msym | ) | MSYMBOL_TARGET_FLAG_1 (msym) |
Definition at line 81 of file arm-tdep.c.
#define MSYMBOL_SET_SPECIAL | ( | msym | ) | MSYMBOL_TARGET_FLAG_1 (msym) = 1 |
Definition at line 78 of file arm-tdep.c.
#define REG_ALLOC | ( | REGS, | |
LENGTH, | |||
RECORD_BUF | |||
) |
do \ { \ unsigned int reg_len = LENGTH; \ if (reg_len) \ { \ REGS = XNEWVEC (uint32_t, reg_len); \ memcpy(®S[0], &RECORD_BUF[0], sizeof(uint32_t)*LENGTH); \ } \ } \ while (0)
Definition at line 10588 of file arm-tdep.c.
#define sbits | ( | obj, | |
st, | |||
fn | |||
) | ((long) (bits(obj,st,fn) | ((long) bit(obj,fn) * ~ submask (fn - st)))) |
Definition at line 521 of file arm-tdep.c.
#define submask | ( | x | ) | ((1L << ((x) + 1)) - 1) |
Definition at line 518 of file arm-tdep.c.
#define THUMB2_INSN_SIZE_BYTES 4 |
Definition at line 10583 of file arm-tdep.c.
#define THUMB_BE_BREAKPOINT {0xbe,0xbe} |
Definition at line 8776 of file arm-tdep.c.
#define THUMB_INSN_SIZE_BYTES 2 |
Definition at line 10582 of file arm-tdep.c.
#define THUMB_LE_BREAKPOINT {0xbe,0xbe} |
Definition at line 8775 of file arm-tdep.c.
#define THUMB_NOP 0x4600 |
Definition at line 5460 of file arm-tdep.c.
#define UNMAKE_THUMB_ADDR | ( | addr | ) | ((addr) & ~1) |
Definition at line 275 of file arm-tdep.c.
typedef struct arm_exidx_entry arm_exidx_entry_s |
Definition at line 2144 of file arm-tdep.c.
typedef struct arm_mapping_symbol arm_mapping_symbol_s |
Definition at line 92 of file arm-tdep.c.
typedef struct insn_decode_record_t insn_decode_record |
typedef int(* sti_arm_hdl_fp_t)(insn_decode_record *) |
Definition at line 12436 of file arm-tdep.c.
enum arm_record_strx_t |
Definition at line 10669 of file arm-tdep.c.
Definition at line 3436 of file arm-tdep.c.
enum record_type_t |
Definition at line 10675 of file arm-tdep.c.
void _initialize_arm_tdep | ( | void | ) |
Definition at line 10433 of file arm-tdep.c.
int arm_deal_with_atomic_sequence | ( | struct frame_info * | frame | ) |
Definition at line 5220 of file arm-tdep.c.
void arm_displaced_init_closure | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | from, | ||
CORE_ADDR | to, | ||
struct displaced_step_closure * | dsc | ||
) |
Definition at line 8612 of file arm-tdep.c.
struct displaced_step_closure* arm_displaced_step_copy_insn | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | from, | ||
CORE_ADDR | to, | ||
struct regcache * | regs | ||
) | [read] |
Definition at line 8669 of file arm-tdep.c.
void arm_displaced_step_fixup | ( | struct gdbarch * | gdbarch, |
struct displaced_step_closure * | dsc, | ||
CORE_ADDR | from, | ||
CORE_ADDR | to, | ||
struct regcache * | regs | ||
) |
Definition at line 8685 of file arm-tdep.c.
int arm_frame_is_thumb | ( | struct frame_info * | frame | ) |
Definition at line 295 of file arm-tdep.c.
CORE_ADDR arm_get_next_pc | ( | struct frame_info * | frame, |
CORE_ADDR | pc | ||
) |
Definition at line 4968 of file arm-tdep.c.
void arm_insert_single_step_breakpoint | ( | struct gdbarch * | gdbarch, |
struct address_space * | aspace, | ||
CORE_ADDR | pc | ||
) |
Definition at line 4993 of file arm-tdep.c.
int arm_pc_is_thumb | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | memaddr | ||
) |
Definition at line 382 of file arm-tdep.c.
void arm_process_displaced_insn | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | from, | ||
CORE_ADDR | to, | ||
struct regcache * | regs, | ||
struct displaced_step_closure * | dsc | ||
) |
Definition at line 8552 of file arm-tdep.c.
int arm_process_record | ( | struct gdbarch * | gdbarch, |
struct regcache * | regcache, | ||
CORE_ADDR | insn_addr | ||
) |
Definition at line 12537 of file arm-tdep.c.
int arm_psr_thumb_bit | ( | struct gdbarch * | gdbarch | ) |
Definition at line 284 of file arm-tdep.c.
CORE_ADDR arm_skip_stub | ( | struct frame_info * | frame, |
CORE_ADDR | pc | ||
) |
Definition at line 9228 of file arm-tdep.c.
int arm_software_single_step | ( | struct frame_info * | frame | ) |
Definition at line 5234 of file arm-tdep.c.
ULONGEST displaced_read_reg | ( | struct regcache * | regs, |
struct displaced_step_closure * | dsc, | ||
int | regno | ||
) |
Definition at line 5467 of file arm-tdep.c.
void displaced_write_reg | ( | struct regcache * | regs, |
struct displaced_step_closure * | dsc, | ||
int | regno, | ||
ULONGEST | val, | ||
enum pc_write_style | write_pc | ||
) |
Definition at line 5587 of file arm-tdep.c.
int arm_apcs_32 = 1 |
Definition at line 279 of file arm-tdep.c.
struct frame_unwind arm_exidx_unwind |
{ NORMAL_FRAME, default_frame_unwind_stop_reason, arm_prologue_this_id, arm_prologue_prev_register, NULL, arm_exidx_unwind_sniffer }
Definition at line 2863 of file arm-tdep.c.
{ SIGTRAMP_FRAME, default_frame_unwind_stop_reason, arm_m_exception_this_id, arm_m_exception_prev_register, NULL, arm_m_exception_unwind_sniffer }
Definition at line 3039 of file arm-tdep.c.
struct frame_base arm_normal_base |
{ &arm_prologue_unwind, arm_normal_frame_base, arm_normal_frame_base, arm_normal_frame_base }
Definition at line 3061 of file arm-tdep.c.
struct frame_unwind arm_prologue_unwind |
{ NORMAL_FRAME, default_frame_unwind_stop_reason, arm_prologue_this_id, arm_prologue_prev_register, NULL, default_frame_sniffer }
Definition at line 2123 of file arm-tdep.c.
struct frame_unwind arm_stub_unwind |
{ NORMAL_FRAME, default_frame_unwind_stop_reason, arm_stub_this_id, arm_prologue_prev_register, NULL, arm_stub_unwind_sniffer }
Definition at line 2919 of file arm-tdep.c.
Definition at line 161 of file arm-tdep.c.
Definition at line 162 of file arm-tdep.c.