GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Enumerations | Functions | Variables
/tmp/gdb-13.1/gdb/i386-tdep.h File Reference
#include "gdbarch.h"
#include "infrun.h"
#include "expression.h"

Go to the source code of this file.

Classes

struct  i386_gdbarch_tdep
 

Macros

#define I386_NUM_GREGS   16
 
#define I386_NUM_XREGS   9
 
#define I386_SSE_NUM_REGS   (I386_MXCSR_REGNUM + 1)
 
#define I386_AVX_NUM_REGS   (I386_YMM7H_REGNUM + 1)
 
#define I386_MPX_NUM_REGS   (I386_BNDSTATUS_REGNUM + 1)
 
#define I386_AVX512_NUM_REGS   (I386_ZMM7H_REGNUM + 1)
 
#define I386_PKEYS_NUM_REGS   (I386_PKRU_REGNUM + 1)
 
#define I386_NUM_REGS   (I386_GSBASE_REGNUM + 1)
 
#define I386_MAX_REGISTER_SIZE   64
 
#define I386_SEL_RPL   0x0003 /* Requester's Privilege Level mask. */
 
#define I386_SEL_UPL   0x0003 /* User Privilige Level. */
 
#define I386_SEL_KPL   0x0000 /* Kernel Privilige Level. */
 
#define I386_MAX_INSN_LEN   (16)
 

Typedefs

typedef buf_displaced_step_copy_insn_closure i386_displaced_step_copy_insn_closure
 

Enumerations

enum  struct_return {
  pcc_struct_return , reg_struct_return , pcc_struct_return , reg_struct_return ,
  pcc_struct_return , reg_struct_return
}
 
enum  i386_regnum {
  I386_EAX_REGNUM , I386_ECX_REGNUM , I386_EDX_REGNUM , I386_EBX_REGNUM ,
  I386_ESP_REGNUM , I386_EBP_REGNUM , I386_ESI_REGNUM , I386_EDI_REGNUM ,
  I386_EIP_REGNUM , I386_EFLAGS_REGNUM , I386_CS_REGNUM , I386_SS_REGNUM ,
  I386_DS_REGNUM , I386_ES_REGNUM , I386_FS_REGNUM , I386_GS_REGNUM ,
  I386_ST0_REGNUM , I386_MXCSR_REGNUM = 40 , I386_YMM0H_REGNUM , I386_YMM7H_REGNUM = I386_YMM0H_REGNUM + 7 ,
  I386_BND0R_REGNUM , I386_BND3R_REGNUM = I386_BND0R_REGNUM + 3 , I386_BNDCFGU_REGNUM , I386_BNDSTATUS_REGNUM ,
  I386_K0_REGNUM , I386_K7_REGNUM = I386_K0_REGNUM + 7 , I386_ZMM0H_REGNUM , I386_ZMM7H_REGNUM = I386_ZMM0H_REGNUM + 7 ,
  I386_PKRU_REGNUM , I386_FSBASE_REGNUM , I386_GSBASE_REGNUM
}
 
enum  record_i386_regnum {
  X86_RECORD_REAX_REGNUM , X86_RECORD_RECX_REGNUM , X86_RECORD_REDX_REGNUM , X86_RECORD_REBX_REGNUM ,
  X86_RECORD_RESP_REGNUM , X86_RECORD_REBP_REGNUM , X86_RECORD_RESI_REGNUM , X86_RECORD_REDI_REGNUM ,
  X86_RECORD_R8_REGNUM , X86_RECORD_R9_REGNUM , X86_RECORD_R10_REGNUM , X86_RECORD_R11_REGNUM ,
  X86_RECORD_R12_REGNUM , X86_RECORD_R13_REGNUM , X86_RECORD_R14_REGNUM , X86_RECORD_R15_REGNUM ,
  X86_RECORD_REIP_REGNUM , X86_RECORD_EFLAGS_REGNUM , X86_RECORD_CS_REGNUM , X86_RECORD_SS_REGNUM ,
  X86_RECORD_DS_REGNUM , X86_RECORD_ES_REGNUM , X86_RECORD_FS_REGNUM , X86_RECORD_GS_REGNUM
}
 

Functions

int i386_fp_regnum_p (struct gdbarch *, int)
 
int i386_fpc_regnum_p (struct gdbarch *, int)
 
struct typei387_ext_type (struct gdbarch *gdbarch)
 
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)
 
int i386_xmm_regnum_p (struct gdbarch *gdbarch, int regnum)
 
int i386_xmm_avx512_regnum_p (struct gdbarch *gdbarch, int regnum)
 
int i386_ymm_regnum_p (struct gdbarch *gdbarch, int regnum)
 
int i386_ymm_avx512_regnum_p (struct gdbarch *gdbarch, int regnum)
 
