GDB (xrefs)
Classes | Defines | Enumerations | Functions | Variables
/home/stan/gdb/src/gdb/i386-tdep.c File Reference
#include "defs.h"
#include "opcode/i386.h"
#include "arch-utils.h"
#include "command.h"
#include "dummy-frame.h"
#include "dwarf2-frame.h"
#include "doublest.h"
#include "frame.h"
#include "frame-base.h"
#include "frame-unwind.h"
#include "inferior.h"
#include "gdbcmd.h"
#include "gdbcore.h"
#include "gdbtypes.h"
#include "objfiles.h"
#include "osabi.h"
#include "regcache.h"
#include "reggroups.h"
#include "regset.h"
#include "symfile.h"
#include "symtab.h"
#include "target.h"
#include "value.h"
#include "dis-asm.h"
#include "disasm.h"
#include "remote.h"
#include "exceptions.h"
#include "gdb_assert.h"
#include "gdb_string.h"
#include "i386-tdep.h"
#include "i387-tdep.h"
#include "i386-xstate.h"
#include "record.h"
#include "record-full.h"
#include <stdint.h>
#include "features/i386/i386.c"
#include "features/i386/i386-avx.c"
#include "features/i386/i386-mmx.c"
#include "ax.h"
#include "ax-gdb.h"
#include "stap-probe.h"
#include "user-regs.h"
#include "cli/cli-utils.h"
#include "expression.h"
#include "parser-defs.h"
#include <ctype.h>

Go to the source code of this file.

Classes

struct  i386_frame_cache
struct  i386_insn
struct  i386_record_s

Defines

#define I386_NUM_SAVED_REGS   I386_NUM_GREGS
#define I386_MAX_MATCHED_INSN_LEN   6
#define LOW_RETURN_REGNUM   I386_EAX_REGNUM /* %eax */
#define HIGH_RETURN_REGNUM   I386_EDX_REGNUM /* %edx */
#define PREFIX_REPZ   0x01
#define PREFIX_REPNZ   0x02
#define PREFIX_LOCK   0x04
#define PREFIX_DATA   0x08
#define PREFIX_ADDR   0x10
#define I386_SAVE_FPU_REGS   0xfffd
#define I386_SAVE_FPU_ENV   0xfffe
#define I386_SAVE_FPU_ENV_REG_STACK   0xffff
#define I386_RECORD_FULL_ARCH_LIST_ADD_REG(regnum)   record_full_arch_list_add_reg (ir.regcache, ir.regmap[(regnum)])

Enumerations

enum  {
  OT_BYTE = 0, OT_WORD, OT_LONG, OT_QUAD,
  OT_DQUAD
}
enum  {
  OP_ADDL, OP_ORL, OP_ADCL, OP_SBBL,
  OP_ANDL, OP_SUBL, OP_XORL, OP_CMPL
}

Functions

