#include <assert.h>
#include "ntstatus.h"
#include "dbghelp_private.h"
#include "winternl.h"
#include "wine/debug.h"
Go to the source code of this file.
|
| | 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, STACKFRAME64 *frame, union ctx *ctx) |
| |
| static void * | x86_64_find_runtime_function (struct module *module, DWORD64 addr) |
| |
| static unsigned | x86_64_map_dwarf_register (unsigned regno, const struct module *module, BOOL eh_frame) |
| |
| static void * | x86_64_fetch_context_reg (union ctx *pctx, unsigned regno, unsigned *size) |
| |
| static const char * | x86_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) |
| |
◆ NONAMELESSSTRUCT
◆ NONAMELESSUNION
◆ WIN32_NO_STATUS
◆ PUNWIND_CODE
◆ PUNWIND_INFO
◆ UNWIND_CODE
◆ UNWIND_CODE_OPS
◆ UNWIND_INFO
◆ _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.
37{
enum _UNWIND_OP_CODES UNWIND_CODE_OPS
◆ WINE_DEFAULT_DEBUG_CHANNEL()
| WINE_DEFAULT_DEBUG_CHANNEL |
( |
dbghelp |
| ) |
|
◆ x86_64_fetch_context_reg()
Definition at line 792 of file cpu_x86_64.c.
793{
794#ifdef __x86_64__
796
797 switch (regno)
798 {
816
833
842
850
851 }
852#endif
853 FIXME(
"Unknown register %x\n", regno);
855}
◆ x86_64_fetch_minidump_module()
Definition at line 931 of file cpu_x86_64.c.
932{
933
934 if (1)
935 {
936
937#ifdef __x86_64__
940 const RUNTIME_FUNCTION* rtf;
942
947 if (rtf)
948 {
949 const RUNTIME_FUNCTION*
end = (
const RUNTIME_FUNCTION*)((
const char*)rtf +
size);
951
952 while (rtf + 1 <
end)
953 {
954 while (rtf->UnwindData & 1)
955 {
956 FIXME(
"RunTime_Function outside IMAGE_DIRECTORY_ENTRY_EXCEPTION unimplemented yet!\n");
958
959
960 }
964 rtf++;
965 }
966 }
967#endif
968 }
969
971}
const char * pe_map_directory(struct module *module, int dirno, DWORD *size) DECLSPEC_HIDDEN
static BOOL read_process_memory(const struct process *process, UINT64 addr, void *buf, size_t size)
void minidump_add_memory_block(struct dump_context *dc, ULONG64 base, ULONG size, ULONG rva) DECLSPEC_HIDDEN
struct module * module_find_by_addr(const struct process *pcs, DWORD64 addr, enum module_type type) DECLSPEC_HIDDEN
struct process * process_find_by_handle(HANDLE hProcess)
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION
IMAGEHLP_MODULEW64 module
#define FIELD_OFFSET(t, f)
◆ x86_64_fetch_minidump_thread()
Definition at line 917 of file cpu_x86_64.c.
918{
920 {
921
922#ifdef __x86_64__
925#endif
926 }
927
929}
@ ThreadWriteInstructionWindow
◆ x86_64_fetch_regname()
Definition at line 857 of file cpu_x86_64.c.
858{
859 switch (regno)
860 {
878
895
904
912 }
913 FIXME(
"Unknown register %x\n", regno);
915}
◆ x86_64_find_runtime_function()
Definition at line 708 of file cpu_x86_64.c.
709{
710#ifdef __x86_64__
711 RUNTIME_FUNCTION* rtf;
714
717 {
719 if (addr < module->
module.BaseOfImage + rtf[
pos].BeginAddress)
max =
pos - 1;
721 else
722 {
724 while (rtf->UnwindData & 1)
725 {
726 FIXME(
"RunTime_Function outside IMAGE_DIRECTORY_ENTRY_EXCEPTION unimplemented yet!\n");
728
729
730 }
731 return rtf;
732 }
733 }
734#endif
736}
GLenum const GLvoid * addr
◆ x86_64_get_addr()
Definition at line 79 of file cpu_x86_64.c.
81{
84 {
85#ifdef __x86_64__
89#endif
90 default:
addr->Mode = -1;
92 }
93}
◆ x86_64_map_dwarf_register()
Definition at line 738 of file cpu_x86_64.c.
739{
741
742 if (regno >= 17 && regno <= 24)
744 else if (regno >= 25 && regno <= 32)
746 else if (regno >= 33 && regno <= 40)
748 else switch (regno)
749 {
779
780
781
782
783
784
785 default:
786 FIXME(
"Don't know how to map register %d\n", regno);
787 return 0;
788 }
790}
◆ x86_64_stack_walk()
◆ cpu_x86_64
Initial value:= {
8,
}
static BOOL x86_64_stack_walk(struct cpu_stack_walk *csw, STACKFRAME64 *frame, union ctx *ctx)
static BOOL x86_64_fetch_minidump_module(struct dump_context *dc, unsigned index, unsigned flags)
static BOOL x86_64_get_addr(HANDLE hThread, const CONTEXT *ctx, enum cpu_addr ca, ADDRESS64 *addr)
static void * x86_64_find_runtime_function(struct module *module, DWORD64 addr)
static const char * x86_64_fetch_regname(unsigned regno)
static BOOL x86_64_fetch_minidump_thread(struct dump_context *dc, unsigned index, unsigned flags, const CONTEXT *ctx)
static void * x86_64_fetch_context_reg(union ctx *pctx, unsigned regno, unsigned *size)
static unsigned x86_64_map_dwarf_register(unsigned regno, const struct module *module, BOOL eh_frame)
#define IMAGE_FILE_MACHINE_AMD64
Definition at line 973 of file cpu_x86_64.c.