From ae050ea4a11ef4a173cde9a37ad246e14af4da17 Mon Sep 17 00:00:00 2001 From: ZehMatt Date: Mon, 18 Dec 2017 12:48:28 +0100 Subject: [PATCH] Fix source lines displayed with disp. --- src/dbg/symbolinfo.cpp | 2 +- src/dbg/symbolsourcebase.h | 1 + src/dbg/symbolsourcepdb.cpp | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/dbg/symbolinfo.cpp b/src/dbg/symbolinfo.cpp index 9aa0c442..5aaa1ee5 100644 --- a/src/dbg/symbolinfo.cpp +++ b/src/dbg/symbolinfo.cpp @@ -321,7 +321,7 @@ bool SymGetSourceLine(duint Cip, char* FileName, int* Line, DWORD* disp) return false; if(disp) - *disp = 0; + *disp = lineInfo.disp; if(Line) *Line = lineInfo.lineNumber; diff --git a/src/dbg/symbolsourcebase.h b/src/dbg/symbolsourcebase.h index 41a46099..c8417fe1 100644 --- a/src/dbg/symbolsourcebase.h +++ b/src/dbg/symbolsourcebase.h @@ -22,6 +22,7 @@ struct LineInfo { duint addr; duint size; + duint disp; int lineNumber; String sourceFile; }; diff --git a/src/dbg/symbolsourcepdb.cpp b/src/dbg/symbolsourcepdb.cpp index 528b3b59..ed22ba53 100644 --- a/src/dbg/symbolsourcepdb.cpp +++ b/src/dbg/symbolsourcepdb.cpp @@ -247,9 +247,10 @@ bool SymbolSourcePDB::findSourceLineInfo(duint rva, LineInfo & lineInfo) } const auto & info = (*lines.begin()).second; - lineInfo.addr = rva; + lineInfo.addr = info.virtualAddress; lineInfo.sourceFile = info.fileName; lineInfo.lineNumber = info.lineNumber; + lineInfo.disp = rva - info.virtualAddress; return true; } \ No newline at end of file