static int i386_mmx_regnum_p (struct gdbarch *gdbarch, int regnum)
int i386_byte_regnum_p (struct gdbarch *gdbarch, int regnum)
int i386_word_regnum_p (struct gdbarch *gdbarch, int regnum)
int i386_dword_regnum_p (struct gdbarch *gdbarch, int regnum)
static int i386_ymmh_regnum_p (struct gdbarch *gdbarch, int regnum)
int i386_ymm_regnum_p (struct gdbarch *gdbarch, int regnum)
int i386_xmm_regnum_p (struct gdbarch *gdbarch, int regnum)
static int i386_mxcsr_regnum_p (struct gdbarch *gdbarch, int regnum)
int i386_fp_regnum_p (struct gdbarch *gdbarch, int regnum)
int i386_fpc_regnum_p (struct gdbarch *gdbarch, int regnum)
static const char * i386_register_name (struct gdbarch *gdbarch, int regnum)
const char * i386_pseudo_register_name (struct gdbarch *gdbarch, int regnum)
static int i386_dbx_reg_to_regnum (struct gdbarch *gdbarch, int reg)
static int i386_svr4_reg_to_regnum (struct gdbarch *gdbarch, int reg)
static const gdb_bytei386_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pc, int *len)
static gdb_bytei386_skip_prefixes (gdb_byte *insn, size_t max_len)
static int i386_absolute_jmp_p (const gdb_byte *insn)
static int i386_absolute_call_p (const gdb_byte *insn)
static int i386_ret_p (const gdb_byte *insn)
static int i386_call_p (const gdb_byte *insn)
static int i386_syscall_p (const gdb_byte *insn, int *lengthp)
struct displaced_step_closurei386_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
void i386_displaced_step_fixup (struct gdbarch *gdbarch, struct displaced_step_closure *closure, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
static void append_insns (CORE_ADDR *to, ULONGEST len, const gdb_byte *buf)
static void i386_relocate_instruction (struct gdbarch *gdbarch, CORE_ADDR *to, CORE_ADDR oldloc)
static struct i386_frame_cachei386_alloc_frame_cache (void)
static CORE_ADDR i386_follow_jump (struct gdbarch *gdbarch, CORE_ADDR pc)
static CORE_ADDR i386_analyze_struct_return (CORE_ADDR pc, CORE_ADDR current_pc, struct i386_frame_cache *cache)
static CORE_ADDR i386_skip_probe (CORE_ADDR pc)
static CORE_ADDR i386_analyze_stack_align (CORE_ADDR pc, CORE_ADDR current_pc, struct i386_frame_cache *cache)
static int i386_match_pattern (CORE_ADDR pc, struct i386_insn pattern)
static struct i386_insni386_match_insn (CORE_ADDR pc, struct i386_insn *insn_patterns)
static int i386_match_insn_block (CORE_ADDR pc, struct i386_insn *insn_patterns)
static CORE_ADDR i386_skip_noop (CORE_ADDR pc)
static CORE_ADDR i386_analyze_frame_setup (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR limit, struct i386_frame_cache *cache)
static CORE_ADDR i386_analyze_register_saves (CORE_ADDR pc, CORE_ADDR current_pc, struct i386_frame_cache *cache)
static CORE_ADDR i386_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR current_pc, struct i386_frame_cache *cache)
static CORE_ADDR i386_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
CORE_ADDR i386_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
static CORE_ADDR i386_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
static void i386_frame_cache_1 (struct frame_info *this_frame, struct i386_frame_cache *cache)
static struct i386_frame_cachei386_frame_cache (struct frame_info *this_frame, void **this_cache)
static void i386_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static enum unwind_stop_reason i386_frame_unwind_stop_reason (struct frame_info *this_frame, void **this_cache)
static struct valuei386_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
static int i386_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR pc)
static int i386_epilogue_frame_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
static struct i386_frame_cachei386_epilogue_frame_cache (struct frame_info *this_frame, void **this_cache)
static enum unwind_stop_reason i386_epilogue_frame_unwind_stop_reason (struct frame_info *this_frame, void **this_cache)
static void i386_epilogue_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static struct valuei386_epilogue_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
static int i386_in_stack_tramp_p (CORE_ADDR pc)
static int i386_stack_tramp_frame_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **this_cache)
static void i386_gen_return_address (struct gdbarch *gdbarch, struct agent_expr *ax, struct axs_value *value, CORE_ADDR scope)
static struct i386_frame_cachei386_sigtramp_frame_cache (struct frame_info *this_frame, void **this_cache)
static enum unwind_stop_reason i386_sigtramp_frame_unwind_stop_reason (struct frame_info *this_frame, void **this_cache)
static void i386_sigtramp_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static struct valuei386_sigtramp_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
static int i386_sigtramp_frame_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
static CORE_ADDR i386_frame_base_address (struct frame_info *this_frame, void **this_cache)
static struct frame_id i386_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
static CORE_ADDR i386_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
static int i386_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
static int i386_16_byte_align_p (struct type *type)
static CORE_ADDR i386_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp, CORE_ADDR funaddr, struct value **args, int nargs, struct type *value_type, CORE_ADDR *real_pc, CORE_ADDR *bp_addr, struct regcache *regcache)
static CORE_ADDR i386_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 i386_extract_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, gdb_byte *valbuf)
static void i386_store_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
static int i386_reg_struct_return_p (struct gdbarch *gdbarch, struct type *type)
static enum return_value_convention i386_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
struct typei387_ext_type (struct gdbarch *gdbarch)
static struct typei386_ymm_type (struct gdbarch *gdbarch)
static struct typei386_mmx_type (struct gdbarch *gdbarch)
struct typei386_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
static int i386_mmx_regnum_to_fp_regnum (struct regcache *regcache, int regnum)
void i386_pseudo_register_read_into_value (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, struct value *result_value)
static struct valuei386_pseudo_register_read_value (struct gdbarch *gdbarch, struct regcache *regcache, int regnum)
void i386_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, const gdb_byte *buf)
static int i386_next_regnum (int regnum)
static int i386_convert_register_p (struct gdbarch *gdbarch, int regnum, struct type *type)
static int i386_register_to_value (struct frame_info *frame, int regnum, struct type *type, gdb_byte *to, int *optimizedp, int *unavailablep)
static void i386_value_to_register (struct frame_info *frame, int regnum, struct type *type, const gdb_byte *from)
void i386_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len)
void i386_collect_gregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *gregs, size_t len)
static void i386_supply_fpregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *fpregs, size_t len)
static void i386_collect_fpregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *fpregs, size_t len)
static void i386_supply_xstateregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *xstateregs, size_t len)
static void i386_collect_xstateregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *xstateregs, size_t len)
struct regseti386_regset_from_core_section (struct gdbarch *gdbarch, const char *sect_name, size_t sect_size)
CORE_ADDR i386_pe_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc, char *name)
int i386_sigtramp_p (struct frame_info *this_frame)
static int i386_print_insn (bfd_vma pc, struct disassemble_info *info)
static int i386_svr4_sigtramp_p (struct frame_info *this_frame)
static CORE_ADDR i386_svr4_sigcontext_addr (struct frame_info *this_frame)
int i386_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
int i386_stap_parse_special_token (struct gdbarch *gdbarch, struct stap_parse_info *p)
void i386_elf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
void i386_svr4_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
static void i386_go32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
static void i386_init_reggroups (void)
static void i386_add_reggroups (struct gdbarch *gdbarch)
int i386_register_reggroup_p (struct gdbarch *gdbarch, int regnum, struct reggroup *group)
static CORE_ADDR i386_fetch_pointer_argument (struct frame_info *frame, int argi, struct type *type)
static void i386_skip_permanent_breakpoint (struct regcache *regcache)
static int i386_record_modrm (struct i386_record_s *irp)
static int i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr)
static int i386_record_lea_modrm (struct i386_record_s *irp)
static int i386_record_push (struct i386_record_s *irp, int size)
static int i386_record_floats (struct gdbarch *gdbarch, struct i386_record_s *ir, uint32_t iregnum)
int i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR input_addr)
static int i386_fast_tracepoint_valid_at (struct gdbarch *gdbarch, CORE_ADDR addr, int *isize, char **msg)
static int i386_validate_tdesc_p (struct gdbarch_tdep *tdep, struct tdesc_arch_data *tdesc_data)
static struct gdbarchi386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
static enum gdb_osabi i386_coff_osabi_sniffer (bfd *abfd)
void _initialize_i386_tdep (void)

