From 13b1676d6fd6bfab059dc6e49fa9d67236f31eb1 Mon Sep 17 00:00:00 2001 From: "SND\\EreTIk_cp" Date: Fri, 14 Sep 2012 08:42:46 +0000 Subject: [PATCH] [0.2.x] ~workaround: undecorate x86 public varibale name git-svn-id: https://pykd.svn.codeplex.com/svn@79570 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/dia/diawrapper.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pykd/dia/diawrapper.cpp b/pykd/dia/diawrapper.cpp index f5ee616..e8ffbef 100644 --- a/pykd/dia/diawrapper.cpp +++ b/pykd/dia/diawrapper.cpp @@ -139,6 +139,8 @@ SymbolPtr DiaSymbol::fromGlobalScope( IDiaSymbol *_symbol ) HRESULT hres = _symbol->get_machineType(&machineType); if (S_OK != hres) throw DiaException("IDiaSymbol::get_machineType", hres); + if (!machineType) + machineType = IMAGE_FILE_MACHINE_I386; return SymbolPtr( new DiaSymbol(DiaSymbolPtr(_symbol), machineType) ); } @@ -397,7 +399,16 @@ std::string DiaSymbol::getName() std::string retStr = retValue.asStr(); if ( boost::regex_match( retStr.c_str(), matchResult, stdcallMatch ) ) + { retStr= std::string( matchResult[1].first, matchResult[1].second ); + } + else if (IMAGE_FILE_MACHINE_I386 == m_machineType) + { + DWORD symTag; + HRESULT hres = m_symbol->get_symTag(&symTag); + if (S_OK == hres && SymTagPublicSymbol == symTag) + retStr.erase( retStr.begin() ); + } return retStr; }