23#ifndef DBGHELP_STATIC_LIB
25#define WIN32_NO_STATUS
36#define V86_FLAG 0x00020000
38#define IS_VM86_MODE(ctx) (ctx->EFlags & V86_FLAG)
40#if defined(__i386__) && !defined(DBGHELP_STATIC_LIB)
47 if (!(sel & 4) || ((sel >> 3) < 17))
return AddrModeFlat;
66 addr->Offset &= 0xffff;
79#ifndef DBGHELP_STATIC_LIB
126 WARN(
"Cannot read new frame offset %p\n",
142#define __CurrentModeCount 0
143#define __CurrentSwitch 1
144#define __NextSwitch 2
146#define curr_mode (frame->Reserved[__CurrentModeCount] & 0x0F)
147#define curr_count (frame->Reserved[__CurrentModeCount] >> 4)
148#define curr_switch (frame->Reserved[__CurrentSwitch])
149#define next_switch (frame->Reserved[__NextSwitch])
151#define set_curr_mode(m) {frame->Reserved[__CurrentModeCount] &= ~0x0F; frame->Reserved[__CurrentModeCount] |= (m & 0x0F);}
152#define inc_curr_count() (frame->Reserved[__CurrentModeCount] += 0x10)
171 TRACE(
"Enter: PC=%s Frame=%s Return=%s Stack=%s Mode=%s Count=%s cSwitch=%p nSwitch=%p\n",
214 WARN(
"Bad AddrPC.Mode / AddrFrame.Mode combination\n");
230 WARN(
"Can't read TEB:SystemReserved1[0]\n");
260 WARN(
"Bad stack frame 0x%08x\n",
p);
324 WARN(
"Bad stack frame 0x%08x\n",
p);
341 WARN(
"Bad stack frame 0x%08x\n",
p);
345 TRACE(
"Got a 16 bit stack switch:"
347 "\n\tedx:%08x ecx:%08x ebp:%08x"
348 "\n\tds:%04x es:%04x fs:%04x gs:%04x"
349 "\n\tcall_from_ip:%08x module_cs:%04x relay=%08x"
350 "\n\tentry_ip:%04x entry_point:%08x"
351 "\n\tbp:%04x ip:%04x cs:%04x\n",
354 frame16.
ds, frame16.
es, frame16.
fs, frame16.
gs,
357 frame16.
bp, frame16.
ip, frame16.
cs);
398 &val16,
sizeof(
WORD)))
411 FIXME(
"new PC=%s different from Eip=%x\n",
462#define SET(field, seg, reg) \
463 switch (frame->field.Mode) \
465 case AddrModeFlat: context->x86.reg = frame->field.Offset; break; \
466 case AddrMode1616: context->x86.seg = frame->field.Segment; context->x86.reg = frame->field.Offset; break; \
467 default: assert(0); \
469 SET(AddrStack, SegSs, Esp);
470 SET(AddrFrame, SegSs, Ebp);
471 SET(AddrReturn, SegCs, Eip);
501 TRACE(
"Leave: PC=%s Frame=%s Return=%s Stack=%s Mode=%s Count=%s cSwitch=%p nSwitch=%p FuncTable=%p\n",
546 case 16:
case 17:
case 18:
case 19:
547 case 20:
case 21:
case 22:
case 23:
559 case 32:
case 33:
case 34:
case 35:
560 case 36:
case 37:
case 38:
case 39:
564 FIXME(
"Don't know how to map register %d\n", regno);
624 FIXME(
"Unknown register %x\n", regno);
678 FIXME(
"Unknown register %x\n", regno);
682#ifndef DBGHELP_STATIC_LIB
710#ifndef DBGHELP_STATIC_LIB
721#ifndef DBGHELP_STATIC_LIB
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static const char * i386_fetch_regname(unsigned regno)
static BOOL i386_fetch_minidump_module(struct dump_context *dc, unsigned index, unsigned flags)
DECLSPEC_HIDDEN struct cpu cpu_i386
#define IS_VM86_MODE(ctx)
static BOOL i386_get_addr(HANDLE hThread, const CONTEXT *ctx, enum cpu_addr ca, ADDRESS64 *addr)
static BOOL fetch_next_frame32(struct cpu_stack_walk *csw, union ctx *pcontext, DWORD_PTR curr_pc)
static unsigned i386_map_dwarf_register(unsigned regno, const struct module *module, BOOL eh_frame)
static BOOL i386_fetch_minidump_thread(struct dump_context *dc, unsigned index, unsigned flags, const CONTEXT *ctx)
static BOOL i386_stack_walk(struct cpu_stack_walk *csw, STACKFRAME64 *frame, union ctx *context)
#define SET(field, seg, reg)
static void * i386_fetch_context_reg(union ctx *pctx, unsigned regno, unsigned *size)
void * sw_table_access(struct cpu_stack_walk *csw, DWORD64 addr) DECLSPEC_HIDDEN
BOOL pdb_virtual_unwind(struct cpu_stack_walk *csw, DWORD_PTR ip, union ctx *context, struct pdb_cmd_pair *cpair) DECLSPEC_HIDDEN
BOOL dwarf2_virtual_unwind(struct cpu_stack_walk *csw, DWORD_PTR ip, union ctx *ctx, DWORD64 *cfa) DECLSPEC_HIDDEN
DWORD64 sw_module_base(struct cpu_stack_walk *csw, DWORD64 addr) DECLSPEC_HIDDEN
void minidump_add_memory_block(struct dump_context *dc, ULONG64 base, ULONG size, ULONG rva) DECLSPEC_HIDDEN
BOOL sw_read_mem(struct cpu_stack_walk *csw, DWORD64 addr, void *ptr, DWORD sz) DECLSPEC_HIDDEN
DWORD64 sw_xlat_addr(struct cpu_stack_walk *csw, ADDRESS64 *addr) DECLSPEC_HIDDEN
#define WOW64_CONTEXT_CONTROL
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
@ ThreadWriteInstructionWindow
#define WOW64_CONTEXT_SEGMENTS
const char * wine_dbgstr_addr(const ADDRESS64 *addr)
BOOL WINAPI GetThreadSelectorEntry(IN HANDLE hThread, IN DWORD dwSelector, OUT LPLDT_ENTRY lpSelectorEntry)
GLenum const GLvoid * addr
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
NTSTATUS NTAPI NtQueryInformationThread(IN HANDLE ThreadHandle, IN THREADINFOCLASS ThreadInformationClass, OUT PVOID ThreadInformation, IN ULONG ThreadInformationLength, OUT PULONG ReturnLength OPTIONAL)
#define IMAGE_FILE_MACHINE_I386
union _LDT_ENTRY::@356 HighWord
struct _LDT_ENTRY::@356::@358 Bits
#define FIELD_OFFSET(t, f)