Variables

static const char * i386_register_names []
static const char * i386_ymm_names []
static const char * i386_ymmh_names []
static const char * i386_mmx_names []
static const char * i386_byte_names []
static const char * i386_word_names []
static const char att_flavor [] = "att"
static const char intel_flavor [] = "intel"
static const char *const valid_flavors []
static const char * disassembly_flavor = att_flavor
struct i386_insn i386_frame_setup_skip_insns []
static struct frame_unwind i386_frame_unwind
static struct frame_unwind i386_epilogue_frame_unwind
struct i386_insn i386_tramp_chain_in_reg_insns []
struct i386_insn i386_tramp_chain_on_stack_insns []
static struct frame_unwind i386_stack_tramp_frame_unwind
static struct frame_unwind i386_sigtramp_frame_unwind
static struct frame_base i386_frame_base
static const char default_struct_convention [] = "default"
static const char pcc_struct_convention [] = "pcc"
static const char reg_struct_convention [] = "reg"
static const char *const valid_conventions []
static const char * struct_convention = default_struct_convention
static struct reggroupi386_sse_reggroup
static struct reggroupi386_mmx_reggroup
static const int i386_record_regmap []

Define Documentation

#define HIGH_RETURN_REGNUM   I386_EDX_REGNUM /* %edx */

Definition at line 2501 of file i386-tdep.c.

Referenced by i386_extract_return_value(), and i386_store_return_value().

#define I386_MAX_MATCHED_INSN_LEN   6

Definition at line 1133 of file i386-tdep.c.

Referenced by i386_match_pattern().

Definition at line 4338 of file i386-tdep.c.

Referenced by i386_process_record().

#define I386_SAVE_FPU_ENV   0xfffe

Definition at line 4269 of file i386-tdep.c.

Referenced by i386_process_record(), and i386_record_floats().

#define I386_SAVE_FPU_ENV_REG_STACK   0xffff

Definition at line 4270 of file i386-tdep.c.

Referenced by i386_process_record(), and i386_record_floats().

#define I386_SAVE_FPU_REGS   0xfffd

Definition at line 4268 of file i386-tdep.c.

Referenced by i386_process_record(), and i386_record_floats().

#define LOW_RETURN_REGNUM   I386_EAX_REGNUM /* %eax */

Definition at line 2500 of file i386-tdep.c.

Referenced by i386_extract_return_value(), and i386_store_return_value().

#define PREFIX_ADDR   0x10

Definition at line 3954 of file i386-tdep.c.

Referenced by i386_process_record().

#define PREFIX_DATA   0x08

Definition at line 3953 of file i386-tdep.c.

Referenced by i386_process_record().

#define PREFIX_LOCK   0x04

Definition at line 3952 of file i386-tdep.c.

Referenced by i386_process_record().

#define PREFIX_REPNZ   0x02

Definition at line 3951 of file i386-tdep.c.

Referenced by i386_process_record().

#define PREFIX_REPZ   0x01

Definition at line 3950 of file i386-tdep.c.

Referenced by i386_process_record().


Enumeration Type Documentation

anonymous enum
Enumerator:
OT_BYTE 
OT_WORD 
OT_LONG 
OT_QUAD 
OT_DQUAD 

Definition at line 3957 of file i386-tdep.c.

anonymous enum
Enumerator:
OP_ADDL 
OP_ORL 
OP_ADCL 
OP_SBBL 
OP_ANDL 
OP_SUBL 
OP_XORL 
OP_CMPL 

Definition at line 3967 of file i386-tdep.c.


Function Documentation

void _initialize_i386_tdep ( void  )
static void append_insns ( CORE_ADDR to,
ULONGEST  len,
const gdb_byte buf 
) [static]

Definition at line 719 of file i386-tdep.c.

References len, and target_write_memory().

Referenced by i386_relocate_instruction().

static int i386_16_byte_align_p ( struct type type) [static]
static int i386_absolute_call_p ( const gdb_byte insn) [static]

Definition at line 476 of file i386-tdep.c.

Referenced by i386_call_p(), and i386_displaced_step_fixup().

static int i386_absolute_jmp_p ( const gdb_byte insn) [static]

Definition at line 455 of file i386-tdep.c.

Referenced by i386_displaced_step_fixup().

static void i386_add_reggroups ( struct gdbarch gdbarch) [static]
static struct i386_frame_cache* i386_alloc_frame_cache ( void  ) [static, read]
static CORE_ADDR i386_analyze_frame_setup ( struct gdbarch gdbarch,
CORE_ADDR  pc,
CORE_ADDR  limit,
struct i386_frame_cache cache 
) [static]
static CORE_ADDR i386_analyze_prologue ( struct gdbarch gdbarch,
CORE_ADDR  pc,
CORE_ADDR  current_pc,
struct i386_frame_cache cache 
) [static]
static CORE_ADDR i386_analyze_register_saves ( CORE_ADDR  pc,
CORE_ADDR  current_pc,
struct i386_frame_cache cache 
) [static]
static CORE_ADDR i386_analyze_stack_align ( CORE_ADDR  pc,
CORE_ADDR  current_pc,
struct i386_frame_cache cache 
) [static]
static CORE_ADDR i386_analyze_struct_return ( CORE_ADDR  pc,
CORE_ADDR  current_pc,
struct i386_frame_cache cache 
) [static]
static const gdb_byte* i386_breakpoint_from_pc ( struct gdbarch gdbarch,
CORE_ADDR pc,
int len 
) [static]