int i386_bnd_regnum_p (struct gdbarch *gdbarch, int regnum)
 
int i386_k_regnum_p (struct gdbarch *gdbarch, int regnum)
 
int i386_zmm_regnum_p (struct gdbarch *gdbarch, int regnum)
 
int i386_zmmh_regnum_p (struct gdbarch *gdbarch, int regnum)
 
bool i386_pkru_regnum_p (struct gdbarch *gdbarch, int regnum)
 
const char * i386_pseudo_register_name (struct gdbarch *gdbarch, int regnum)
 
struct typei386_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
 
void i386_pseudo_register_read_into_value (struct gdbarch *gdbarch, readable_regcache *regcache, int regnum, struct value *result)
 
void i386_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, const gdb_byte *buf)
 
int i386_ax_pseudo_register_collect (struct gdbarch *gdbarch, struct agent_expr *ax, int regnum)
 
CORE_ADDR i386_pe_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc, char *name)
 
CORE_ADDR i386_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 
CORE_ADDR i386_thiscall_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, function_call_return_method return_method, CORE_ADDR struct_addr, bool thiscall)
 
int i386_sigtramp_p (frame_info_ptr this_frame)
 
int i386_register_reggroup_p (struct gdbarch *gdbarch, int regnum, const struct reggroup *group)
 
void i386_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len)
 
void i386_iterate_over_regset_sections (struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache)
 
displaced_step_copy_insn_closure_up i386_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
 
void i386_displaced_step_fixup (struct gdbarch *gdbarch, displaced_step_copy_insn_closure *closure, CORE_ADDR from, CORE_ADDR to, regcache *regs)
 
void i386_elf_init_abi (struct gdbarch_info, struct gdbarch *)
 
void i386_svr4_init_abi (struct gdbarch_info, struct gdbarch *)
 
int i386_svr4_reg_to_regnum (struct gdbarch *gdbarch, int reg)
 
int i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr)
 
const struct target_desci386_target_description (uint64_t xcr0, bool segments)
 
int i386_mpx_enabled (void)
 
void i386bsd_init_abi (struct gdbarch_info, struct gdbarch *)
 
int i386_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
 
expr::operation_up i386_stap_parse_special_token (struct gdbarch *gdbarch, struct stap_parse_info *p)
 

Variables

const struct regset i386_gregset
 
const struct regset i386_fpregset
 
CORE_ADDR i386obsd_sigtramp_start_addr
 
CORE_ADDR i386obsd_sigtramp_end_addr
 
int i386obsd_sc_reg_offset []
 
int i386bsd_sc_reg_offset []
 

Macro Definition Documentation

◆ I386_AVX512_NUM_REGS

#define I386_AVX512_NUM_REGS   (I386_ZMM7H_REGNUM + 1)

Definition at line 346 of file i386-tdep.h.

◆ I386_AVX_NUM_REGS

#define I386_AVX_NUM_REGS   (I386_YMM7H_REGNUM + 1)

Definition at line 344 of file i386-tdep.h.

◆ I386_MAX_INSN_LEN

#define I386_MAX_INSN_LEN   (16)

Definition at line 395 of file i386-tdep.h.

◆ I386_MAX_REGISTER_SIZE

#define I386_MAX_REGISTER_SIZE   64

Definition at line 351 of file i386-tdep.h.

◆ I386_MPX_NUM_REGS

#define I386_MPX_NUM_REGS   (I386_BNDSTATUS_REGNUM + 1)

Definition at line 345 of file i386-tdep.h.

◆ I386_NUM_GREGS

#define I386_NUM_GREGS   16

Definition at line 340 of file i386-tdep.h.

◆ I386_NUM_REGS

#define I386_NUM_REGS   (I386_GSBASE_REGNUM + 1)

Definition at line 348 of file i386-tdep.h.

◆ I386_NUM_XREGS

#define I386_NUM_XREGS   9

Definition at line 341 of file i386-tdep.h.

◆ I386_PKEYS_NUM_REGS

#define I386_PKEYS_NUM_REGS   (I386_PKRU_REGNUM + 1)

Definition at line 347 of file i386-tdep.h.

◆ I386_SEL_KPL

#define I386_SEL_KPL   0x0000 /* Kernel Privilige Level. */

Definition at line 391 of file i386-tdep.h.

◆ I386_SEL_RPL

#define I386_SEL_RPL   0x0003 /* Requester's Privilege Level mask. */

Definition at line 389 of file i386-tdep.h.

◆ I386_SEL_UPL

#define I386_SEL_UPL   0x0003 /* User Privilige Level. */

Definition at line 390 of file i386-tdep.h.

◆ I386_SSE_NUM_REGS

#define I386_SSE_NUM_REGS   (I386_MXCSR_REGNUM + 1)

Definition at line 343 of file i386-tdep.h.

