ReactOS  0.4.13-dev-1174-gdff75d7
cpu_x86_64.c File Reference
#include <assert.h>
#include "ntstatus.h"
#include "dbghelp_private.h"
#include "winternl.h"
#include "wine/debug.h"
Include dependency graph for cpu_x86_64.c:

Go to the source code of this file.

Classes

union  _UNWIND_CODE
 
struct  _UNWIND_INFO
 

Macros

#define NONAMELESSUNION
 
#define NONAMELESSSTRUCT
 
#define WIN32_NO_STATUS
 

Typedefs

typedef enum _UNWIND_OP_CODES UNWIND_CODE_OPS
 
typedef union _UNWIND_CODE UNWIND_CODE
 
typedef union _UNWIND_CODEPUNWIND_CODE
 
typedef struct _UNWIND_INFO UNWIND_INFO
 
typedef struct _UNWIND_INFOPUNWIND_INFO
 

Enumerations

enum  _UNWIND_OP_CODES {
  UWOP_PUSH_NONVOL = 0, UWOP_ALLOC_LARGE, UWOP_ALLOC_SMALL, UWOP_SET_FPREG,
  UWOP_SAVE_NONVOL, UWOP_SAVE_NONVOL_FAR, UWOP_SAVE_XMM128, UWOP_SAVE_XMM128_FAR,
  UWOP_PUSH_MACHFRAME
}
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (dbghelp)
 
static BOOL x86_64_get_addr (HANDLE hThread, const CONTEXT *ctx, enum cpu_addr ca, ADDRESS64 *addr)
 
static BOOL x86_64_stack_walk (struct cpu_stack_walk *csw, LPSTACKFRAME64 frame, CONTEXT *context)
 
static voidx86_64_find_runtime_function (struct module *module, DWORD64 addr)
 
static unsigned x86_64_map_dwarf_register (unsigned regno, BOOL eh_frame)
 
static voidx86_64_fetch_context_reg (CONTEXT *ctx, unsigned regno, unsigned *size)
 
static const charx86_64_fetch_regname (unsigned regno)
 
static BOOL x86_64_fetch_minidump_thread (struct dump_context *dc, unsigned index, unsigned flags, const CONTEXT *ctx)
 
static BOOL x86_64_fetch_minidump_module (struct dump_context *dc, unsigned index, unsigned flags)
 

Variables

DECLSPEC_HIDDEN struct cpu cpu_x86_64
 

Macro Definition Documentation

◆ NONAMELESSSTRUCT

#define NONAMELESSSTRUCT

Definition at line 25 of file cpu_x86_64.c.

◆ NONAMELESSUNION

#define NONAMELESSUNION

Definition at line 24 of file cpu_x86_64.c.

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 27 of file cpu_x86_64.c.

Typedef Documentation

◆ PUNWIND_CODE

typedef union _UNWIND_CODE * PUNWIND_CODE

◆ PUNWIND_INFO

◆ UNWIND_CODE

typedef union _UNWIND_CODE UNWIND_CODE

◆ UNWIND_CODE_OPS

◆ UNWIND_INFO

Enumeration Type Documentation

◆ _UNWIND_OP_CODES

Enumerator
UWOP_PUSH_NONVOL 
UWOP_ALLOC_LARGE 
UWOP_ALLOC_SMALL 
UWOP_SET_FPREG 
UWOP_SAVE_NONVOL 
UWOP_SAVE_NONVOL_FAR 
UWOP_SAVE_XMM128 
UWOP_SAVE_XMM128_FAR 
UWOP_PUSH_MACHFRAME 

Definition at line 36 of file cpu_x86_64.c.

Function Documentation

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( dbghelp  )

◆ x86_64_fetch_context_reg()

static void* x86_64_fetch_context_reg ( CONTEXT ctx,
unsigned  regno,
unsigned *  size 
)
static

Definition at line 778 of file cpu_x86_64.c.