Definition at line 408 of file i386-tdep.c.

Referenced by i386_gdbarch_init().

int i386_byte_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)
static int i386_call_p ( const gdb_byte insn) [static]

Definition at line 514 of file i386-tdep.c.

References i386_absolute_call_p().

Referenced by i386_displaced_step_fixup().

static enum gdb_osabi i386_coff_osabi_sniffer ( bfd *  abfd) [static]

Definition at line 7858 of file i386-tdep.c.

References GDB_OSABI_GO32, and GDB_OSABI_UNKNOWN.

static void i386_collect_fpregset ( const struct regset regset,
const struct regcache regcache,
int  regnum,
void *  fpregs,
size_t  len 
) [static]
void i386_collect_gregset ( const struct regset regset,
const struct regcache regcache,
int  regnum,
void *  gregs,
size_t  len 
)
static void i386_collect_xstateregset ( const struct regset regset,
const struct regcache regcache,
int  regnum,
void *  xstateregs,
size_t  len 
) [static]

Definition at line 3291 of file i386-tdep.c.

References i387_collect_xsave().

Referenced by i386_regset_from_core_section().

static int i386_convert_register_p ( struct gdbarch gdbarch,
int  regnum,
struct type type 
) [static]

Definition at line 3094 of file i386-tdep.c.

References i386_next_regnum(), i387_convert_register_p(), len, regnum, and TYPE_LENGTH.

Referenced by i386_gdbarch_init().

static int i386_dbx_reg_to_regnum ( struct gdbarch gdbarch,
int  reg 
) [static]
struct displaced_step_closure* i386_displaced_step_copy_insn ( struct gdbarch gdbarch,
CORE_ADDR  from,
CORE_ADDR  to,
struct regcache regs 
) [read]
void i386_displaced_step_fixup ( struct gdbarch gdbarch,
struct displaced_step_closure closure,
CORE_ADDR  from,
CORE_ADDR  to,
struct regcache regs 
)
static struct frame_id i386_dummy_id ( struct gdbarch gdbarch,
struct frame_info this_frame 
) [static, read]
int i386_dword_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)
void i386_elf_init_abi ( struct gdbarch_info  info,
struct gdbarch gdbarch 
)
static struct i386_frame_cache* i386_epilogue_frame_cache ( struct frame_info this_frame,
void **  this_cache 
) [static, read]
static struct value* i386_epilogue_frame_prev_register ( struct frame_info this_frame,
void **  this_cache,
int  regnum 
) [static, read]

Definition at line 2041 of file i386-tdep.c.

References i386_epilogue_frame_cache(), and i386_frame_prev_register().

static int i386_epilogue_frame_sniffer ( const struct frame_unwind self,
struct frame_info this_frame,
void **  this_prologue_cache 
) [static]
static void i386_epilogue_frame_this_id ( struct frame_info this_frame,
void **  this_cache,
struct frame_id this_id 
) [static]
static enum unwind_stop_reason i386_epilogue_frame_unwind_stop_reason ( struct frame_info this_frame,
void **  this_cache 
) [static]

Definition at line 2014 of file i386-tdep.c.

References i386_frame_cache::base_p, and i386_epilogue_frame_cache().

static void i386_extract_return_value ( struct gdbarch gdbarch,
struct type type,
struct regcache regcache,
gdb_byte valbuf 
) [static]
static int i386_fast_tracepoint_valid_at ( struct gdbarch gdbarch,
CORE_ADDR  addr,
int isize,
char **  msg 
) [static]
static CORE_ADDR i386_fetch_pointer_argument ( struct frame_info frame,
int  argi,
struct type type 
) [static]
static CORE_ADDR i386_follow_jump ( struct gdbarch gdbarch,
CORE_ADDR  pc 
) [static]
int i386_fp_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)
int i386_fpc_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)
static CORE_ADDR i386_frame_align ( struct gdbarch gdbarch,
CORE_ADDR  sp 
) [static]

Definition at line 2316 of file i386-tdep.c.

Referenced by i386_gdbarch_init().

static CORE_ADDR i386_frame_base_address ( struct frame_info this_frame,
void **  this_cache 
) [static]

Definition at line 2286 of file i386-tdep.c.

References i386_frame_cache::base, and i386_frame_cache().

static struct i386_frame_cache* i386_frame_cache ( struct frame_info this_frame,
void **  this_cache 
) [static, read]
static void i386_frame_cache_1 ( struct frame_info this_frame,
struct i386_frame_cache cache 
) [static]
static struct value* i386_frame_prev_register ( struct frame_info this_frame,
void **  this_cache,
int  regnum 
) [static, read]
static void i386_frame_this_id ( struct frame_info this_frame,
void **  this_cache,
struct frame_id this_id 
) [static]
static enum unwind_stop_reason i386_frame_unwind_stop_reason ( struct frame_info this_frame,
void **  this_cache 
) [static]
static struct gdbarch* i386_gdbarch_init ( struct gdbarch_info  info,
struct gdbarch_list arches 
) [static, read]

Definition at line 7567 of file i386-tdep.c.

