From eb4f977ed9ef811cd5564794958e85d6997c1911 Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" Date: Tue, 10 Jan 2012 07:27:10 +0000 Subject: [PATCH] [0.1.x] fixed : module.getSymbol failed with public symbols git-svn-id: https://pykd.svn.codeplex.com/svn@73051 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/module.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/pykd/module.cpp b/pykd/module.cpp index 203e103..274c554 100644 --- a/pykd/module.cpp +++ b/pykd/module.cpp @@ -232,8 +232,6 @@ Module::getTypedVarByAddr( ULONG64 addr ) return getTypedVarByName( symbolName ); - - //LONG displacement; //pyDia::SymbolPtr diaSym = // getDia()->findByRvaImpl((ULONG)(addr - m_base), SymTagData, displacement); @@ -247,13 +245,22 @@ Module::getTypedVarByAddr( ULONG64 addr ) ULONG Module::getRvaByName(const std::string &symName) { - try { - pyDia::SymbolPtr sym = getDia()->getChildByName( symName ); - return sym->getRva(); - } - catch (const pyDia::Exception &) { - } + HRESULT hres; + ULONG64 offset; + + hres = m_symbols->GetOffsetByName( symName.c_str(), &offset ); + if ( SUCCEEDED(hres) ) + return (ULONG)(offset - m_base); + return (ULONG)m_synSymbols->getRvaByName(m_timeDataStamp, m_checkSumm, symName); + + //try { + // pyDia::SymbolPtr sym = getDia()->getChildByName( symName ); + // return sym->getRva(); + //} + //catch (const pyDia::Exception &) { + //} + //return (ULONG)m_synSymbols->getRvaByName(m_timeDataStamp, m_checkSumm, symName); } ///////////////////////////////////////////////////////////////////////////////////