779 {
780 #ifdef __x86_64__
781  switch (regno)
782  {
783  case CV_AMD64_RAX: *size = sizeof(ctx->Rax); return &ctx->Rax;
784  case CV_AMD64_RDX: *size = sizeof(ctx->Rdx); return &ctx->Rdx;
785  case CV_AMD64_RCX: *size = sizeof(ctx->Rcx); return &ctx->Rcx;
786  case CV_AMD64_RBX: *size = sizeof(ctx->Rbx); return &ctx->Rbx;
787  case CV_AMD64_RSI: *size = sizeof(ctx->Rsi); return &ctx->Rsi;
788  case CV_AMD64_RDI: *size = sizeof(ctx->Rdi); return &ctx->Rdi;
789  case CV_AMD64_RBP: *size = sizeof(ctx->Rbp); return &ctx->Rbp;
790  case CV_AMD64_RSP: *size = sizeof(ctx->Rsp); return &ctx->Rsp;
791  case CV_AMD64_R8: *size = sizeof(ctx->R8); return &ctx->R8;
792  case CV_AMD64_R9: *size = sizeof(ctx->R9); return &ctx->R9;
793  case CV_AMD64_R10: *size = sizeof(ctx->R10); return &ctx->R10;
794  case CV_AMD64_R11: *size = sizeof(ctx->R11); return &ctx->R11;
795  case CV_AMD64_R12: *size = sizeof(ctx->R12); return &ctx->R12;
796  case CV_AMD64_R13: *size = sizeof(ctx->R13); return &ctx->R13;
797  case CV_AMD64_R14: *size = sizeof(ctx->R14); return &ctx->R14;
798  case CV_AMD64_R15: *size = sizeof(ctx->R15); return &ctx->R15;
799  case CV_AMD64_RIP: *size = sizeof(ctx->Rip); return &ctx->Rip;
800 
801  case CV_AMD64_XMM0 + 0: *size = sizeof(ctx->u.s.Xmm0 ); return &ctx->u.s.Xmm0;
802  case CV_AMD64_XMM0 + 1: *size = sizeof(ctx->u.s.Xmm1 ); return &ctx->u.s.Xmm1;
803  case CV_AMD64_XMM0 + 2: *size = sizeof(ctx->u.s.Xmm2 ); return &ctx->u.s.Xmm2;
804  case CV_AMD64_XMM0 + 3: *size = sizeof(ctx->u.s.Xmm3 ); return &ctx->u.s.Xmm3;
805  case CV_AMD64_XMM0 + 4: *size = sizeof(ctx->u.s.Xmm4 ); return &ctx->u.s.Xmm4;
806  case CV_AMD64_XMM0 + 5: *size = sizeof(ctx->u.s.Xmm5 ); return &ctx->u.s.Xmm5;
807  case CV_AMD64_XMM0 + 6: *size = sizeof(ctx->u.s.Xmm6 ); return &ctx->u.s.Xmm6;
808  case CV_AMD64_XMM0 + 7: *size = sizeof(ctx->u.s.Xmm7 ); return &ctx->u.s.Xmm7;
809  case CV_AMD64_XMM8 + 0: *size = sizeof(ctx->u.s.Xmm8 ); return &ctx->u.s.Xmm8;
810  case CV_AMD64_XMM8 + 1: *size = sizeof(ctx->u.s.Xmm9 ); return &ctx->u.s.Xmm9;
811  case CV_AMD64_XMM8 + 2: *size = sizeof(ctx->u.s.Xmm10); return &ctx->u.s.Xmm10;
812  case CV_AMD64_XMM8 + 3: *size = sizeof(ctx->u.s.Xmm11); return &ctx->u.s.Xmm11;
813  case CV_AMD64_XMM8 + 4: *size = sizeof(ctx->u.s.Xmm12); return &ctx->u.s.Xmm12;
814  case CV_AMD64_XMM8 + 5: *size = sizeof(ctx->u.s.Xmm13); return &ctx->u.s.Xmm13;
815  case CV_AMD64_XMM8 + 6: *size = sizeof(ctx->u.s.Xmm14); return &ctx->u.s.Xmm14;
816  case CV_AMD64_XMM8 + 7: *size = sizeof(ctx->u.s.Xmm15); return &ctx->u.s.Xmm15;
817 
818  case CV_AMD64_ST0 + 0: *size = sizeof(ctx->u.s.Legacy[0]); return &ctx->u.s.Legacy[0];
819  case CV_AMD64_ST0 + 1: *size = sizeof(ctx->u.s.Legacy[1]); return &ctx->u.s.Legacy[1];
820  case CV_AMD64_ST0 + 2: *size = sizeof(ctx->u.s.Legacy[2]); return &ctx->u.s.Legacy[2];
821  case CV_AMD64_ST0 + 3: *size = sizeof(ctx->u.s.Legacy[3]); return &ctx->u.s.Legacy[3];
822  case CV_AMD64_ST0 + 4: *size = sizeof(ctx->u.s.Legacy[4]); return &ctx->u.s.Legacy[4];
823  case CV_AMD64_ST0 + 5: *size = sizeof(ctx->u.s.Legacy[5]); return &ctx->u.s.Legacy[5];
824  case CV_AMD64_ST0 + 6: *size = sizeof(ctx->u.s.Legacy[6]); return &ctx->u.s.Legacy[6];
825  case CV_AMD64_ST0 + 7: *size = sizeof(ctx->u.s.Legacy[7]); return &ctx->u.s.Legacy[7];
826 
827  case CV_AMD64_EFLAGS: *size = sizeof(ctx->EFlags); return &ctx->EFlags;
828  case CV_AMD64_ES: *size = sizeof(ctx->SegEs); return &ctx->SegEs;
829  case CV_AMD64_CS: *size = sizeof(ctx->SegCs); return &ctx->SegCs;
830  case CV_AMD64_SS: *size = sizeof(ctx->SegSs); return &ctx->SegSs;
831  case CV_AMD64_DS: *size = sizeof(ctx->SegDs); return &ctx->SegDs;
832  case CV_AMD64_FS: *size = sizeof(ctx->SegFs); return &ctx->SegFs;
833  case CV_AMD64_GS: *size = sizeof(ctx->SegGs); return &ctx->SegGs;
834 
835  }
836 #endif
837  FIXME("Unknown register %x\n", regno);
838  return NULL;
839 }
ULONG SegGs
Definition: nt_native.h:1453
ULONG SegFs
Definition: nt_native.h:1454
ULONG SegDs
Definition: nt_native.h:1456
ULONG R8
Definition: compat.h:343
ULONG SegEs
Definition: nt_native.h:1455
#define FIXME(fmt,...)
Definition: debug.h:110
ULONG SegCs
Definition: nt_native.h:1477
smooth NULL
Definition: ftsmooth.c:416
ULONG R9
Definition: compat.h:344
ULONG EFlags
Definition: nt_native.h:1478
GLsizeiptr size
Definition: glext.h:5919
ULONG R11
Definition: ke.h:266
ULONG SegSs
Definition: nt_native.h:1480
ULONG R12
Definition: ke.h:267
ULONG R10
Definition: compat.h:345

