GDB (xrefs)
Classes | Macros | Functions | Variables
/tmp/gdb-7.10/gdb/alpha-tdep.c File Reference
#include "defs.h"
#include "doublest.h"
#include "frame.h"
#include "frame-unwind.h"
#include "frame-base.h"
#include "dwarf2-frame.h"
#include "inferior.h"
#include "symtab.h"
#include "value.h"
#include "gdbcmd.h"
#include "gdbcore.h"
#include "dis-asm.h"
#include "symfile.h"
#include "objfiles.h"
#include "linespec.h"
#include "regcache.h"
#include "reggroups.h"
#include "arch-utils.h"
#include "osabi.h"
#include "block.h"
#include "infcall.h"
#include "trad-frame.h"
#include "elf-bfd.h"
#include "alpha-tdep.h"

Go to the source code of this file.

Classes

struct  alpha_sigtramp_unwind_cache
 
struct  alpha_heuristic_unwind_cache
 

Macros

#define INSN_OPCODE(insn)   ((insn & 0xfc000000) >> 26)
 
#define MEM_RA(insn)   ((insn & 0x03e00000) >> 21)
 
#define MEM_RB(insn)   ((insn & 0x001f0000) >> 16)
 
#define MEM_DISP(insn)   (((insn & 0x8000) == 0) ? (insn & 0xffff) : -((-insn) & 0xffff))
 
#define BR_RA(insn)   MEM_RA(insn)
 
#define OPR_FUNCTION(insn)   ((insn & 0xfe0) >> 5)
 
#define OPR_HAS_IMMEDIATE(insn)   ((insn & 0x1000) == 0x1000)
 
#define OPR_RA(insn)   MEM_RA(insn)
 
#define OPR_RC(insn)   ((insn & 0x1f))
 
#define OPR_LIT(insn)   ((insn & 0x1fe000) >> 13)
 

Functions

static const char * alpha_register_name (struct gdbarch *gdbarch, int regno)
 
static int alpha_cannot_fetch_register (struct gdbarch *gdbarch, int regno)
 
static int alpha_cannot_store_register (struct gdbarch *gdbarch, int regno)
 
static struct typealpha_register_type (struct gdbarch *gdbarch, int regno)
 
static int alpha_register_reggroup_p (struct gdbarch *gdbarch, int regnum, struct reggroup *group)
 
static void alpha_lds (struct gdbarch *gdbarch, void *out, const void *in)
 
static void alpha_sts (struct gdbarch *gdbarch, void *out, const void *in)
 
static int alpha_convert_register_p (struct gdbarch *gdbarch, int regno, struct type *type)
 
static int alpha_register_to_value (struct frame_info *frame, int regnum, struct type *valtype, gdb_byte *out, int *optimizedp, int *unavailablep)
 
static void alpha_value_to_register (struct frame_info *frame, int regnum, struct type *valtype, const gdb_byte *in)
 
static CORE_ADDR alpha_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 void alpha_extract_return_value (struct type *valtype, struct regcache *regcache, gdb_byte *valbuf)
 
static void alpha_store_return_value (struct type *valtype, struct regcache *regcache, const gdb_byte *valbuf)
 
static enum return_value_convention alpha_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
static int alpha_return_in_memory_always (struct type *type)
 
static const gdb_bytealpha_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pc, int *len)
 
CORE_ADDR alpha_after_prologue (CORE_ADDR pc)
 
unsigned int alpha_read_insn (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static CORE_ADDR alpha_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static int alpha_deal_with_atomic_sequence (struct frame_info *frame)
 
static int alpha_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
 
static struct alpha_sigtramp_unwind_cachealpha_sigtramp_frame_unwind_cache (struct frame_info *this_frame, void **this_prologue_cache)
 
static CORE_ADDR alpha_sigtramp_register_address (struct gdbarch *gdbarch, CORE_ADDR sigcontext_addr, int regnum)
 
static void alpha_sigtramp_frame_this_id (struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
 
static struct valuealpha_sigtramp_frame_prev_register (struct frame_info *this_frame, void **this_prologue_cache, int regnum)
 
static int alpha_sigtramp_frame_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
 
static CORE_ADDR alpha_heuristic_proc_start (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static void alpha_heuristic_analyze_probing_loop (struct gdbarch *gdbarch, CORE_ADDR *pc, int *frame_size)
 
static struct alpha_heuristic_unwind_cachealpha_heuristic_frame_unwind_cache (struct frame_info *this_frame, void **this_prologue_cache, CORE_ADDR start_pc)
 
static void alpha_heuristic_frame_this_id (struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
 
static struct valuealpha_heuristic_frame_prev_register (struct frame_info *this_frame, void **this_prologue_cache, int regnum)
 
static CORE_ADDR alpha_heuristic_frame_base_address (struct frame_info *this_frame, void **this_prologue_cache)
 
static void reinit_frame_cache_sfunc (char *args, int from_tty, struct cmd_list_element *c)
 
static struct frame_id alpha_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
 
static CORE_ADDR alpha_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
 
void alpha_supply_int_regs (struct regcache *regcache, int regno, const void *r0_r30, const void *pc, const void *unique)
 
void alpha_fill_int_regs (const struct regcache *regcache, int regno, void *r0_r30, void *pc, void *unique)
 
void alpha_supply_fp_regs (struct regcache *regcache, int regno, const void *f0_f30, const void *fpcr)
 
void alpha_fill_fp_regs (const struct regcache *regcache, int regno, void *f0_f30, void *fpcr)
 
static int fp_register_zero_p (LONGEST reg)
 
static int fp_register_sign_bit (LONGEST reg)
 
static CORE_ADDR alpha_next_pc (struct frame_info *frame, CORE_ADDR pc)
 
int alpha_software_single_step (struct frame_info *frame)
 
static struct gdbarchalpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
void alpha_dwarf2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 
void _initialize_alpha_tdep (void)
 

Variables

static const int lda_opcode = 0x08
 
static const int stq_opcode = 0x2d
 
static const int br_opcode = 0x30
 
static const int bne_opcode = 0x3d
 
static const int subq_opcode = 0x10
 
static const int subq_function = 0x29
 
static const int ldl_l_opcode = 0x2a
 
static const int ldq_l_opcode = 0x2b
 
static const int stl_c_opcode = 0x2e
 
static const int stq_c_opcode = 0x2f
 
static const struct frame_unwind alpha_sigtramp_frame_unwind
 
static int heuristic_fence_post = 0
 
static const struct frame_unwind alpha_heuristic_frame_unwind
 
static const struct frame_base alpha_heuristic_frame_base
 
initialize_file_ftype _initialize_alpha_tdep
 

Macro Definition Documentation

#define BR_RA (   insn)    MEM_RA(insn)

Definition at line 63 of file alpha-tdep.c.

#define INSN_OPCODE (   insn)    ((insn & 0xfc000000) >> 26)
#define MEM_DISP (   insn)    (((insn & 0x8000) == 0) ? (insn & 0xffff) : -((-insn) & 0xffff))

Definition at line 56 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().

#define MEM_RA (   insn)    ((insn & 0x03e00000) >> 21)

Definition at line 54 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().

#define MEM_RB (   insn)    ((insn & 0x001f0000) >> 16)

Definition at line 55 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().

#define OPR_FUNCTION (   insn)    ((insn & 0xfe0) >> 5)

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

Referenced by alpha_heuristic_analyze_probing_loop().

#define OPR_HAS_IMMEDIATE (   insn)    ((insn & 0x1000) == 0x1000)

Definition at line 70 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().

#define OPR_LIT (   insn)    ((insn & 0x1fe000) >> 13)

Definition at line 73 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().

#define OPR_RA (   insn)    MEM_RA(insn)

Definition at line 71 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().

#define OPR_RC (   insn)    ((insn & 0x1f))

Definition at line 72 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().

Function Documentation

void _initialize_alpha_tdep ( void  )
CORE_ADDR alpha_after_prologue ( CORE_ADDR  pc)
static const gdb_byte* alpha_breakpoint_from_pc ( struct gdbarch gdbarch,
CORE_ADDR pc,
int len 
)
static

Definition at line 648 of file alpha-tdep.c.

Referenced by alpha_gdbarch_init().

static int alpha_cannot_fetch_register ( struct gdbarch gdbarch,
int  regno 
)
static

Definition at line 110 of file alpha-tdep.c.

References alpha_register_name().

Referenced by alpha_gdbarch_init().

static int alpha_cannot_store_register ( struct gdbarch gdbarch,
int  regno 
)
static

Definition at line 116 of file alpha-tdep.c.

References alpha_register_name(), and ALPHA_ZERO_REGNUM.

Referenced by alpha_gdbarch_init().

static int alpha_convert_register_p ( struct gdbarch gdbarch,
int  regno,
struct type type 
)
static

Definition at line 232 of file alpha-tdep.c.

References ALPHA_FP0_REGNUM, and TYPE_LENGTH.

Referenced by alpha_gdbarch_init().

static int alpha_deal_with_atomic_sequence ( struct frame_info frame)
static
static struct frame_id alpha_dummy_id ( struct gdbarch gdbarch,
struct frame_info this_frame 
)
static
void alpha_dwarf2_init_abi ( struct gdbarch_info  info,
struct gdbarch gdbarch 
)
static void alpha_extract_return_value ( struct type valtype,
struct regcache regcache,
gdb_byte valbuf 
)
static
void alpha_fill_fp_regs ( const struct regcache regcache,
int  regno,
void *  f0_f30,
void *  fpcr 
)
void alpha_fill_int_regs ( const struct regcache regcache,
int  regno,
void *  r0_r30,
void *  pc,
void *  unique 
)
static struct gdbarch* alpha_gdbarch_init ( struct gdbarch_info  info,
struct gdbarch_list arches 
)
static

Definition at line 1747 of file alpha-tdep.c.

References alpha_breakpoint_from_pc(), alpha_cannot_fetch_register(), alpha_cannot_store_register(), alpha_convert_register_p(), alpha_deal_with_atomic_sequence(), alpha_dummy_id(), ALPHA_FP0_REGNUM, alpha_get_longjmp_target(), ALPHA_INSN_SIZE, ALPHA_NUM_REGS, ALPHA_PC_REGNUM, alpha_push_dummy_call(), alpha_register_name(), alpha_register_reggroup_p(), alpha_register_to_value(), alpha_register_type(), alpha_return_in_memory_always(), alpha_return_value(), alpha_skip_prologue(), ALPHA_SP_REGNUM, alpha_unwind_pc(), alpha_value_to_register(), core_addr_lessthan(), gdbarch_tdep::dynamic_sigtramp_offset, find_solib_trampoline_target(), frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch_tdep::jb_pc, gdbarch_tdep::return_in_memory, gdbarch_tdep::sc_fpregs_offset, gdbarch_tdep::sc_pc_offset, gdbarch_tdep::sc_regs_offset, set_gdbarch_breakpoint_from_pc(), set_gdbarch_cannot_fetch_register(), set_gdbarch_cannot_step_breakpoint(), set_gdbarch_cannot_store_register(), set_gdbarch_convert_register_p(), set_gdbarch_decr_pc_after_break(), set_gdbarch_double_bit(), set_gdbarch_dummy_id(), set_gdbarch_float_bit(), set_gdbarch_fp0_regnum(), set_gdbarch_get_longjmp_target(), set_gdbarch_inner_than(), set_gdbarch_int_bit(), set_gdbarch_long_bit(), set_gdbarch_long_double_bit(), set_gdbarch_long_long_bit(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_print_insn(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_register_name(), set_gdbarch_register_reggroup_p(), set_gdbarch_register_to_value(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_short_bit(), set_gdbarch_skip_prologue(), set_gdbarch_skip_trampoline_code(), set_gdbarch_software_single_step(), set_gdbarch_sp_regnum(), set_gdbarch_unwind_pc(), set_gdbarch_value_to_register(), gdbarch_tdep::sigcontext_addr, gdbarch_tdep::vm_min_address, and xmalloc().

Referenced by _initialize_alpha_tdep().

static int alpha_get_longjmp_target ( struct frame_info frame,
CORE_ADDR pc 
)
static
static void alpha_heuristic_analyze_probing_loop ( struct gdbarch gdbarch,
CORE_ADDR pc,
int frame_size 
)
static
static CORE_ADDR alpha_heuristic_frame_base_address ( struct frame_info this_frame,
void **  this_prologue_cache 
)
static
static struct value* alpha_heuristic_frame_prev_register ( struct frame_info this_frame,
void **  this_prologue_cache,
int  regnum 
)
static
static void alpha_heuristic_frame_this_id ( struct frame_info this_frame,
void **  this_prologue_cache,
struct frame_id this_id 
)
static
static struct alpha_heuristic_unwind_cache* alpha_heuristic_frame_unwind_cache ( struct frame_info this_frame,
void **  this_prologue_cache,
CORE_ADDR  start_pc 
)
static
static CORE_ADDR alpha_heuristic_proc_start ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)
static
static void alpha_lds ( struct gdbarch gdbarch,
void *  out,
const void *  in 
)
static
static CORE_ADDR alpha_next_pc ( struct frame_info frame,
CORE_ADDR  pc 
)
static
static CORE_ADDR alpha_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
unsigned int alpha_read_insn ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)
static const char* alpha_register_name ( struct gdbarch gdbarch,
int  regno 
)
static
static int alpha_register_reggroup_p ( struct gdbarch gdbarch,
int  regnum,
struct reggroup group 
)
static
static int alpha_register_to_value ( struct frame_info frame,
int  regnum,
struct type valtype,
gdb_byte out,
int optimizedp,
int unavailablep 
)
static
static struct type* alpha_register_type ( struct gdbarch gdbarch,
int  regno 
)
static
static int alpha_return_in_memory_always ( struct type type)
static

Definition at line 642 of file alpha-tdep.c.

Referenced by alpha_gdbarch_init().

static enum return_value_convention alpha_return_value ( struct gdbarch gdbarch,
struct value function,
struct type type,
struct regcache regcache,
gdb_byte readbuf,
const gdb_byte writebuf 
)
static
static struct value* alpha_sigtramp_frame_prev_register ( struct frame_info this_frame,
void **  this_prologue_cache,
int  regnum 
)
static
static int alpha_sigtramp_frame_sniffer ( const struct frame_unwind self,
struct frame_info this_frame,
void **  this_prologue_cache 
)
static

Definition at line 993 of file alpha-tdep.c.

References find_pc_partial_function(), get_frame_arch(), get_frame_pc(), and name.

static void alpha_sigtramp_frame_this_id ( struct frame_info this_frame,
void **  this_prologue_cache,
struct frame_id this_id 
)
static
static struct alpha_sigtramp_unwind_cache* alpha_sigtramp_frame_unwind_cache ( struct frame_info this_frame,
void **  this_prologue_cache 
)
static
static CORE_ADDR alpha_sigtramp_register_address ( struct gdbarch gdbarch,
CORE_ADDR  sigcontext_addr,
int  regnum 
)
static
static CORE_ADDR alpha_skip_prologue ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)
static
int alpha_software_single_step ( struct frame_info frame)
static void alpha_store_return_value ( struct type valtype,
struct regcache regcache,
const gdb_byte valbuf 
)
static
static void alpha_sts ( struct gdbarch gdbarch,
void *  out,
const void *  in 
)
static
void alpha_supply_fp_regs ( struct regcache regcache,
int  regno,
const void *  f0_f30,
const void *  fpcr 
)
void alpha_supply_int_regs ( struct regcache regcache,
int  regno,
const void *  r0_r30,
const void *  pc,
const void *  unique 
)
static CORE_ADDR alpha_unwind_pc ( struct gdbarch gdbarch,
struct frame_info next_frame 
)
static

Definition at line 1486 of file alpha-tdep.c.

References ALPHA_PC_REGNUM, and frame_unwind_register_unsigned().

Referenced by alpha_gdbarch_init().

static void alpha_value_to_register ( struct frame_info frame,
int  regnum,
struct type valtype,
const gdb_byte in 
)
static
static int fp_register_sign_bit ( LONGEST  reg)
static

Definition at line 1591 of file alpha-tdep.c.

Referenced by alpha_next_pc().

static int fp_register_zero_p ( LONGEST  reg)
static

Definition at line 1579 of file alpha-tdep.c.

Referenced by alpha_next_pc().

static void reinit_frame_cache_sfunc ( char *  args,
int  from_tty,
struct cmd_list_element c 
)
static

Definition at line 1466 of file alpha-tdep.c.

References reinit_frame_cache().

Referenced by _initialize_alpha_tdep().

Variable Documentation

initialize_file_ftype _initialize_alpha_tdep
const struct frame_base alpha_heuristic_frame_base
static
Initial value:
= {
alpha_heuristic_frame_base_address
}
static const struct frame_unwind alpha_heuristic_frame_unwind
Definition: alpha-tdep.c:1436
static CORE_ADDR alpha_heuristic_frame_base_address(struct frame_info *this_frame, void **this_prologue_cache)
Definition: alpha-tdep.c:1446

Definition at line 1455 of file alpha-tdep.c.

const struct frame_unwind alpha_heuristic_frame_unwind
static
Initial value:
= {
NULL,
}
static void alpha_heuristic_frame_this_id(struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
Definition: alpha-tdep.c:1408
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: frame-unwind.c:170
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: frame-unwind.c:180
static struct value * alpha_heuristic_frame_prev_register(struct frame_info *this_frame, void **this_prologue_cache, int regnum)
Definition: alpha-tdep.c:1421

Definition at line 1436 of file alpha-tdep.c.

const struct frame_unwind alpha_sigtramp_frame_unwind
static
Initial value:
= {
NULL,
}
static struct value * alpha_sigtramp_frame_prev_register(struct frame_info *this_frame, void **this_prologue_cache, int regnum)
Definition: alpha-tdep.c:969
static void alpha_sigtramp_frame_this_id(struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
Definition: alpha-tdep.c:927
static int alpha_sigtramp_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: alpha-tdep.c:993
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: frame-unwind.c:180

Definition at line 1020 of file alpha-tdep.c.

const int bne_opcode = 0x3d
static

Definition at line 66 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().

const int br_opcode = 0x30
static

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

Referenced by alpha_deal_with_atomic_sequence().

int heuristic_fence_post = 0
static

Definition at line 1034 of file alpha-tdep.c.

Referenced by _initialize_alpha_tdep(), and alpha_heuristic_proc_start().

const int lda_opcode = 0x08
static

Definition at line 59 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().

const int ldl_l_opcode = 0x2a
static

Definition at line 761 of file alpha-tdep.c.

Referenced by alpha_deal_with_atomic_sequence().

const int ldq_l_opcode = 0x2b
static

Definition at line 762 of file alpha-tdep.c.

Referenced by alpha_deal_with_atomic_sequence().

const int stl_c_opcode = 0x2e
static

Definition at line 763 of file alpha-tdep.c.

Referenced by alpha_deal_with_atomic_sequence().

const int stq_c_opcode = 0x2f
static

Definition at line 764 of file alpha-tdep.c.

Referenced by alpha_deal_with_atomic_sequence().

const int stq_opcode = 0x2d
static

Definition at line 60 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().

const int subq_function = 0x29
static

Definition at line 76 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().

const int subq_opcode = 0x10
static

Definition at line 75 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().