GDB (xrefs)
Classes | Macros | Enumerations | Functions | Variables
/tmp/gdb-7.10/gdb/amd64-tdep.c File Reference
#include "defs.h"
#include "opcode/i386.h"
#include "dis-asm.h"
#include "arch-utils.h"
#include "block.h"
#include "dummy-frame.h"
#include "frame.h"
#include "frame-base.h"
#include "frame-unwind.h"
#include "inferior.h"
#include "infrun.h"
#include "gdbcmd.h"
#include "gdbcore.h"
#include "objfiles.h"
#include "regcache.h"
#include "regset.h"
#include "symfile.h"
#include "disasm.h"
#include "amd64-tdep.h"
#include "i387-tdep.h"
#include "x86-xstate.h"
#include "features/i386/amd64.c"
#include "features/i386/amd64-avx.c"
#include "features/i386/amd64-mpx.c"
#include "features/i386/amd64-avx512.c"
#include "features/i386/x32.c"
#include "features/i386/x32-avx.c"
#include "features/i386/x32-avx512.c"
#include "ax.h"
#include "ax-gdb.h"

Go to the source code of this file.

Classes

struct  amd64_insn
 
struct  displaced_step_closure
 
struct  amd64_frame_cache
 

Macros

#define AMD64_NUM_LOWER_BYTE_REGS   16
 
#define AMD64_NUM_SAVED_REGS   AMD64_NUM_GREGS
 

Enumerations

enum  amd64_reg_class {
  AMD64_INTEGER, AMD64_SSE, AMD64_SSEUP, AMD64_X87,
  AMD64_X87UP, AMD64_COMPLEX_X87, AMD64_NO_CLASS, AMD64_MEMORY
}
 

Functions

static int amd64_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
 
static int amd64_arch_reg_to_regnum (int reg)
 
static const char * amd64_pseudo_register_name (struct gdbarch *gdbarch, int regnum)
 
static struct valueamd64_pseudo_register_read_value (struct gdbarch *gdbarch, struct regcache *regcache, int regnum)
 
static void amd64_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, const gdb_byte *buf)
 
static enum amd64_reg_class amd64_merge_classes (enum amd64_reg_class class1, enum amd64_reg_class class2)
 
static void amd64_classify (struct type *type, enum amd64_reg_class theclass[2])
 
static int amd64_non_pod_p (struct type *type)
 
static void amd64_classify_aggregate (struct type *type, enum amd64_reg_class theclass[2])
 
static enum return_value_convention amd64_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
static CORE_ADDR amd64_push_arguments (struct regcache *regcache, int nargs, struct value **args, CORE_ADDR sp, int struct_return)
 
static CORE_ADDR amd64_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 int amd64_syscall_p (const struct amd64_insn *insn, int *lengthp)
 
static int rex_prefix_p (gdb_byte pfx)
 
static gdb_byteamd64_skip_prefixes (gdb_byte *insn)
 
static int amd64_get_unused_input_int_reg (const struct amd64_insn *details)
 
static void amd64_get_insn_details (gdb_byte *insn, struct amd64_insn *details)
 