◆ x86_64_fetch_minidump_module()

static BOOL x86_64_fetch_minidump_module ( struct dump_context dc,
unsigned  index,
unsigned  flags 
)
static

Definition at line 915 of file cpu_x86_64.c.

916 {
917  /* FIXME: not sure about the flags... */
918  if (1)
919  {
920  /* FIXME: crop values across module boundaries, */
921 #ifdef __x86_64__
922  struct process* pcs;
923  struct module* module;
924  const RUNTIME_FUNCTION* rtf;
925  ULONG size;
926 
927  if (!(pcs = process_find_by_handle(dc->hProcess)) ||
928  !(module = module_find_by_addr(pcs, dc->modules[index].base, DMT_UNKNOWN)))
929  return FALSE;
931  if (rtf)
932  {
933  const RUNTIME_FUNCTION* end = (const RUNTIME_FUNCTION*)((const char*)rtf + size);
934  UNWIND_INFO ui;
935 
936  while (rtf + 1 < end)
937  {
938  while (rtf->UnwindData & 1) /* follow chained entry */
939  {
940  FIXME("RunTime_Function outside IMAGE_DIRECTORY_ENTRY_EXCEPTION unimplemented yet!\n");
941  return FALSE;
942  /* we need to read into the other process */
943  /* rtf = (RUNTIME_FUNCTION*)(module->module.BaseOfImage + (rtf->UnwindData & ~1)); */
944  }
945  if (ReadProcessMemory(dc->hProcess,
946  (void*)(dc->modules[index].base + rtf->UnwindData),
947  &ui, sizeof(ui), NULL))
948  minidump_add_memory_block(dc, dc->modules[index].base + rtf->UnwindData,
949  FIELD_OFFSET(UNWIND_INFO, UnwindCode) + ui.CountOfCodes * sizeof(UNWIND_CODE), 0);
950  rtf++;
951  }
952  }
953 #endif
954  }
955 
956  return TRUE;
957 }
#define TRUE
Definition: types.h:120
HMODULE module
Definition: main.cpp:47
struct process * process_find_by_handle(HANDLE hProcess)
Definition: dbghelp.c:80
UINT ui
Definition: oleauto.h:49
HDC dc
Definition: cylfrac.c:34
#define ReadProcessMemory(a, b, c, d, e)
Definition: compat.h:415
GLuint GLuint end
Definition: gl.h:1545
void minidump_add_memory_block(struct dump_context *dc, ULONG64 base, ULONG size, ULONG rva) DECLSPEC_HIDDEN
Definition: minidump.c:338
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
GLuint index
Definition: glext.h:6031
GLsizeiptr size
Definition: glext.h:5919
struct module * module_find_by_addr(const struct process *pcs, DWORD64 addr, enum module_type type) DECLSPEC_HIDDEN
Definition: module.c:399
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:254
DWORD UnwindData
Definition: compat.h:280
unsigned int ULONG
Definition: retypes.h:1
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION
Definition: pedump.c:262
const char * pe_map_directory(struct module *module, int dirno, DWORD *size) DECLSPEC_HIDDEN
Definition: pe_module.c:313