References gdbarch_tdep::al_regnum, gdbarch_tdep::ax_regnum, core_addr_lessthan(), dwarf2_append_unwinders(), gdbarch_tdep::eax_regnum, floatformats_i387_ext, gdbarch_tdep::fpregset, frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_free(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch_num_regs(), gdbarch_regset_from_core_section_p(), gdbarch_tdep::gregset, gdbarch_tdep::gregset_num_regs, gdbarch_tdep::gregset_reg_offset, i386_add_reggroups(), I386_AVX_NUM_REGS, i386_breakpoint_from_pc(), i386_convert_register_p(), i386_dbx_reg_to_regnum(), i386_dummy_id(), I386_EFLAGS_REGNUM, I386_EIP_REGNUM, I386_ESP_REGNUM, i386_fast_tracepoint_valid_at(), i386_fetch_pointer_argument(), i386_frame_align(), i386_gen_return_address(), i386_get_longjmp_target(), I386_MAX_INSN_LEN, I386_NUM_GREGS, I386_NUM_XREGS, i386_print_insn(), i386_pseudo_register_name(), i386_pseudo_register_read_value(), i386_pseudo_register_type(), i386_pseudo_register_write(), i386_push_dummy_call(), i386_push_dummy_code(), i386_record_regmap, i386_register_name(), i386_register_names, i386_register_reggroup_p(), i386_register_to_value(), i386_regset_from_core_section(), i386_relocate_instruction(), i386_return_value(), i386_sigtramp_p(), i386_skip_permanent_breakpoint(), i386_skip_prologue(), I386_ST0_REGNUM, i386_svr4_reg_to_regnum(), i386_unwind_pc(), i386_validate_tdesc_p(), i386_value_to_register(), I387_NUM_REGS, i387_print_float_info(), I387_SIZEOF_FSAVE, gdbarch_tdep::jb_pc_offset, gdbarch_tdep::mm0_regnum, 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_regs, gdbarch_tdep::num_ymm_regs, ON_STACK, pcc_struct_return, gdbarch_tdep::record_regmap, gdbarch_tdep::register_names, gdbarch_tdep::register_reggroup_p, gdbarch_tdep::sc_pc_offset, gdbarch_tdep::sc_reg_offset, gdbarch_tdep::sc_sp_offset, set_gdbarch_breakpoint_from_pc(), set_gdbarch_call_dummy_location(), set_gdbarch_convert_register_p(), set_gdbarch_decr_pc_after_break(), set_gdbarch_dummy_id(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_fast_tracepoint_valid_at(), set_gdbarch_fetch_pointer_argument(), set_gdbarch_fp0_regnum(), set_gdbarch_frame_align(), set_gdbarch_frame_args_skip(), set_gdbarch_gen_return_address(), set_gdbarch_get_longjmp_target(), set_gdbarch_inner_than(), set_gdbarch_long_double_bit(), set_gdbarch_long_double_format(), set_gdbarch_long_long_align_bit(), set_gdbarch_max_insn_length(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_print_float_info(), set_gdbarch_print_insn(), set_gdbarch_ps_regnum(), set_gdbarch_pseudo_register_read_value(), set_gdbarch_pseudo_register_write(), set_gdbarch_push_dummy_call(), set_gdbarch_push_dummy_code(), set_gdbarch_register_name(), set_gdbarch_register_reggroup_p(), set_gdbarch_register_to_value(), set_gdbarch_regset_from_core_section(), set_gdbarch_relocate_instruction(), set_gdbarch_return_value(), set_gdbarch_sdb_reg_to_regnum(), set_gdbarch_skip_permanent_breakpoint(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_stab_reg_to_regnum(), set_gdbarch_unwind_pc(), set_gdbarch_value_to_register(), set_tdesc_pseudo_register_name(), set_tdesc_pseudo_register_type(), gdbarch_tdep::sigcontext_addr, gdbarch_tdep::sigtramp_end, gdbarch_tdep::sigtramp_p, gdbarch_tdep::sigtramp_start, gdbarch_tdep::sizeof_fpregset, gdbarch_tdep::sizeof_gregset, gdbarch_tdep::st0_regnum, gdbarch_tdep::struct_return, gdbarch_info::target_desc, gdbarch_info::tdep_info, gdbarch_tdep::tdesc, tdesc_data, tdesc_data_alloc(), tdesc_data_cleanup(), tdesc_has_registers(), tdesc_i386, tdesc_use_registers(), XCALLOC, xfree(), gdbarch_tdep::xsave_xcr0_offset, gdbarch_tdep::xstateregset, gdbarch_tdep::ymm0_regnum, gdbarch_tdep::ymm0h_regnum, and gdbarch_tdep::ymmh_register_names.

static void i386_gen_return_address ( struct gdbarch gdbarch,
struct agent_expr ax,
struct axs_value value,
CORE_ADDR  scope 
) [static]
static int i386_get_longjmp_target ( struct frame_info frame,
CORE_ADDR pc 
) [static]
static void i386_go32_init_abi ( struct gdbarch_info  info,
struct gdbarch gdbarch 
) [static]
static int i386_in_function_epilogue_p ( struct gdbarch gdbarch,
CORE_ADDR  pc 
) [static]
static int i386_in_stack_tramp_p ( CORE_ADDR  pc) [static]
static void i386_init_reggroups ( void  ) [static]

Definition at line 3843 of file i386-tdep.c.

References reggroup_new(), and USER_REGGROUP.

static struct i386_insn* i386_match_insn ( CORE_ADDR  pc,
struct i386_insn insn_patterns 
) [static, read]

Definition at line 1180 of file i386-tdep.c.

References i386_match_pattern(), and i386_insn::len.

Referenced by i386_analyze_frame_setup(), and i386_match_insn_block().

static int i386_match_insn_block ( CORE_ADDR  pc,
struct i386_insn insn_patterns 
) [static]

Definition at line 1197 of file i386-tdep.c.

References i386_match_insn(), i386_match_pattern(), i386_insn::insn, and i386_insn::len.

Referenced by i386_in_stack_tramp_p().

static int i386_match_pattern ( CORE_ADDR  pc,
struct i386_insn  pattern 
) [static]
static int i386_mmx_regnum_p ( struct gdbarch gdbarch,
int  regnum 
) [static]
static int i386_mmx_regnum_to_fp_regnum ( struct regcache regcache,
int  regnum 
) [static]
static struct type* i386_mmx_type ( struct gdbarch gdbarch) [static, read]
static int i386_mxcsr_regnum_p ( struct gdbarch gdbarch,
int  regnum 
) [static]

Definition at line 221 of file i386-tdep.c.

References gdbarch_tdep(), I387_MXCSR_REGNUM, and I387_NUM_XMM_REGS.

Referenced by i386_process_record(), and i386_register_reggroup_p().

static int i386_next_regnum ( int  regnum) [static]
CORE_ADDR i386_pe_skip_trampoline_code ( struct frame_info frame,
CORE_ADDR  pc,
char *  name 
)
static int i386_print_insn ( bfd_vma  pc,
struct disassemble_info *  info 
) [static]

Definition at line 3387 of file i386-tdep.c.

References att_flavor, disassembly_flavor, gdb_assert, and intel_flavor.

Referenced by i386_gdbarch_init().

int i386_process_record ( struct gdbarch gdbarch,
struct regcache regcache,
CORE_ADDR  input_addr 
)

Definition at line 4342 of file i386-tdep.c.

References _, i386_record_s::addr, i386_record_s::aflag, i386_record_s::dflag, extract_unsigned_integer(), fprintf_unfiltered(), gdb_stdlog, i386_record_s::gdbarch, gdbarch_byte_order(), gdbarch_tdep(), I386_EAX_REGNUM, i386_fp_regnum_p(), i386_fpc_regnum_p(), gdbarch_tdep::i386_intx80_record, i386_mmx_regnum_p(), i386_mxcsr_regnum_p(), i386_record_floats(), I386_RECORD_FULL_ARCH_LIST_ADD_REG, i386_record_lea_modrm(), i386_record_lea_modrm_addr(), i386_record_modrm(), i386_record_push(), I386_SAVE_FPU_ENV, I386_SAVE_FPU_ENV_REG_STACK, I386_SAVE_FPU_REGS, gdbarch_tdep::i386_syscall_record, gdbarch_tdep::i386_sysenter_record, i386_xmm_regnum_p(), I387_FCTRL_REGNUM, I387_FTAG_REGNUM, I387_MM0_REGNUM, I387_MXCSR_REGNUM, I387_ST0_REGNUM, I387_XMM0_REGNUM, MAX_REGISTER_SIZE, memset(), i386_record_s::mod, i386_record_s::modrm, OP_CMPL, i386_record_s::orig_addr, i386_record_s::ot, OT_BYTE, OT_DQUAD, OT_LONG, OT_QUAD, OT_WORD, i386_record_s::override, paddress(), i386_record_s::popl_esp_hack, PREFIX_ADDR, PREFIX_DATA, PREFIX_LOCK, PREFIX_REPNZ, PREFIX_REPZ, printf_unfiltered(), record_debug, record_full_arch_list_add_end(), record_full_arch_list_add_mem(), record_full_arch_list_add_reg(), record_full_memory_query, record_read_memory(), gdbarch_tdep::record_regmap, i386_record_s::reg, i386_record_s::regcache, regcache_raw_read_unsigned(), i386_record_s::regmap, regnum, i386_record_s::rex_b, i386_record_s::rex_x, i386_record_s::rip_offset, i386_record_s::rm, target_terminal_inferior(), target_terminal_ours, ULONGEST, X86_RECORD_CS_REGNUM, X86_RECORD_DS_REGNUM, X86_RECORD_EFLAGS_REGNUM, X86_RECORD_ES_REGNUM, X86_RECORD_FS_REGNUM, X86_RECORD_GS_REGNUM, X86_RECORD_R8_REGNUM, X86_RECORD_REAX_REGNUM, X86_RECORD_REBP_REGNUM, X86_RECORD_REBX_REGNUM, X86_RECORD_RECX_REGNUM, X86_RECORD_REDI_REGNUM, X86_RECORD_REDX_REGNUM, X86_RECORD_REIP_REGNUM, X86_RECORD_RESI_REGNUM, X86_RECORD_RESP_REGNUM, X86_RECORD_SS_REGNUM, and yquery().

Referenced by amd64_linux_init_abi_common(), and i386_linux_init_abi().

const char* i386_pseudo_register_name ( struct gdbarch gdbarch,
int  regnum 
)
void i386_pseudo_register_read_into_value ( struct gdbarch gdbarch,
struct regcache regcache,
int  regnum,
struct value result_value 
)
static struct value* i386_pseudo_register_read_value ( struct gdbarch gdbarch,
struct regcache regcache,
int  regnum 
) [static, read]
struct type* i386_pseudo_register_type ( struct gdbarch gdbarch,
int  regnum 
) [read]
void i386_pseudo_register_write ( struct gdbarch gdbarch,
struct regcache regcache,
int  regnum,
const gdb_byte buf 
)
static CORE_ADDR i386_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 CORE_ADDR i386_push_dummy_code ( struct gdbarch gdbarch,
CORE_ADDR  sp,
CORE_ADDR  funaddr,
struct value **  args,
int  nargs,
struct type value_type,
CORE_ADDR real_pc,
CORE_ADDR bp_addr,
struct regcache regcache 
) [static]

Definition at line 2387 of file i386-tdep.c.

Referenced by i386_gdbarch_init().

static int i386_record_floats ( struct gdbarch gdbarch,
struct i386_record_s ir,
uint32_t  iregnum 
) [static]
static int i386_record_lea_modrm ( struct i386_record_s irp) [static]
static int i386_record_lea_modrm_addr ( struct i386_record_s irp,
uint64_t *  addr 
) [static]
static int i386_record_modrm ( struct i386_record_s irp) [static]
static int i386_record_push ( struct i386_record_s irp,
int  size 
) [static]
static int i386_reg_struct_return_p ( struct gdbarch gdbarch,
struct type type 
) [static]
static const char* i386_register_name ( struct gdbarch gdbarch,
int  regnum 
) [static]

Definition at line 261 of file i386-tdep.c.

References i386_ymmh_regnum_p(), and tdesc_register_name().

Referenced by i386_gdbarch_init().

int i386_register_reggroup_p ( struct gdbarch gdbarch,
int  regnum,
struct reggroup group 
)
static int i386_register_to_value ( struct frame_info frame,
int  regnum,
struct type type,
gdb_byte to,
int optimizedp,
int unavailablep 
) [static]
struct regset* i386_regset_from_core_section ( struct gdbarch gdbarch,
const char *  sect_name,
size_t  sect_size 
) [read]
static void i386_relocate_instruction ( struct gdbarch gdbarch,
CORE_ADDR to,
CORE_ADDR  oldloc 
) [static]
static int i386_ret_p ( const gdb_byte insn) [static]

Definition at line 497 of file i386-tdep.c.

Referenced by i386_displaced_step_fixup().

static enum return_value_convention i386_return_value ( struct gdbarch gdbarch,
struct value function,
struct type type,
struct regcache regcache,
gdb_byte readbuf,
const gdb_byte writebuf 
) [static]
static struct i386_frame_cache* i386_sigtramp_frame_cache ( struct frame_info this_frame,
void **  this_cache 
) [static, read]
static struct value* i386_sigtramp_frame_prev_register ( struct frame_info this_frame,
void **  this_cache,
int  regnum 
) [static, read]

Definition at line 2235 of file i386-tdep.c.

References i386_frame_prev_register(), and i386_sigtramp_frame_cache().

static int i386_sigtramp_frame_sniffer ( const struct frame_unwind self,
struct frame_info this_frame,
void **  this_prologue_cache 
) [static]
static void i386_sigtramp_frame_this_id ( struct frame_info this_frame,
void **  this_cache,
struct frame_id this_id 
) [static]
static enum unwind_stop_reason i386_sigtramp_frame_unwind_stop_reason ( struct frame_info this_frame,
void **  this_cache 
) [static]

Definition at line 2208 of file i386-tdep.c.

References i386_frame_cache::base_p, and i386_sigtramp_frame_cache().

int i386_sigtramp_p ( struct frame_info this_frame)
CORE_ADDR i386_skip_main_prologue ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)
static CORE_ADDR i386_skip_noop ( CORE_ADDR  pc) [static]

Definition at line 1287 of file i386-tdep.c.

References check(), and target_read_memory().

Referenced by i386_analyze_prologue().

static void i386_skip_permanent_breakpoint ( struct regcache regcache) [static]

Definition at line 3939 of file i386-tdep.c.

References regcache_read_pc(), and regcache_write_pc().

Referenced by i386_gdbarch_init().

static gdb_byte* i386_skip_prefixes ( gdb_byte insn,
size_t  max_len 
) [static]
static CORE_ADDR i386_skip_probe ( CORE_ADDR  pc) [static]

Definition at line 975 of file i386-tdep.c.

References i386_frame_cache::pc, read_memory(), and target_read_memory().

Referenced by i386_analyze_prologue().

static CORE_ADDR i386_skip_prologue ( struct gdbarch gdbarch,
CORE_ADDR  start_pc 
) [static]
static int i386_stack_tramp_frame_sniffer ( const struct frame_unwind self,
struct frame_info this_frame,
void **  this_cache 
) [static]

Definition at line 2121 of file i386-tdep.c.

References frame_relative_level(), get_frame_pc(), and i386_in_stack_tramp_p().

int i386_stap_is_single_operand ( struct gdbarch gdbarch,
const char *  s 
)

Definition at line 3445 of file i386-tdep.c.

Referenced by amd64_init_abi(), and i386_elf_init_abi().

int i386_stap_parse_special_token ( struct gdbarch gdbarch,
struct stap_parse_info p 
)
static void i386_store_return_value ( struct gdbarch gdbarch,
struct type type,
struct regcache regcache,
const gdb_byte valbuf 
) [static]
static void i386_supply_fpregset ( const struct regset regset,
struct regcache regcache,
int  regnum,
const void *  fpregs,
size_t  len 
) [static]
void i386_supply_gregset ( const struct regset regset,
struct regcache regcache,
int  regnum,
const void *  gregs,
size_t  len 
)
static void i386_supply_xstateregset ( const struct regset regset,
struct regcache regcache,
int  regnum,
const void *  xstateregs,
size_t  len 
) [static]

Definition at line 3281 of file i386-tdep.c.

References i387_supply_xsave().

Referenced by i386_regset_from_core_section().

void i386_svr4_init_abi ( struct gdbarch_info  info,
struct gdbarch gdbarch 
)
static int i386_svr4_reg_to_regnum ( struct gdbarch gdbarch,
int  reg 
) [static]
static CORE_ADDR i386_svr4_sigcontext_addr ( struct frame_info this_frame) [static]
static int i386_svr4_sigtramp_p ( struct frame_info this_frame) [static]

Definition at line 3411 of file i386-tdep.c.

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

Referenced by i386_svr4_init_abi().

static int i386_syscall_p ( const gdb_byte insn,
int lengthp 
) [static]

Definition at line 530 of file i386-tdep.c.

Referenced by i386_displaced_step_copy_insn(), and i386_displaced_step_fixup().

static CORE_ADDR i386_unwind_pc ( struct gdbarch gdbarch,
struct frame_info next_frame 
) [static]

Definition at line 1709 of file i386-tdep.c.

References extract_typed_address(), frame_unwind_register(), and gdbarch_pc_regnum().

Referenced by i386_gdbarch_init().

static int i386_validate_tdesc_p ( struct gdbarch_tdep tdep,
struct tdesc_arch_data tdesc_data 
) [static]
static void i386_value_to_register ( struct frame_info frame,
int  regnum,
struct type type,
const gdb_byte from 
) [static]
int i386_word_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)
int i386_xmm_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)
int i386_ymm_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)
static struct type* i386_ymm_type ( struct gdbarch gdbarch) [static, read]
static int i386_ymmh_regnum_p ( struct gdbarch gdbarch,
int  regnum 
) [static]
struct type* i387_ext_type ( struct gdbarch gdbarch) [read]

