summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Schuetze <r.sagitario@gmx.de>2020-03-30 14:49:36 (GMT)
committerRainer Schuetze <r.sagitario@gmx.de>2020-03-30 14:49:36 (GMT)
commitd63be87547731c08aef01a2815403c0e266387ff (patch)
tree059a219c72d66f1c0164be2ff8a39de859c6a352
parent243f8daa3289f205bad5dd73e425fea9c6761236 (diff)
downloadcv2pdb-d63be87547731c08aef01a2815403c0e266387ff.zip
cv2pdb-d63be87547731c08aef01a2815403c0e266387ff.tar.gz
cv2pdb-d63be87547731c08aef01a2815403c0e266387ff.tar.bz2
DWRAF: fix BSS handling and symbol-section
-rw-r--r--src/PEImage.cpp5
-rw-r--r--src/dwarf2pdb.cpp2
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");
}