◆ x86_64_fetch_minidump_thread()

static BOOL x86_64_fetch_minidump_thread ( struct dump_context dc,
unsigned  index,
unsigned  flags,
const CONTEXT ctx 
)
static

Definition at line 901 of file cpu_x86_64.c.

902 {
904  {
905  /* FIXME: crop values across module boundaries, */
906 #ifdef __x86_64__
907  ULONG64 base = ctx->Rip <= 0x80 ? 0 : ctx->Rip - 0x80;
908  minidump_add_memory_block(dc, base, ctx->Rip + 0x80 - base, 0);
909 #endif
910  }
911 
912  return TRUE;
913 }
#define TRUE
Definition: types.h:120
HDC dc
Definition: cylfrac.c:34
void minidump_add_memory_block(struct dump_context *dc, ULONG64 base, ULONG size, ULONG rva) DECLSPEC_HIDDEN
Definition: minidump.c:338
ULONG ContextFlags
Definition: compat.h:331
GLbitfield flags
Definition: glext.h:7161
unsigned __int64 ULONG64
Definition: imports.h:198

◆ x86_64_fetch_regname()

static const char* x86_64_fetch_regname ( unsigned  regno)
static

Definition at line 841 of file cpu_x86_64.c.

842 {
843  switch (regno)
844  {
845  case CV_AMD64_RAX: return "rax";
846  case CV_AMD64_RDX: return "rdx";
847  case CV_AMD64_RCX: return "rcx";
848  case CV_AMD64_RBX: return "rbx";
849  case CV_AMD64_RSI: return "rsi";
850  case CV_AMD64_RDI: return "rdi";
851  case CV_AMD64_RBP: return "rbp";
852  case CV_AMD64_RSP: return "rsp";
853  case CV_AMD64_R8: return "r8";
854  case CV_AMD64_R9: return "r9";
855  case CV_AMD64_R10: return "r10";
856  case CV_AMD64_R11: return "r11";
857  case CV_AMD64_R12: return "r12";
858  case CV_AMD64_R13: return "r13";
859  case CV_AMD64_R14: return "r14";
860  case CV_AMD64_R15: return "r15";
861  case CV_AMD64_RIP: return "rip";
862 
863  case CV_AMD64_XMM0 + 0: return "xmm0";
864  case CV_AMD64_XMM0 + 1: return "xmm1";
865  case CV_AMD64_XMM0 + 2: return "xmm2";
866  case CV_AMD64_XMM0 + 3: return "xmm3";
867  case CV_AMD64_XMM0 + 4: return "xmm4";
868  case CV_AMD64_XMM0 + 5: return "xmm5";
869  case CV_AMD64_XMM0 + 6: return "xmm6";
870  case CV_AMD64_XMM0 + 7: return "xmm7";
871  case CV_AMD64_XMM8 + 0: return "xmm8";
872  case CV_AMD64_XMM8 + 1: return "xmm9";
873  case CV_AMD64_XMM8 + 2: return "xmm10";
874  case CV_AMD64_XMM8 + 3: return "xmm11";
875  case CV_AMD64_XMM8 + 4: return "xmm12";
876  case CV_AMD64_XMM8 + 5: return "xmm13";
877  case CV_AMD64_XMM8 + 6: return "xmm14";
878  case CV_AMD64_XMM8 + 7: return "xmm15";
879 
880  case CV_AMD64_ST0 + 0: return "st0";
881  case CV_AMD64_ST0 + 1: return "st1";
882  case CV_AMD64_ST0 + 2: return "st2";
883  case CV_AMD64_ST0 + 3: return "st3";
884  case CV_AMD64_ST0 + 4: return "st4";
885  case CV_AMD64_ST0 + 5: return "st5";
886  case CV_AMD64_ST0 + 6: return "st6";
887  case CV_AMD64_ST0 + 7: return "st7";
888 
889  case CV_AMD64_EFLAGS: return "eflags";
890  case CV_AMD64_ES: return "es";
891  case CV_AMD64_CS: return "cs";
892  case CV_AMD64_SS: return "ss";
893  case CV_AMD64_DS: return "ds";
894  case CV_AMD64_FS: return "fs";
895  case CV_AMD64_GS: return "gs";
896  }
897  FIXME("Unknown register %x\n", regno);
898  return NULL;
899 }
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416