Typedef Documentation

◆ i386_displaced_step_copy_insn_closure

Definition at line 444 of file i386-tdep.h.

Enumeration Type Documentation

◆ i386_regnum

Enumerator
I386_EAX_REGNUM 
I386_ECX_REGNUM 
I386_EDX_REGNUM 
I386_EBX_REGNUM 
I386_ESP_REGNUM 
I386_EBP_REGNUM 
I386_ESI_REGNUM 
I386_EDI_REGNUM 
I386_EIP_REGNUM 
I386_EFLAGS_REGNUM 
I386_CS_REGNUM 
I386_SS_REGNUM 
I386_DS_REGNUM 
I386_ES_REGNUM 
I386_FS_REGNUM 
I386_GS_REGNUM 
I386_ST0_REGNUM 
I386_MXCSR_REGNUM 
I386_YMM0H_REGNUM 
I386_YMM7H_REGNUM 
I386_BND0R_REGNUM 
I386_BND3R_REGNUM 
I386_BNDCFGU_REGNUM 
I386_BNDSTATUS_REGNUM 
I386_K0_REGNUM 
I386_K7_REGNUM 
I386_ZMM0H_REGNUM 
I386_ZMM7H_REGNUM 
I386_PKRU_REGNUM 
I386_FSBASE_REGNUM 
I386_GSBASE_REGNUM 

Definition at line 275 of file i386-tdep.h.

◆ record_i386_regnum

Enumerator
X86_RECORD_REAX_REGNUM 
X86_RECORD_RECX_REGNUM 
X86_RECORD_REDX_REGNUM 
X86_RECORD_REBX_REGNUM 
X86_RECORD_RESP_REGNUM 
X86_RECORD_REBP_REGNUM 
X86_RECORD_RESI_REGNUM 
X86_RECORD_REDI_REGNUM 
X86_RECORD_R8_REGNUM 
X86_RECORD_R9_REGNUM 
X86_RECORD_R10_REGNUM 
X86_RECORD_R11_REGNUM 
X86_RECORD_R12_REGNUM 
X86_RECORD_R13_REGNUM 
X86_RECORD_R14_REGNUM 
X86_RECORD_R15_REGNUM 
X86_RECORD_REIP_REGNUM 
X86_RECORD_EFLAGS_REGNUM 
X86_RECORD_CS_REGNUM 
X86_RECORD_SS_REGNUM 
X86_RECORD_DS_REGNUM 
X86_RECORD_ES_REGNUM 
X86_RECORD_FS_REGNUM 
X86_RECORD_GS_REGNUM 

Definition at line 312 of file i386-tdep.h.

◆ struct_return

Enumerator
pcc_struct_return 
reg_struct_return 
pcc_struct_return 
reg_struct_return 
pcc_struct_return 
reg_struct_return 

Definition at line 53 of file i386-tdep.h.

Function Documentation

◆ i386_ax_pseudo_register_collect()

int i386_ax_pseudo_register_collect ( struct gdbarch gdbarch,
struct agent_expr ax,
int  regnum 
)

◆ i386_bnd_regnum_p()

int i386_bnd_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_byte_regnum_p()

int i386_byte_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_displaced_step_copy_insn()

displaced_step_copy_insn_closure_up i386_displaced_step_copy_insn ( struct gdbarch gdbarch,
CORE_ADDR  from,
CORE_ADDR  to,
struct regcache regs 
)

◆ i386_displaced_step_fixup()

void i386_displaced_step_fixup ( struct gdbarch gdbarch,
displaced_step_copy_insn_closure closure,
CORE_ADDR  from,
CORE_ADDR  to,
regcache regs 
)

◆ i386_dword_regnum_p()

int i386_dword_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_elf_init_abi()

void i386_elf_init_abi ( struct gdbarch_info  info,
struct gdbarch gdbarch 
)

◆ i386_fp_regnum_p()

int i386_fp_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_fpc_regnum_p()

int i386_fpc_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_iterate_over_regset_sections()

void i386_iterate_over_regset_sections ( struct gdbarch gdbarch,
iterate_over_regset_sections_cb cb,
void *  cb_data,
const struct regcache regcache 
)

◆ i386_k_regnum_p()

int i386_k_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_mpx_enabled()

int i386_mpx_enabled ( void  )

◆ i386_pe_skip_trampoline_code()

CORE_ADDR i386_pe_skip_trampoline_code ( frame_info_ptr  frame,
CORE_ADDR  pc,
char *  name 
)

◆ i386_pkru_regnum_p()

bool i386_pkru_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

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

References I387_NUM_PKEYS_REGS, i386_gdbarch_tdep::pkru_regnum, and regnum.

Referenced by i386_register_reggroup_p().

◆ i386_process_record()

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

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

