Changeset 318 for trunk/openjdk/hotspot/src/os
- Timestamp:
- Feb 16, 2012, 2:21:52 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/openjdk/hotspot/src/os/windows/vm/decoder_windows.cpp
r309 r318 29 29 HMODULE Decoder::_dbghelp_handle = NULL; 30 30 bool Decoder::_can_decode_in_vm = false; 31 pfn_SymGetSymFromAddr 64 Decoder::_pfnSymGetSymFromAddr64= NULL;31 pfn_SymGetSymFromAddrXX Decoder::_pfnSymGetSymFromAddrXX = NULL; 32 32 pfn_UndecorateSymbolName Decoder::_pfnUndecorateSymbolName = NULL; 33 33 … … 46 46 pfn_SymSetOptions _pfnSymSetOptions = (pfn_SymSetOptions)::GetProcAddress(handle, "SymSetOptions"); 47 47 pfn_SymInitialize _pfnSymInitialize = (pfn_SymInitialize)::GetProcAddress(handle, "SymInitialize"); 48 _pfnSymGetSymFromAddr64 = (pfn_SymGetSymFromAddr64)::GetProcAddress(handle, "SymGetSymFromAddr64"); 48 #ifdef __WIN32OS2__ 49 _pfnSymGetSymFromAddrXX = (pfn_SymGetSymFromAddrXX)::GetProcAddress(handle, "SymGetSymFromAddr"); 50 #else 51 _pfnSymGetSymFromAddrXX = (pfn_SymGetSymFromAddrXX)::GetProcAddress(handle, "SymGetSymFromAddr64"); 52 #endif 49 53 _pfnUndecorateSymbolName = (pfn_UndecorateSymbolName)GetProcAddress(handle, "UnDecorateSymbolName"); 50 54 51 if (_pfnSymSetOptions == NULL || _pfnSymInitialize == NULL || _pfnSymGetSymFromAddr 64== NULL) {52 _pfnSymGetSymFromAddr 64= NULL;55 if (_pfnSymSetOptions == NULL || _pfnSymInitialize == NULL || _pfnSymGetSymFromAddrXX == NULL) { 56 _pfnSymGetSymFromAddrXX = NULL; 53 57 _pfnUndecorateSymbolName = NULL; 54 58 ::FreeLibrary(handle); … … 60 64 _pfnSymSetOptions(SYMOPT_UNDNAME | SYMOPT_DEFERRED_LOADS); 61 65 if (!_pfnSymInitialize(GetCurrentProcess(), NULL, TRUE)) { 62 _pfnSymGetSymFromAddr 64= NULL;66 _pfnSymGetSymFromAddrXX = NULL; 63 67 _pfnUndecorateSymbolName = NULL; 64 68 ::FreeLibrary(handle); … … 80 84 void Decoder::uninitialize() { 81 85 assert(_initialized, "Decoder not yet initialized"); 82 _pfnSymGetSymFromAddr 64= NULL;86 _pfnSymGetSymFromAddrXX = NULL; 83 87 _pfnUndecorateSymbolName = NULL; 84 88 if (_dbghelp_handle != NULL) { … … 96 100 Decoder::decoder_status Decoder::decode(address addr, char *buf, int buflen, int *offset) { 97 101 assert(_initialized, "Decoder not yet initialized"); 98 if (_pfnSymGetSymFromAddr 64!= NULL) {99 PIMAGEHLP_SYMBOL 64pSymbol;100 char symbolInfo[MAX_PATH + sizeof(IMAGEHLP_SYMBOL 64)];101 pSymbol = (PIMAGEHLP_SYMBOL 64)symbolInfo;102 if (_pfnSymGetSymFromAddrXX != NULL) { 103 PIMAGEHLP_SYMBOLXX pSymbol; 104 char symbolInfo[MAX_PATH + sizeof(IMAGEHLP_SYMBOLXX)]; 105 pSymbol = (PIMAGEHLP_SYMBOLXX)symbolInfo; 102 106 pSymbol->MaxNameLength = MAX_PATH; 103 pSymbol->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL 64);104 DWORD 64displacement;105 if (_pfnSymGetSymFromAddr 64(::GetCurrentProcess(), (DWORD64)addr, &displacement, pSymbol)) {107 pSymbol->SizeOfStruct = sizeof(IMAGEHLP_SYMBOLXX); 108 DWORDXX displacement; 109 if (_pfnSymGetSymFromAddrXX(::GetCurrentProcess(), (DWORDXX)addr, &displacement, pSymbol)) { 106 110 if (buf != NULL) { 107 111 if (!demangle(pSymbol->Name, buf, buflen)) {
Note:
See TracChangeset
for help on using the changeset viewer.