◆ x86_64_find_runtime_function()

static void* x86_64_find_runtime_function ( struct module module,
DWORD64  addr 
)
static

Definition at line 694 of file cpu_x86_64.c.

695 {
696 #ifdef __x86_64__
697  RUNTIME_FUNCTION* rtf;
698  ULONG size;
699  int min, max;
700 
702  if (rtf) for (min = 0, max = size / sizeof(*rtf); min <= max; )
703  {
704  int pos = (min + max) / 2;
705  if (addr < module->module.BaseOfImage + rtf[pos].BeginAddress) max = pos - 1;
706  else if (addr >= module->module.BaseOfImage + rtf[pos].EndAddress) min = pos + 1;
707  else
708  {
709  rtf += pos;
710  while (rtf->UnwindData & 1) /* follow chained entry */
711  {
712  FIXME("RunTime_Function outside IMAGE_DIRECTORY_ENTRY_EXCEPTION unimplemented yet!\n");
713  return NULL;
714  /* we need to read into the other process */
715  /* rtf = (RUNTIME_FUNCTION*)(module->module.BaseOfImage + (rtf->UnwindData & ~1)); */
716  }
717  return rtf;
718  }
719  }
720 #endif
721  return NULL;
722 }
#define max(a, b)
Definition: svc.c:63
DWORD64 BaseOfImage
Definition: compat.h:719
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
GLsizeiptr size
Definition: glext.h:5919
GLenum const GLvoid * addr
Definition: glext.h:9621
#define min(a, b)
Definition: monoChain.cc:55
DWORD UnwindData
Definition: compat.h:280
unsigned int ULONG
Definition: retypes.h:1
IMAGEHLP_MODULEW64 module
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION
Definition: pedump.c:262
const char * pe_map_directory(struct module *module, int dirno, DWORD *size) DECLSPEC_HIDDEN
Definition: pe_module.c:313

◆ x86_64_get_addr()

static BOOL x86_64_get_addr ( HANDLE  hThread,
const CONTEXT ctx,
enum cpu_addr  ca,
ADDRESS64 addr 
)
static

Definition at line 79 of file cpu_x86_64.c.

81 {
82  addr->Mode = AddrModeFlat;
83  switch (ca)
84  {
85 #ifdef __x86_64__
86  case cpu_addr_pc: addr->Segment = ctx->SegCs; addr->Offset = ctx->Rip; return TRUE;
87  case cpu_addr_stack: addr->Segment = ctx->SegSs; addr->Offset = ctx->Rsp; return TRUE;
88  case cpu_addr_frame: addr->Segment = ctx->SegSs; addr->Offset = ctx->Rbp; return TRUE;
89 #endif
90  default: addr->Mode = -1;
91  return FALSE;
92  }
93 }
#define TRUE
Definition: types.h:120
ULONG SegCs
Definition: nt_native.h:1477
GLenum const GLvoid * addr
Definition: glext.h:9621
ULONG SegSs
Definition: nt_native.h:1480
static const WCHAR ca[]
Definition: main.c:457

◆ x86_64_map_dwarf_register()

static unsigned x86_64_map_dwarf_register ( unsigned  regno,
BOOL  eh_frame 
)
static