References i386_record_s::addr, i386_record_s::aflag, i386_record_s::dflag, extract_unsigned_integer(), gdb_printf(), gdb_stderr, gdb_stdlog, i386_record_s::gdbarch, gdbarch_byte_order(), I386_EAX_REGNUM, i386_fp_regnum_p(), i386_fpc_regnum_p(), I386_MAX_REGISTER_SIZE, 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, i386_xmm_regnum_p(), I387_FCTRL_REGNUM, I387_FTAG_REGNUM, I387_MM0_REGNUM, I387_MXCSR_REGNUM, I387_ST0_REGNUM, I387_XMM0_REGNUM, 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, 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(), 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, 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().

◆ i386_pseudo_register_name()

const char * i386_pseudo_register_name ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_pseudo_register_read_into_value()

void i386_pseudo_register_read_into_value ( struct gdbarch gdbarch,
readable_regcache regcache,
int  regnum,
struct value result 
)

◆ i386_pseudo_register_type()

struct type * i386_pseudo_register_type ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_pseudo_register_write()

void i386_pseudo_register_write ( struct gdbarch gdbarch,
struct regcache regcache,
int  regnum,
const gdb_byte *  buf 
)

◆ i386_register_reggroup_p()

int i386_register_reggroup_p ( struct gdbarch gdbarch,
int  regnum,
const struct reggroup group 
)

◆ i386_sigtramp_p()

int i386_sigtramp_p ( frame_info_ptr  this_frame)

◆ i386_skip_main_prologue()

CORE_ADDR i386_skip_main_prologue ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)

◆ i386_stap_is_single_operand()

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

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

Referenced by amd64_init_abi(), and i386_elf_init_abi().

◆ i386_stap_parse_special_token()

expr::operation_up i386_stap_parse_special_token ( struct gdbarch gdbarch,
struct stap_parse_info p 
)

◆ i386_supply_gregset()

void i386_supply_gregset ( const struct regset regset,
struct regcache regcache,
int  regnum,
const void *  gregs,
size_t  len 
)

◆ i386_svr4_init_abi()

void i386_svr4_init_abi ( struct gdbarch_info  info,
struct gdbarch gdbarch 
)

◆ i386_svr4_reg_to_regnum()

int i386_svr4_reg_to_regnum ( struct gdbarch gdbarch,
int  reg 
)

◆ i386_target_description()

const struct target_desc * i386_target_description ( uint64_t  xcr0,
bool  segments 
)

◆ i386_thiscall_push_dummy_call()

CORE_ADDR i386_thiscall_push_dummy_call ( struct gdbarch gdbarch,
struct value function,
struct regcache regcache,
CORE_ADDR  bp_addr,
int  nargs,
struct value **  args,
CORE_ADDR  sp,
function_call_return_method  return_method,
CORE_ADDR  struct_addr,
bool  thiscall 
)

◆ i386_word_regnum_p()

int i386_word_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_xmm_avx512_regnum_p()

int i386_xmm_avx512_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

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

References I387_NUM_XMM_AVX512_REGS, I387_XMM16_REGNUM, and regnum.

Referenced by i386_register_reggroup_p().

◆ i386_xmm_regnum_p()

int i386_xmm_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_ymm_avx512_regnum_p()

int i386_ymm_avx512_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_ymm_regnum_p()

int i386_ymm_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_zmm_regnum_p()

int i386_zmm_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386_zmmh_regnum_p()

int i386_zmmh_regnum_p ( struct gdbarch gdbarch,
int  regnum 
)

◆ i386bsd_init_abi()

void i386bsd_init_abi ( struct gdbarch_info  info,
struct gdbarch gdbarch 
)

◆ i387_ext_type()

struct type * i387_ext_type ( struct gdbarch gdbarch)

Variable Documentation

◆ i386_fpregset

const struct regset i386_fpregset
extern

◆ i386_gregset

const struct regset i386_gregset
extern

◆ i386bsd_sc_reg_offset

int i386bsd_sc_reg_offset[]
extern

Definition at line 54 of file i386-bsd-tdep.c.

Referenced by i386bsd_init_abi().

◆ i386obsd_sc_reg_offset

int i386obsd_sc_reg_offset[]
extern

Definition at line 144 of file i386-obsd-tdep.c.

Referenced by i386obsd_init_abi().

◆ i386obsd_sigtramp_end_addr

CORE_ADDR i386obsd_sigtramp_end_addr
extern

Definition at line 141 of file i386-obsd-tdep.c.

Referenced by _initialize_i386obsd_nat(), and i386obsd_init_abi().

◆ i386obsd_sigtramp_start_addr

CORE_ADDR i386obsd_sigtramp_start_addr
extern

Definition at line 140 of file i386-obsd-tdep.c.

Referenced by _initialize_i386obsd_nat(), and i386obsd_init_abi().