X-Git-Url: http://drtracing.org/?a=blobdiff_plain;ds=sidebyside;f=gdb%2Fi386-tdep.h;h=b3fef438964fb5875becef964fb4d4af108ea507;hb=e17a4113357102b55cfa5b80557d590a46a43300;hp=8f071c0e0d82ef790bb93dd0bce70a46a54a2bf9;hpb=3e8c568d4fc67da218a87d51da180bba5ad585f1;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h index 8f071c0e0d..b3fef43896 100644 --- a/gdb/i386-tdep.h +++ b/gdb/i386-tdep.h @@ -1,13 +1,13 @@ /* Target-dependent code for the i386. - Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007 + Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GDB. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -16,9 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ #ifndef I386_TDEP_H #define I386_TDEP_H @@ -106,8 +104,17 @@ struct gdbarch_tdep int sc_sp_offset; /* ISA-specific data types. */ + struct type *i386_eflags_type; + struct type *i386_mxcsr_type; struct type *i386_mmx_type; struct type *i386_sse_type; + struct type *i387_ext_type; + + /* Process record/replay target. */ + /* Parse intx80 args. */ + int (*i386_intx80_record) (struct regcache *regcache); + /* Parse sysenter args. */ + int (*i386_sysenter_record) (struct regcache *regcache); }; /* Floating-point registers. */ @@ -118,8 +125,8 @@ struct gdbarch_tdep /* Return non-zero if REGNUM matches the FP register and the FP register set is active. */ -extern int i386_fp_regnum_p (int regnum); -extern int i386_fpc_regnum_p (int regnum); +extern int i386_fp_regnum_p (struct gdbarch *, int); +extern int i386_fpc_regnum_p (struct gdbarch *, int); /* Register numbers of various important registers. */ @@ -155,22 +162,31 @@ enum i386_regnum #define I386_MAX_REGISTER_SIZE 16 /* Types for i386-specific registers. */ -extern struct type *i386_eflags_type; -extern struct type *i386_mxcsr_type; - +extern struct type *i386_eflags_type (struct gdbarch *gdbarch); +extern struct type *i386_mxcsr_type (struct gdbarch *gdbarch); extern struct type *i386_mmx_type (struct gdbarch *gdbarch); extern struct type *i386_sse_type (struct gdbarch *gdbarch); +extern struct type *i387_ext_type (struct gdbarch *gdbarch); /* Segment selectors. */ #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. */ +/* The length of the longest i386 instruction (according to + include/asm-i386/kprobes.h in Linux 2.6. */ +#define I386_MAX_INSN_LEN (16) + /* Functions exported from i386-tdep.c. */ -extern CORE_ADDR i386_pe_skip_trampoline_code (CORE_ADDR pc, char *name); +extern CORE_ADDR i386_pe_skip_trampoline_code (struct frame_info *frame, + CORE_ADDR pc, char *name); +extern CORE_ADDR i386_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc); + +/* Return whether the THIS_FRAME corresponds to a sigtramp routine. */ +extern int i386_sigtramp_p (struct frame_info *this_frame); /* Return the name of register REGNUM. */ -extern char const *i386_register_name (int regnum); +extern char const *i386_register_name (struct gdbarch * gdbarch, int regnum); /* Return non-zero if REGNUM is a member of the specified group. */ extern int i386_register_reggroup_p (struct gdbarch *gdbarch, int regnum, @@ -197,11 +213,20 @@ extern const struct regset * i386_regset_from_core_section (struct gdbarch *gdbarch, const char *sect_name, size_t sect_size); + +extern void i386_displaced_step_fixup (struct gdbarch *gdbarch, + struct displaced_step_closure *closure, + CORE_ADDR from, CORE_ADDR to, + struct regcache *regs); + /* Initialize a basic ELF architecture variant. */ extern void i386_elf_init_abi (struct gdbarch_info, struct gdbarch *); /* Initialize a SVR4 architecture variant. */ extern void i386_svr4_init_abi (struct gdbarch_info, struct gdbarch *); + +extern int i386_process_record (struct gdbarch *gdbarch, + struct regcache *regcache, CORE_ADDR addr); /* Functions and variables exported from i386bsd-tdep.c. */