From d63be87547731c08aef01a2815403c0e266387ff Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Mon, 30 Mar 2020 16:49:36 +0200 Subject: DWRAF: fix BSS handling and symbol-section --- src/PEImage.cpp | 5 +++-- src/dwarf2pdb.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/PEImage.cpp b/src/PEImage.cpp index 1f916c2..63f57de 100644 --- a/src/PEImage.cpp +++ b/src/PEImage.cpp @@ -809,10 +809,11 @@ int PEImage::findSymbol(const char* name, unsigned long& off, bool& dllimport) c { IMAGE_SYMBOL* sym = (IMAGE_SYMBOL*) (symtable + i * sizeof_sym); const char* symname = sym->N.Name.Short == 0 ? strtable + sym->N.Name.Long : (char*)sym->N.ShortName; - if(symbolMatches(name, symname, dllimport)) + int seg = bigobj ? ((IMAGE_SYMBOL_EX*)sym)->SectionNumber : sym->SectionNumber; + if(seg && symbolMatches(name, symname, dllimport)) { off = sym->Value; - return bigobj ? ((IMAGE_SYMBOL_EX*)sym)->SectionNumber : sym->SectionNumber; + return seg - 1; } i += sym->NumberOfAuxSymbols; } diff --git a/src/dwarf2pdb.cpp b/src/dwarf2pdb.cpp index 70b6fc9..c828d37 100644 --- a/src/dwarf2pdb.cpp +++ b/src/dwarf2pdb.cpp @@ -1652,7 +1652,7 @@ bool CV2PDB::createDWARFModules() for (int s = 0; s < img.countSections(); s++) { const IMAGE_SECTION_HEADER& sec = img.getSection(s); - int rc = dbi->AddSec(s + 1, 0x10d, 0, sec.SizeOfRawData); + int rc = dbi->AddSec(s + 1, 0x10d, 0, sec.Misc.VirtualSize); if (rc <= 0) return setError("cannot add section"); } -- cgit v0.12