diff options
author | Rainer Schuetze <r.sagitario@gmx.de> | 2020-03-30 14:49:36 (GMT) |
---|---|---|
committer | Rainer Schuetze <r.sagitario@gmx.de> | 2020-03-30 14:49:36 (GMT) |
commit | d63be87547731c08aef01a2815403c0e266387ff (patch) | |
tree | 059a219c72d66f1c0164be2ff8a39de859c6a352 | |
parent | 243f8daa3289f205bad5dd73e425fea9c6761236 (diff) | |
download | cv2pdb-d63be87547731c08aef01a2815403c0e266387ff.zip cv2pdb-d63be87547731c08aef01a2815403c0e266387ff.tar.gz cv2pdb-d63be87547731c08aef01a2815403c0e266387ff.tar.bz2 |
DWRAF: fix BSS handling and symbol-section
-rw-r--r-- | src/PEImage.cpp | 5 | ||||
-rw-r--r-- | 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");
}
|