static void fixup_riprel (struct gdbarch *gdbarch, struct displaced_step_closure *dsc, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
 
static void fixup_displaced_copy (struct gdbarch *gdbarch, struct displaced_step_closure *dsc, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
 
struct displaced_step_closureamd64_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
 
static int amd64_absolute_jmp_p (const struct amd64_insn *details)
 
static int amd64_jmp_p (const struct amd64_insn *details)
 
static int amd64_absolute_call_p (const struct amd64_insn *details)
 
static int amd64_ret_p (const struct amd64_insn *details)
 
static int amd64_call_p (const struct amd64_insn *details)
 
static int amd64_classify_insn_at (struct gdbarch *gdbarch, CORE_ADDR addr, int(*pred)(const struct amd64_insn *))
 
static int amd64_insn_is_call (struct gdbarch *gdbarch, CORE_ADDR addr)
 
static int amd64_insn_is_ret (struct gdbarch *gdbarch, CORE_ADDR addr)
 
static int amd64_insn_is_jump (struct gdbarch *gdbarch, CORE_ADDR addr)
 
void amd64_displaced_step_fixup (struct gdbarch *gdbarch, struct displaced_step_closure *dsc, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
 
static int rip_relative_offset (struct amd64_insn *insn)
 
static void append_insns (CORE_ADDR *to, ULONGEST len, const gdb_byte *buf)
 
static void amd64_relocate_instruction (struct gdbarch *gdbarch, CORE_ADDR *to, CORE_ADDR oldloc)
 
static void amd64_init_frame_cache (struct amd64_frame_cache *cache)
 
static struct amd64_frame_cacheamd64_alloc_frame_cache (void)
 
static CORE_ADDR amd64_analyze_stack_align (CORE_ADDR pc, CORE_ADDR current_pc, struct amd64_frame_cache *cache)
 
static CORE_ADDR amd64_x32_analyze_stack_align (CORE_ADDR pc, CORE_ADDR current_pc, struct amd64_frame_cache *cache)
 
static CORE_ADDR amd64_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR current_pc, struct amd64_frame_cache *cache)
 
static CORE_ADDR amd64_skip_xmm_prologue (CORE_ADDR pc, CORE_ADDR start_pc)
 
static CORE_ADDR amd64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
 
static void amd64_frame_cache_1 (struct frame_info *this_frame, struct amd64_frame_cache *cache)
 
static struct amd64_frame_cacheamd64_frame_cache (struct frame_info *this_frame, void **this_cache)
 
static enum unwind_stop_reason amd64_frame_unwind_stop_reason (struct frame_info *this_frame, void **this_cache)
 
static void amd64_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
 
static struct valueamd64_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
 
static void amd64_gen_return_address (struct gdbarch *gdbarch, struct agent_expr *ax, struct axs_value *value, CORE_ADDR scope)
 
static struct amd64_frame_cacheamd64_sigtramp_frame_cache (struct frame_info *this_frame, void **this_cache)
 
static enum unwind_stop_reason amd64_sigtramp_frame_unwind_stop_reason (struct frame_info *this_frame, void **this_cache)
 
static void amd64_sigtramp_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
 
static struct valueamd64_sigtramp_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
 
static int amd64_sigtramp_frame_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **this_cache)
 
static CORE_ADDR amd64_frame_base_address (struct frame_info *this_frame, void **this_cache)
 
static int amd64_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static int amd64_epilogue_frame_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
 
static struct amd64_frame_cacheamd64_epilogue_frame_cache (struct frame_info *this_frame, void **this_cache)
 
static enum unwind_stop_reason amd64_epilogue_frame_unwind_stop_reason (struct frame_info *this_frame, void **this_cache)
 
static void amd64_epilogue_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
 
static struct frame_id amd64_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
 
static CORE_ADDR amd64_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
 
static void amd64_supply_fpregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *fpregs, size_t len)
 
static void amd64_collect_fpregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *fpregs, size_t len)
 
static int amd64_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
 
void amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 
static struct typeamd64_x32_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
 
void amd64_x32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 
const struct target_descamd64_target_description (uint64_t xcr0)
 
void _initialize_amd64_tdep (void)
 
void amd64_supply_fxsave (struct regcache *regcache, int regnum, const void *fxsave)
 
void amd64_supply_xsave (struct regcache *regcache, int regnum, const void *xsave)
 
void amd64_collect_fxsave (const struct regcache *regcache, int regnum, void *fxsave)
 
void amd64_collect_xsave (const struct regcache *regcache, int regnum, void *xsave, int gcore)
 

Variables

static const char * amd64_register_names []
 
static const char * amd64_ymm_names []
 
static const char * amd64_ymm_avx512_names []
 
static const char * amd64_ymmh_names []
 
static const char * amd64_ymmh_avx512_names []
 
static const char * amd64_mpx_names []
 
static const char * amd64_k_names []
 
static const char * amd64_zmmh_names []
 
static const char * amd64_zmm_names []
 
static const char * amd64_xmm_avx512_names []
 
static int amd64_dwarf_regmap []
 
static const int amd64_dwarf_regmap_len
 
static const int amd64_arch_regmap [16]
 
static const int amd64_arch_regmap_len
 
static const char * amd64_byte_names []
 
static const char * amd64_word_names []
 
static const char * amd64_dword_names []
 
static const unsigned char onebyte_has_modrm [256]
 
static const unsigned char twobyte_has_modrm [256]
 
static const struct frame_unwind amd64_frame_unwind
 
static const struct frame_unwind amd64_sigtramp_frame_unwind
 
static const struct frame_base amd64_frame_base
 
static const struct frame_unwind amd64_epilogue_frame_unwind
 
const struct regset amd64_fpregset
 
static const int amd64_record_regmap []
 

Macro Definition Documentation

#define AMD64_NUM_LOWER_BYTE_REGS   16

Definition at line 310 of file amd64-tdep.c.

Referenced by amd64_pseudo_register_read_value(), and amd64_pseudo_register_write().

#define AMD64_NUM_SAVED_REGS   AMD64_NUM_GREGS

Enumeration Type Documentation

Enumerator
AMD64_INTEGER 
AMD64_SSE 
AMD64_SSEUP 
AMD64_X87 
AMD64_X87UP 
AMD64_COMPLEX_X87 
AMD64_NO_CLASS 
AMD64_MEMORY 

Definition at line 464 of file amd64-tdep.c.

Function Documentation

void _initialize_amd64_tdep ( void  )
static int amd64_absolute_call_p ( const struct amd64_insn details)
static

Definition at line 1435 of file amd64-tdep.c.

References amd64_insn::opcode_offset, and amd64_insn::raw_insn.

Referenced by amd64_call_p(), and amd64_displaced_step_fixup().

static int amd64_absolute_jmp_p ( const struct amd64_insn details)
static

Definition at line 1398 of file amd64-tdep.c.

References amd64_insn::opcode_offset, and amd64_insn::raw_insn.

Referenced by amd64_displaced_step_fixup(), and amd64_jmp_p().

static struct amd64_frame_cache* amd64_alloc_frame_cache ( void  )
static
static CORE_ADDR amd64_analyze_prologue ( struct gdbarch gdbarch,
CORE_ADDR  pc,
CORE_ADDR  current_pc,
struct amd64_frame_cache cache 
)
static
static CORE_ADDR amd64_analyze_stack_align ( CORE_ADDR  pc,
CORE_ADDR  current_pc,
struct amd64_frame_cache cache 
)
static
static int amd64_arch_reg_to_regnum ( int  reg)
static

Definition at line 293 of file amd64-tdep.c.

References gdb_assert.

Referenced by amd64_analyze_stack_align(), amd64_x32_analyze_stack_align(), and fixup_riprel().

static int amd64_call_p ( const struct amd64_insn details)
static
static void amd64_classify ( struct type type,
enum amd64_reg_class  theclass[2] 
)
static
static void amd64_classify_aggregate ( struct type type,
enum amd64_reg_class  theclass[2] 
)
static
static int amd64_classify_insn_at ( struct gdbarch gdbarch,
CORE_ADDR  addr,
int(*)(const struct amd64_insn *)  pred 
)
static
static void amd64_collect_fpregset ( const struct regset regset,
const struct regcache regcache,
int  regnum,
void *  fpregs,
size_t  len 
)
static
void amd64_collect_fxsave ( const struct regcache regcache,
int  regnum,
void *  fxsave 
)
void amd64_collect_xsave ( const struct regcache regcache,
int  regnum,
void *  xsave,
int  gcore 
)
struct displaced_step_closure* amd64_displaced_step_copy_insn ( struct gdbarch gdbarch,
CORE_ADDR  from,
CORE_ADDR  to,
struct regcache regs 
)
void amd64_displaced_step_fixup ( struct gdbarch gdbarch,
struct displaced_step_closure dsc,
CORE_ADDR  from,
CORE_ADDR  to,
struct regcache regs 
)
static struct frame_id amd64_dummy_id ( struct gdbarch gdbarch,
struct frame_info this_frame 
)
static
static int amd64_dwarf_reg_to_regnum ( struct gdbarch gdbarch,
int  reg 
)
static
static struct amd64_frame_cache* amd64_epilogue_frame_cache ( struct frame_info this_frame,
void **  this_cache 
)
static
static int amd64_epilogue_frame_sniffer ( const struct frame_unwind self,
struct frame_info this_frame,
void **  this_prologue_cache 
)
static
static void amd64_epilogue_frame_this_id ( struct frame_info this_frame,
void **  this_cache,
struct frame_id this_id 
)
static
static enum unwind_stop_reason amd64_epilogue_frame_unwind_stop_reason ( struct frame_info this_frame,
void **  this_cache 
)
static

Definition at line 2802 of file amd64-tdep.c.

References amd64_epilogue_frame_cache(), and amd64_frame_cache::base_p.

static CORE_ADDR amd64_frame_align ( struct gdbarch gdbarch,
CORE_ADDR  sp 
)
static

Definition at line 2851 of file amd64-tdep.c.

Referenced by amd64_init_abi().

static CORE_ADDR amd64_frame_base_address ( struct frame_info this_frame,
void **  this_cache 
)
static

Definition at line 2704 of file amd64-tdep.c.

References amd64_frame_cache(), and amd64_frame_cache::base.

static struct amd64_frame_cache* amd64_frame_cache ( struct frame_info this_frame,
void **  this_cache 
)
static
static void amd64_frame_cache_1 ( struct frame_info this_frame,
struct amd64_frame_cache cache 
)
static
static struct value* amd64_frame_prev_register ( struct frame_info this_frame,
void **  this_cache,
int  regnum 
)
static
static void amd64_frame_this_id ( struct frame_info this_frame,
void **  this_cache,
struct frame_id this_id 
)
static
static enum unwind_stop_reason amd64_frame_unwind_stop_reason ( struct frame_info this_frame,
void **  this_cache 
)
static
static void amd64_gen_return_address ( struct gdbarch gdbarch,
struct agent_expr ax,
struct axs_value value,
CORE_ADDR  scope 
)
static
static void amd64_get_insn_details ( gdb_byte insn,
struct amd64_insn details 
)
static
static int amd64_get_longjmp_target ( struct frame_info frame,
CORE_ADDR pc 
)
static
static int amd64_get_unused_input_int_reg ( const struct amd64_insn details)
static
void amd64_init_abi ( struct gdbarch_info  info,
struct gdbarch gdbarch 
)

Definition at line 2937 of file amd64-tdep.c.

References AMD64_BND0R_REGNUM, AMD64_BNDCFGU_REGNUM, amd64_dummy_id(), amd64_dwarf_reg_to_regnum(), AMD64_EFLAGS_REGNUM, amd64_fpregset, amd64_frame_align(), amd64_gen_return_address(), amd64_get_longjmp_target(), amd64_insn_is_call(), amd64_insn_is_jump(), amd64_insn_is_ret(), AMD64_K0_REGNUM, amd64_k_names, amd64_mpx_names, AMD64_NUM_GREGS, AMD64_NUM_REGS, amd64_pseudo_register_name(), amd64_pseudo_register_read_value(), amd64_pseudo_register_write(), amd64_push_dummy_call(), amd64_record_regmap, amd64_register_names, amd64_relocate_instruction(), amd64_return_value(), AMD64_RIP_REGNUM, AMD64_RSP_REGNUM, amd64_skip_prologue(), AMD64_ST0_REGNUM, AMD64_XMM16_REGNUM, amd64_xmm_avx512_names, AMD64_YMM0H_REGNUM, AMD64_YMM16H_REGNUM, amd64_ymmh_avx512_names, amd64_ymmh_names, AMD64_ZMM0H_REGNUM, amd64_zmmh_names, gdbarch_tdep::bnd0r_regnum, gdbarch_tdep::bndcfgu_regnum, gdbarch_tdep::fpregset, frame_base_set_default(), frame_unwind_append_unwinder(), frame_unwind_prepend_unwinder(), gdbarch_tdep(), i386_stap_is_single_operand(), i386_stap_parse_special_token(), i387_convert_register_p(), I387_NUM_REGS, i387_register_to_value(), I387_SIZEOF_FXSAVE, i387_value_to_register(), gdbarch_tdep::k0_regnum, gdbarch_tdep::k_register_names, gdbarch_tdep::mpx_register_names, gdbarch_tdep::num_byte_regs, gdbarch_tdep::num_core_regs, gdbarch_tdep::num_dword_regs, gdbarch_tdep::num_mmx_regs, gdbarch_tdep::num_word_regs, gdbarch_tdep::num_xmm_avx512_regs, gdbarch_tdep::num_xmm_regs, gdbarch_tdep::num_ymm_avx512_regs, gdbarch_tdep::num_ymm_regs, gdbarch_tdep::num_zmm_regs, gdbarch_tdep::record_regmap, gdbarch_tdep::register_names, set_gdbarch_convert_register_p(), set_gdbarch_dummy_id(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_fp0_regnum(), set_gdbarch_frame_align(), set_gdbarch_frame_red_zone_size(), set_gdbarch_gen_return_address(), set_gdbarch_get_longjmp_target(), set_gdbarch_insn_is_call(), set_gdbarch_insn_is_jump(), set_gdbarch_insn_is_ret(), set_gdbarch_long_bit(), set_gdbarch_long_double_bit(), set_gdbarch_long_long_bit(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_ps_regnum(), set_gdbarch_pseudo_register_read_value(), set_gdbarch_pseudo_register_write(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_register_to_value(), set_gdbarch_relocate_instruction(), set_gdbarch_return_value(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_stab_reg_to_regnum(), set_gdbarch_stap_integer_prefixes(), set_gdbarch_stap_is_single_operand(), set_gdbarch_stap_parse_special_token(), set_gdbarch_stap_register_indirection_prefixes(), set_gdbarch_stap_register_indirection_suffixes(), set_gdbarch_stap_register_prefixes(), set_gdbarch_value_to_register(), set_tdesc_pseudo_register_name(), gdbarch_tdep::sizeof_fpregset, gdbarch_tdep::st0_regnum, gdbarch_info::target_desc, gdbarch_tdep::tdesc, tdesc_amd64, tdesc_find_feature(), tdesc_has_registers(), gdbarch_tdep::xmm16_regnum, gdbarch_tdep::xmm_avx512_register_names, gdbarch_tdep::ymm0h_regnum, gdbarch_tdep::ymm16h_register_names, gdbarch_tdep::ymm16h_regnum, gdbarch_tdep::ymmh_register_names, gdbarch_tdep::zmm0h_regnum, and gdbarch_tdep::zmmh_register_names.

Referenced by amd64_dicos_init_abi(), amd64_linux_init_abi(), amd64_sol2_init_abi(), amd64_windows_init_abi(), amd64_x32_init_abi(), amd64fbsd_init_abi(), amd64nbsd_init_abi(), amd64obsd_init_abi(), and x86_darwin_init_abi_64().

static void amd64_init_frame_cache ( struct amd64_frame_cache cache)
static
static int amd64_insn_is_call ( struct gdbarch gdbarch,
CORE_ADDR  addr 
)
static

Definition at line 1530 of file amd64-tdep.c.

References amd64_call_p(), and amd64_classify_insn_at().

Referenced by amd64_init_abi().

static int amd64_insn_is_jump ( struct gdbarch gdbarch,
CORE_ADDR  addr 
)
static

Definition at line 1546 of file amd64-tdep.c.

References amd64_classify_insn_at(), and amd64_jmp_p().

Referenced by amd64_init_abi().

static int amd64_insn_is_ret ( struct gdbarch gdbarch,
CORE_ADDR  addr 
)
static

Definition at line 1538 of file amd64-tdep.c.

References amd64_classify_insn_at(), and amd64_ret_p().

Referenced by amd64_init_abi().

static int amd64_jmp_p ( const struct amd64_insn details)
static
static enum amd64_reg_class amd64_merge_classes ( enum amd64_reg_class  class1,
enum amd64_reg_class  class2 
)
static
static int amd64_non_pod_p ( struct type type)
static

Definition at line 517 of file amd64-tdep.c.

References TYPE_CODE, TYPE_CODE_STRUCT, and TYPE_N_BASECLASSES.

Referenced by amd64_classify_aggregate().

static const char* amd64_pseudo_register_name ( struct gdbarch gdbarch,
int  regnum 
)
static
static struct value* amd64_pseudo_register_read_value ( struct gdbarch gdbarch,
struct regcache regcache,
int  regnum 
)
static
static void amd64_pseudo_register_write ( struct gdbarch gdbarch,
struct regcache regcache,
int  regnum,
const gdb_byte buf 
)
static
static CORE_ADDR amd64_push_arguments ( struct regcache regcache,
int  nargs,
struct value **  args,
CORE_ADDR  sp,
int  struct_return 
)
static
static CORE_ADDR amd64_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
static void amd64_relocate_instruction ( struct gdbarch gdbarch,
CORE_ADDR to,
CORE_ADDR  oldloc 
)
static
static int amd64_ret_p ( const struct amd64_insn details)
static

Definition at line 1454 of file amd64-tdep.c.

References amd64_insn::opcode_offset, and amd64_insn::raw_insn.

Referenced by amd64_displaced_step_fixup(), and amd64_insn_is_ret().

static enum return_value_convention amd64_return_value ( struct gdbarch gdbarch,
struct value function,
struct type type,
struct regcache regcache,
gdb_byte readbuf,
const gdb_byte writebuf 
)
static
static struct amd64_frame_cache* amd64_sigtramp_frame_cache ( struct frame_info this_frame,
void **  this_cache 
)
static
static struct value* amd64_sigtramp_frame_prev_register ( struct frame_info this_frame,
void **  this_cache,
int  regnum 
)
static

Definition at line 2653 of file amd64-tdep.c.

References amd64_frame_prev_register(), and amd64_sigtramp_frame_cache().

static int amd64_sigtramp_frame_sniffer ( const struct frame_unwind self,
struct frame_info this_frame,
void **  this_cache 
)
static
static void amd64_sigtramp_frame_this_id ( struct frame_info this_frame,
void **  this_cache,
struct frame_id this_id 
)
static
static enum unwind_stop_reason amd64_sigtramp_frame_unwind_stop_reason ( struct frame_info this_frame,
void **  this_cache 
)
static

Definition at line 2622 of file amd64-tdep.c.

References amd64_sigtramp_frame_cache(), and amd64_frame_cache::base_p.

static gdb_byte* amd64_skip_prefixes ( gdb_byte insn)
static

Definition at line 1099 of file amd64-tdep.c.

Referenced by amd64_get_insn_details(), and amd64_relocate_instruction().

static CORE_ADDR amd64_skip_prologue ( struct gdbarch gdbarch,
CORE_ADDR  start_pc 
)
static
static CORE_ADDR amd64_skip_xmm_prologue ( CORE_ADDR  pc,
CORE_ADDR  start_pc 
)
static
static int amd64_stack_frame_destroyed_p ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)
static
static void amd64_supply_fpregset ( const struct regset regset,
struct regcache regcache,
int  regnum,
const void *  fpregs,
size_t  len 
)
static
void amd64_supply_fxsave ( struct regcache regcache,
int  regnum,
const void *  fxsave 
)
void amd64_supply_xsave ( struct regcache regcache,
int  regnum,
const void *  xsave 
)
static int amd64_syscall_p ( const struct amd64_insn insn,
int lengthp 
)
static
const struct target_desc* amd64_target_description ( uint64_t  xcr0)
static CORE_ADDR amd64_x32_analyze_stack_align ( CORE_ADDR  pc,
CORE_ADDR  current_pc,
struct amd64_frame_cache cache 
)
static
void amd64_x32_init_abi ( struct gdbarch_info  info,
struct gdbarch gdbarch 
)
static struct type* amd64_x32_pseudo_register_type ( struct gdbarch gdbarch,
int  regnum 
)
static
static void append_insns ( CORE_ADDR to,
ULONGEST  len,
const gdb_byte buf 
)
static

Definition at line 1700 of file amd64-tdep.c.

References len, and target_write_memory().

Referenced by amd64_relocate_instruction().

static void fixup_displaced_copy ( struct gdbarch gdbarch,
struct displaced_step_closure dsc,
CORE_ADDR  from,
CORE_ADDR  to,
struct regcache regs 
)
static
static void fixup_riprel ( struct gdbarch gdbarch,
struct displaced_step_closure dsc,
CORE_ADDR  from,
CORE_ADDR  to,
struct regcache regs 
)
static
static int rex_prefix_p ( gdb_byte  pfx)
static

Definition at line 1089 of file amd64-tdep.c.

Referenced by amd64_get_insn_details().

static int rip_relative_offset ( struct amd64_insn insn)
static

Definition at line 1683 of file amd64-tdep.c.

References amd64_insn::modrm_offset, and amd64_insn::raw_insn.

Referenced by amd64_relocate_instruction().

Variable Documentation

const int amd64_arch_regmap[16]
static
const int amd64_arch_regmap_len
static
Initial value:
=
(sizeof (amd64_arch_regmap) / sizeof (amd64_arch_regmap[0]))
static const int amd64_arch_regmap[16]
Definition: amd64-tdep.c:266

Definition at line 286 of file amd64-tdep.c.

const char* amd64_byte_names[]
static
Initial value:
=
{
"al", "bl", "cl", "dl", "sil", "dil", "bpl", "spl",
"r8l", "r9l", "r10l", "r11l", "r12l", "r13l", "r14l", "r15l",
"ah", "bh", "ch", "dh"
}

Definition at line 302 of file amd64-tdep.c.

int amd64_dwarf_regmap[]
static

Definition at line 160 of file amd64-tdep.c.

Referenced by amd64_dwarf_reg_to_regnum().

const int amd64_dwarf_regmap_len
static
Initial value:
=
(sizeof (amd64_dwarf_regmap) / sizeof (amd64_dwarf_regmap[0]))
static int amd64_dwarf_regmap[]
Definition: amd64-tdep.c:160

Definition at line 239 of file amd64-tdep.c.

Referenced by amd64_dwarf_reg_to_regnum().

const char* amd64_dword_names[]
static
Initial value:
=
{
"eax", "ebx", "ecx", "edx", "esi", "edi", "ebp", "esp",
"r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d",
"eip"
}

Definition at line 322 of file amd64-tdep.c.

const struct frame_unwind amd64_epilogue_frame_unwind
static
Initial value:
=
{
NULL,
}
static enum unwind_stop_reason amd64_epilogue_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: amd64-tdep.c:2802
static struct value * amd64_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
Definition: amd64-tdep.c:2528
static int amd64_epilogue_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: amd64-tdep.c:2748
static void amd64_epilogue_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
Definition: amd64-tdep.c:2815

Definition at line 2828 of file amd64-tdep.c.

const struct regset amd64_fpregset
Initial value:
=
{
}
static void amd64_supply_fpregset(const struct regset *regset, struct regcache *regcache, int regnum, const void *fpregs, size_t len)
Definition: amd64-tdep.c:2862
static void amd64_collect_fpregset(const struct regset *regset, const struct regcache *regcache, int regnum, void *fpregs, size_t len)
Definition: amd64-tdep.c:2878

Definition at line 2889 of file amd64-tdep.c.

Referenced by amd64_init_abi(), amd64_linux_iterate_over_regset_sections(), and amd64fbsd_iterate_over_regset_sections().

const struct frame_base amd64_frame_base
static
Initial value:
=
{
amd64_frame_base_address
}
static CORE_ADDR amd64_frame_base_address(struct frame_info *this_frame, void **this_cache)
Definition: amd64-tdep.c:2704
static const struct frame_unwind amd64_frame_unwind
Definition: amd64-tdep.c:2547

Definition at line 2712 of file amd64-tdep.c.

const struct frame_unwind amd64_frame_unwind
static
Initial value:
=
{
NULL,
}
static enum unwind_stop_reason amd64_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: amd64-tdep.c:2493
static void amd64_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
Definition: amd64-tdep.c:2510
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: frame-unwind.c:170
static struct value * amd64_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
Definition: amd64-tdep.c:2528

Definition at line 2547 of file amd64-tdep.c.

const char* amd64_k_names[]
static
Initial value:
=
{
"k0", "k1", "k2", "k3",
"k4", "k5", "k6", "k7"
}

Definition at line 120 of file amd64-tdep.c.

Referenced by amd64_init_abi().

const char* amd64_mpx_names[]
static
Initial value:
=
{
"bnd0raw", "bnd1raw", "bnd2raw", "bnd3raw", "bndcfgu", "bndstatus"
}

Definition at line 115 of file amd64-tdep.c.

Referenced by amd64_init_abi().

const int amd64_record_regmap[]
static
Initial value:

Definition at line 2926 of file amd64-tdep.c.

Referenced by amd64_init_abi().

const char* amd64_register_names[]
static
Initial value:
=
{
"rax", "rbx", "rcx", "rdx", "rsi", "rdi", "rbp", "rsp",
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
"rip", "eflags", "cs", "ss", "ds", "es", "fs", "gs",
"st0", "st1", "st2", "st3", "st4", "st5", "st6", "st7",
"fctrl", "fstat", "ftag", "fiseg", "fioff", "foseg", "fooff", "fop",
"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7",
"xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15",
"mxcsr",
}

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

Referenced by amd64_init_abi().

const struct frame_unwind amd64_sigtramp_frame_unwind
static
Initial value:
=
{
NULL,
}
static enum unwind_stop_reason amd64_sigtramp_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: amd64-tdep.c:2622
static struct value * amd64_sigtramp_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
Definition: amd64-tdep.c:2653
static int amd64_sigtramp_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_cache)
Definition: amd64-tdep.c:2663
static void amd64_sigtramp_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
Definition: amd64-tdep.c:2635

Definition at line 2692 of file amd64-tdep.c.

const char* amd64_word_names[]
static
Initial value:
=
{
"ax", "bx", "cx", "dx", "si", "di", "bp", "",
"r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w"
}

Definition at line 314 of file amd64-tdep.c.

const char* amd64_xmm_avx512_names[]
static
Initial value:
= {
"xmm16", "xmm17", "xmm18", "xmm19",
"xmm20", "xmm21", "xmm22", "xmm23",
"xmm24", "xmm25", "xmm26", "xmm27",
"xmm28", "xmm29", "xmm30", "xmm31"
}

Definition at line 150 of file amd64-tdep.c.

Referenced by amd64_init_abi().

const char* amd64_ymm_avx512_names[]
static
Initial value:
=
{
"ymm16", "ymm17", "ymm18", "ymm19",
"ymm20", "ymm21", "ymm22", "ymm23",
"ymm24", "ymm25", "ymm26", "ymm27",
"ymm28", "ymm29", "ymm30", "ymm31"
}

Definition at line 91 of file amd64-tdep.c.

Referenced by amd64_pseudo_register_name().

const char* amd64_ymm_names[]
static
Initial value:
=
{
"ymm0", "ymm1", "ymm2", "ymm3",
"ymm4", "ymm5", "ymm6", "ymm7",
"ymm8", "ymm9", "ymm10", "ymm11",
"ymm12", "ymm13", "ymm14", "ymm15"
}

Definition at line 83 of file amd64-tdep.c.

Referenced by amd64_pseudo_register_name().

const char* amd64_ymmh_avx512_names[]
static
Initial value:
=
{
"ymm16h", "ymm17h", "ymm18h", "ymm19h",
"ymm20h", "ymm21h", "ymm22h", "ymm23h",
"ymm24h", "ymm25h", "ymm26h", "ymm27h",
"ymm28h", "ymm29h", "ymm30h", "ymm31h"
}

Definition at line 107 of file amd64-tdep.c.

Referenced by amd64_init_abi().

const char* amd64_ymmh_names[]
static
Initial value:
=
{
"ymm0h", "ymm1h", "ymm2h", "ymm3h",
"ymm4h", "ymm5h", "ymm6h", "ymm7h",
"ymm8h", "ymm9h", "ymm10h", "ymm11h",
"ymm12h", "ymm13h", "ymm14h", "ymm15h"
}

Definition at line 99 of file amd64-tdep.c.

Referenced by amd64_init_abi().

const char* amd64_zmm_names[]
static
Initial value:
=
{
"zmm0", "zmm1", "zmm2", "zmm3",
"zmm4", "zmm5", "zmm6", "zmm7",
"zmm8", "zmm9", "zmm10", "zmm11",
"zmm12", "zmm13", "zmm14", "zmm15",
"zmm16", "zmm17", "zmm18", "zmm19",
"zmm20", "zmm21", "zmm22", "zmm23",
"zmm24", "zmm25", "zmm26", "zmm27",
"zmm28", "zmm29", "zmm30", "zmm31"
}

Definition at line 138 of file amd64-tdep.c.

Referenced by amd64_pseudo_register_name().

const char* amd64_zmmh_names[]
static
Initial value:
=
{
"zmm0h", "zmm1h", "zmm2h", "zmm3h",
"zmm4h", "zmm5h", "zmm6h", "zmm7h",
"zmm8h", "zmm9h", "zmm10h", "zmm11h",
"zmm12h", "zmm13h", "zmm14h", "zmm15h",
"zmm16h", "zmm17h", "zmm18h", "zmm19h",
"zmm20h", "zmm21h", "zmm22h", "zmm23h",
"zmm24h", "zmm25h", "zmm26h", "zmm27h",
"zmm28h", "zmm29h", "zmm30h", "zmm31h"
}

Definition at line 126 of file amd64-tdep.c.

Referenced by amd64_init_abi().

const unsigned char onebyte_has_modrm[256]
static
Initial value:
= {
1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,
1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,
1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,
1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1
}

Definition at line 1040 of file amd64-tdep.c.

const unsigned char twobyte_has_modrm[256]
static
Initial value:
= {
1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
}

Definition at line 1063 of file amd64-tdep.c.