Merge remote-tracking branch

'origin/GP-3963_ryanmkurtz_pe-debug-linenums' into patch (Closes #5899)
This commit is contained in:
Ryan Kurtz
2023-10-25 07:42:43 -04:00
4 changed files with 7 additions and 18 deletions
@@ -78,7 +78,7 @@ public class OMFSrcModule {
} }
for (int i = 0; i < Conv.shortToInt(cFile); ++i) { for (int i = 0; i < Conv.shortToInt(cFile); ++i) {
moduleFileList.add(new OMFSrcModuleFile(reader, ptr + baseSrcFile[i])); moduleFileList.add(new OMFSrcModuleFile(reader, ptr, ptr + baseSrcFile[i]));
} }
} }
@@ -54,7 +54,7 @@ public class OMFSrcModuleFile {
private ArrayList<OMFSrcModuleLine> moduleLineList = new ArrayList<OMFSrcModuleLine>(); private ArrayList<OMFSrcModuleLine> moduleLineList = new ArrayList<OMFSrcModuleLine>();
OMFSrcModuleFile(BinaryReader reader, int ptr) throws IOException { OMFSrcModuleFile(BinaryReader reader, int moduleBase, int ptr) throws IOException {
int index = ptr; int index = ptr;
cSeg = reader.readShort(index); cSeg = reader.readShort(index);
@@ -86,7 +86,7 @@ public class OMFSrcModuleFile {
for (int i = 0; i < Conv.shortToInt(cSeg); ++i) { for (int i = 0; i < Conv.shortToInt(cSeg); ++i) {
//OMFSrcModuleLine line = new OMFSrcModuleLine(reader, index); //OMFSrcModuleLine line = new OMFSrcModuleLine(reader, index);
OMFSrcModuleLine line = new OMFSrcModuleLine(reader, ptr + baseSrcLn[i]); OMFSrcModuleLine line = new OMFSrcModuleLine(reader, moduleBase + baseSrcLn[i]);
moduleLineList.add(line); moduleLineList.add(line);
index += line.getByteCount(); index += line.getByteCount();
} }
@@ -38,8 +38,6 @@ class S_CONSTANT32 extends DebugSymbol {
ptr += BinaryReader.SIZEOF_BYTE; ptr += BinaryReader.SIZEOF_BYTE;
name = reader.readAsciiString(ptr, Conv.byteToInt(nameLen)); name = reader.readAsciiString(ptr, Conv.byteToInt(nameLen));
Msg.debug(this, "S_CONSTANT32: " + unknown1 + " - " + unknown2);
} }
} }
@@ -177,12 +177,9 @@ abstract class AbstractPeDebugLoader extends AbstractOrdinalSupportLoader {
FileHeader fileHeader = ntHeader.getFileHeader(); FileHeader fileHeader = ntHeader.getFileHeader();
List<OMFSrcModule> srcModules = dcvst.getOMFSrcModules(); List<OMFSrcModule> srcModules = dcvst.getOMFSrcModules();
for (OMFSrcModule module : srcModules) { for (OMFSrcModule module : srcModules) {
short[] segs = module.getSegments();
int segIndex = 0;
OMFSrcModuleFile[] files = module.getOMFSrcModuleFiles(); OMFSrcModuleFile[] files = module.getOMFSrcModuleFiles();
for (OMFSrcModuleFile file : files) { for (OMFSrcModuleFile file : files) {
processFiles(file, segs[segIndex++], fileHeader, sectionToAddress, monitor); processFiles(file, module.getSegments(), fileHeader, sectionToAddress, monitor);
processLineNumbers(fileHeader, sectionToAddress, file.getOMFSrcModuleLines(), processLineNumbers(fileHeader, sectionToAddress, file.getOMFSrcModuleLines(),
options, monitor); options, monitor);
@@ -274,18 +271,18 @@ abstract class AbstractPeDebugLoader extends AbstractOrdinalSupportLoader {
} }
} }
private void processFiles(OMFSrcModuleFile file, short segment, FileHeader fileHeader, private void processFiles(OMFSrcModuleFile file, short[] segments, FileHeader fileHeader,
Map<SectionHeader, Address> sectionToAddress, TaskMonitor monitor) { Map<SectionHeader, Address> sectionToAddress, TaskMonitor monitor) {
int[] starts = file.getStarts(); int[] starts = file.getStarts();
int[] ends = file.getEnds(); int[] ends = file.getEnds();
for (int k = 0; k < starts.length; ++k) { for (int k = 0; k < starts.length; ++k) {
if (starts[k] == 0 || ends[k] == 0) { if (starts[k] == 0 || ends[k] == 0 || k >= segments.length) {
continue; continue;
} }
Address addr = sectionToAddress.get(fileHeader.getSectionHeader(segment - 1)); Address addr = sectionToAddress.get(fileHeader.getSectionHeader(segments[k] - 1));
if (addr == null) { if (addr == null) {
continue; continue;
} }
@@ -323,12 +320,6 @@ abstract class AbstractPeDebugLoader extends AbstractOrdinalSupportLoader {
if (monitor.isCancelled()) { if (monitor.isCancelled()) {
return; return;
} }
if (offsets[j] == 0) {
System.out.println("");
}
if (offsets[j] == 1) {
System.out.println("");
}
if (offsets[j] > 0) { if (offsets[j] > 0) {
addLineComment(addr.add(Conv.intToLong(offsets[j])), addLineComment(addr.add(Conv.intToLong(offsets[j])),
Conv.shortToInt(lineNumbers[j])); Conv.shortToInt(lineNumbers[j]));