35 // functions needed for decoding symbols |
35 // functions needed for decoding symbols |
36 typedef DWORD (WINAPI *pfn_SymSetOptions)(DWORD); |
36 typedef DWORD (WINAPI *pfn_SymSetOptions)(DWORD); |
37 typedef BOOL (WINAPI *pfn_SymInitialize)(HANDLE, PCTSTR, BOOL); |
37 typedef BOOL (WINAPI *pfn_SymInitialize)(HANDLE, PCTSTR, BOOL); |
38 typedef BOOL (WINAPI *pfn_SymGetSymFromAddr64)(HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64); |
38 typedef BOOL (WINAPI *pfn_SymGetSymFromAddr64)(HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64); |
39 typedef DWORD (WINAPI *pfn_UndecorateSymbolName)(const char*, char*, DWORD, DWORD); |
39 typedef DWORD (WINAPI *pfn_UndecorateSymbolName)(const char*, char*, DWORD, DWORD); |
|
40 |
|
41 #elif defined(__APPLE__) |
40 |
42 |
41 #else |
43 #else |
42 |
44 |
43 class ElfFile; |
45 class ElfFile; |
44 |
46 |
77 |
79 |
78 static bool demangle(const char* symbol, char *buf, int buflen); |
80 static bool demangle(const char* symbol, char *buf, int buflen); |
79 |
81 |
80 static decoder_status get_status() { return _decoder_status; }; |
82 static decoder_status get_status() { return _decoder_status; }; |
81 |
83 |
82 #ifndef _WINDOWS |
84 #if !defined(_WINDOWS) && !defined(__APPLE__) |
83 private: |
85 private: |
84 static ElfFile* get_elf_file(const char* filepath); |
86 static ElfFile* get_elf_file(const char* filepath); |
85 #endif // _WINDOWS |
87 #endif // _WINDOWS |
86 |
88 |
87 |
89 |
92 #ifdef _WINDOWS |
94 #ifdef _WINDOWS |
93 static HMODULE _dbghelp_handle; |
95 static HMODULE _dbghelp_handle; |
94 static bool _can_decode_in_vm; |
96 static bool _can_decode_in_vm; |
95 static pfn_SymGetSymFromAddr64 _pfnSymGetSymFromAddr64; |
97 static pfn_SymGetSymFromAddr64 _pfnSymGetSymFromAddr64; |
96 static pfn_UndecorateSymbolName _pfnUndecorateSymbolName; |
98 static pfn_UndecorateSymbolName _pfnUndecorateSymbolName; |
|
99 #elif __APPLE__ |
97 #else |
100 #else |
98 static ElfFile* _opened_elf_files; |
101 static ElfFile* _opened_elf_files; |
99 #endif // _WINDOWS |
102 #endif // _WINDOWS |
100 }; |
103 }; |
101 |
104 |