Definition at line 724 of file cpu_x86_64.c.

725 {
726  unsigned reg;
727 
728  if (regno >= 17 && regno <= 24)
729  reg = CV_AMD64_XMM0 + regno - 17;
730  else if (regno >= 25 && regno <= 32)
731  reg = CV_AMD64_XMM8 + regno - 25;
732  else if (regno >= 33 && regno <= 40)
733  reg = CV_AMD64_ST0 + regno - 33;
734  else switch (regno)
735  {
736  case 0: reg = CV_AMD64_RAX; break;
737  case 1: reg = CV_AMD64_RDX; break;
738  case 2: reg = CV_AMD64_RCX; break;
739  case 3: reg = CV_AMD64_RBX; break;
740  case 4: reg = CV_AMD64_RSI; break;
741  case 5: reg = CV_AMD64_RDI; break;
742  case 6: reg = CV_AMD64_RBP; break;
743  case 7: reg = CV_AMD64_RSP; break;
744  case 8: reg = CV_AMD64_R8; break;
745  case 9: reg = CV_AMD64_R9; break;
746  case 10: reg = CV_AMD64_R10; break;
747  case 11: reg = CV_AMD64_R11; break;
748  case 12: reg = CV_AMD64_R12; break;
749  case 13: reg = CV_AMD64_R13; break;
750  case 14: reg = CV_AMD64_R14; break;
751  case 15: reg = CV_AMD64_R15; break;
752  case 16: reg = CV_AMD64_RIP; break;
753  case 49: reg = CV_AMD64_EFLAGS; break;
754  case 50: reg = CV_AMD64_ES; break;
755  case 51: reg = CV_AMD64_CS; break;
756  case 52: reg = CV_AMD64_SS; break;
757  case 53: reg = CV_AMD64_DS; break;
758  case 54: reg = CV_AMD64_FS; break;
759  case 55: reg = CV_AMD64_GS; break;
760  case 62: reg = CV_AMD64_TR; break;
761  case 63: reg = CV_AMD64_LDTR; break;
762  case 64: reg = CV_AMD64_MXCSR; break;
763  case 65: reg = CV_AMD64_CTRL; break;
764  case 66: reg = CV_AMD64_STAT; break;
765 /*
766  * 56-57 reserved
767  * 58 %fs.base
768  * 59 %gs.base
769  * 60-61 reserved
770  */
771  default:
772  FIXME("Don't know how to map register %d\n", regno);
773  return 0;
774  }
775  return reg;
776 }
#define FIXME(fmt,...)
Definition: debug.h:110
static int reg
Definition: i386-dis.c:1275

◆ x86_64_stack_walk()

static BOOL x86_64_stack_walk ( struct cpu_stack_walk csw,
LPSTACKFRAME64  frame,
CONTEXT context 
)
static

Definition at line 688 of file cpu_x86_64.c.

689 {
690  return FALSE;
691 }

Variable Documentation

◆ cpu_x86_64

Initial value:
= {
8,
}
static BOOL x86_64_stack_walk(struct cpu_stack_walk *csw, LPSTACKFRAME64 frame, CONTEXT *context)
Definition: cpu_x86_64.c:688
#define IMAGE_FILE_MACHINE_AMD64
Definition: ntimage.h:17
static const char * x86_64_fetch_regname(unsigned regno)
Definition: cpu_x86_64.c:841
static unsigned x86_64_map_dwarf_register(unsigned regno, BOOL eh_frame)
Definition: cpu_x86_64.c:724
static BOOL x86_64_get_addr(HANDLE hThread, const CONTEXT *ctx, enum cpu_addr ca, ADDRESS64 *addr)
Definition: cpu_x86_64.c:79
static void * x86_64_find_runtime_function(struct module *module, DWORD64 addr)
Definition: cpu_x86_64.c:694
static void * x86_64_fetch_context_reg(CONTEXT *ctx, unsigned regno, unsigned *size)
Definition: cpu_x86_64.c:778
static BOOL x86_64_fetch_minidump_module(struct dump_context *dc, unsigned index, unsigned flags)
Definition: cpu_x86_64.c:915
static BOOL x86_64_fetch_minidump_thread(struct dump_context *dc, unsigned index, unsigned flags, const CONTEXT *ctx)
Definition: cpu_x86_64.c:901

Definition at line 959 of file cpu_x86_64.c.