Variable Documentation

const char att_flavor[] = "att" [static]

Definition at line 385 of file i386-tdep.c.

Referenced by i386_print_insn().

const char default_struct_convention[] = "default" [static]

Definition at line 2621 of file i386-tdep.c.

Referenced by i386_reg_struct_return_p().

Definition at line 393 of file i386-tdep.c.

Referenced by i386_print_insn().

const char* i386_byte_names[] [static]
Initial value:
{
  "al", "cl", "dl", "bl", 
  "ah", "ch", "dh", "bh"
}

Definition at line 111 of file i386-tdep.c.

Referenced by i386_pseudo_register_name().

struct frame_base i386_frame_base [static]
Initial value:

Definition at line 2293 of file i386-tdep.c.

Definition at line 1235 of file i386-tdep.c.

const char* i386_mmx_names[] [static]
Initial value:
{
  "mm0", "mm1", "mm2", "mm3",
  "mm4", "mm5", "mm6", "mm7"
}

Definition at line 103 of file i386-tdep.c.

Referenced by i386_pseudo_register_name().

struct reggroup* i386_mmx_reggroup [static]

Definition at line 3840 of file i386-tdep.c.

const char* i386_register_names[] [static]
Initial value:
{
  "eax",   "ecx",    "edx",   "ebx",
  "esp",   "ebp",    "esi",   "edi",
  "eip",   "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",
  "mxcsr"
}

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

Referenced by i386_gdbarch_init().

struct reggroup* i386_sse_reggroup [static]

Definition at line 3839 of file i386-tdep.c.

Initial value:
{
  
  { 5, { 0xb8 }, { 0xfe } },

  
  { 5, { 0xe9 }, { 0xff } },

  {0}
}

Definition at line 2070 of file i386-tdep.c.

Initial value:
{
  
  { 5, { 0x68 }, { 0xff } },

  
  { 5, { 0xe9 }, { 0xff } },

  {0}
}

Definition at line 2083 of file i386-tdep.c.

const char* i386_word_names[] [static]
Initial value:
{
  "ax", "cx", "dx", "bx",
  "", "bp", "si", "di"
}

Definition at line 119 of file i386-tdep.c.

Referenced by i386_pseudo_register_name().

const char* i386_ymm_names[] [static]
Initial value:
{
  "ymm0",  "ymm1",   "ymm2",  "ymm3",
  "ymm4",  "ymm5",   "ymm6",  "ymm7",
}

Definition at line 89 of file i386-tdep.c.

Referenced by i386_pseudo_register_name().

const char* i386_ymmh_names[] [static]
Initial value:
{
  "ymm0h",  "ymm1h",   "ymm2h",  "ymm3h",
  "ymm4h",  "ymm5h",   "ymm6h",  "ymm7h",
}

Definition at line 95 of file i386-tdep.c.

Referenced by i386_validate_tdesc_p().

const char intel_flavor[] = "intel" [static]

Definition at line 386 of file i386-tdep.c.

Referenced by i386_print_insn().

const char pcc_struct_convention[] = "pcc" [static]

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

Referenced by i386_reg_struct_return_p().

const char reg_struct_convention[] = "reg" [static]

Definition at line 2623 of file i386-tdep.c.

Definition at line 2631 of file i386-tdep.c.

Referenced by i386_reg_struct_return_p().

const char* const valid_conventions[] [static]
Initial value:

Definition at line 2624 of file i386-tdep.c.

const char* const valid_flavors[] [static]
Initial value:

Definition at line 387 of file i386-tdep.c.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines