GDB (xrefs)
Classes | Defines | Functions | Variables
/home/stan/gdb/src/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 "gdb_string.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

Defines

#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_cache
alpha_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_cache
alpha_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 struct frame_unwind alpha_sigtramp_frame_unwind
static int heuristic_fence_post = 0
static struct frame_unwind alpha_heuristic_frame_unwind
static struct frame_base alpha_heuristic_frame_base
initialize_file_ftype _initialize_alpha_tdep

Define Documentation

#define BR_RA (   insn)    MEM_RA(insn)

Definition at line 64 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 57 of file alpha-tdep.c.

Referenced by alpha_heuristic_analyze_probing_loop().

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

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

Referenced by alpha_heuristic_analyze_probing_loop().

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

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

Referenced by alpha_heuristic_analyze_probing_loop().

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

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

Referenced by alpha_heuristic_analyze_probing_loop().

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

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

Referenced by alpha_heuristic_analyze_probing_loop().

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

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

Referenced by alpha_heuristic_analyze_probing_loop().

#define OPR_RA (   insn)    MEM_RA(insn)

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

Referenced by alpha_heuristic_analyze_probing_loop().

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

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

Referenced by alpha_heuristic_analyze_probing_loop().


Function Documentation

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

Definition at line 649 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 111 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 117 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 233 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, read]
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 
)

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

References ALPHA_FP0_REGNUM, ALPHA_FPCR_REGNUM, and regcache_raw_collect().

Referenced by alphabsd_fill_fpreg(), and fill_fpregset().

void alpha_fill_int_regs ( const struct regcache regcache,
int  regno,
void *  r0_r30,
void *  pc,
void *  unique 
)

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

References ALPHA_PC_REGNUM, ALPHA_UNIQUE_REGNUM, and regcache_raw_collect().

Referenced by alphabsd_fill_reg(), and fill_gregset().

static struct gdbarch* alpha_gdbarch_init ( struct gdbarch_info  info,
struct gdbarch_list arches 
) [static, read]

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

References gdbarch_info::abfd, 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(), GDB_OSABI_OSF1, GDB_OSABI_UNKNOWN, gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch_tdep::jb_pc, gdbarch_info::osabi, 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, read]
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, read]
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, read]
static int alpha_return_in_memory_always ( struct type type) [static]

Definition at line 643 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, read]
static int alpha_sigtramp_frame_sniffer ( const struct frame_unwind self,
struct frame_info this_frame,
void **  this_prologue_cache 
) [static]

Definition at line 994 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, read]
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]
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 
)

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

References ALPHA_FP0_REGNUM, ALPHA_FPCR_REGNUM, and regcache_raw_supply().

Referenced by alphabsd_supply_fpreg(), and supply_fpregset().

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 1487 of file alpha-tdep.c.

References ALPHA_PC_REGNUM, frame_unwind_register_unsigned(), and ULONGEST.

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 1592 of file alpha-tdep.c.

References LONGEST.

Referenced by alpha_next_pc().

static int fp_register_zero_p ( LONGEST  reg) [static]

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

References LONGEST.

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 1467 of file alpha-tdep.c.

References reinit_frame_cache().

Referenced by _initialize_alpha_tdep().


Variable Documentation

Referenced by _initialize_alpha_tdep().

Initial value:

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

const int bne_opcode = 0x3d [static]

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

Referenced by alpha_heuristic_analyze_probing_loop().

const int br_opcode = 0x30 [static]

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

Referenced by alpha_deal_with_atomic_sequence().

int heuristic_fence_post = 0 [static]

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

Referenced by _initialize_alpha_tdep(), and alpha_heuristic_proc_start().

const int lda_opcode = 0x08 [static]

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

Referenced by alpha_heuristic_analyze_probing_loop().

const int ldl_l_opcode = 0x2a [static]

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

Referenced by alpha_deal_with_atomic_sequence().

const int ldq_l_opcode = 0x2b [static]

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

Referenced by alpha_deal_with_atomic_sequence().

const int stl_c_opcode = 0x2e [static]

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

Referenced by alpha_deal_with_atomic_sequence().

const int stq_c_opcode = 0x2f [static]

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

Referenced by alpha_deal_with_atomic_sequence().

const int stq_opcode = 0x2d [static]

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

Referenced by alpha_heuristic_analyze_probing_loop().

const int subq_function = 0x29 [static]

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

Referenced by alpha_heuristic_analyze_probing_loop().

const int subq_opcode = 0x10 [static]

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

Referenced by alpha_heuristic_analyze_probing_loop().

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines