GT-2849 Remove demangler and type laying from PeLoader.processExports

This commit is contained in:
ghizard 2019-05-07 12:48:58 -04:00
parent 67198eb40f
commit 661a38d7b4

View file

@ -23,20 +23,21 @@ import generic.continues.GenericFactory;
import generic.continues.RethrowContinuesFactory;
import ghidra.app.util.MemoryBlockUtil;
import ghidra.app.util.Option;
import ghidra.app.util.bin.*;
import ghidra.app.util.bin.BinaryReader;
import ghidra.app.util.bin.ByteProvider;
import ghidra.app.util.bin.format.mz.DOSHeader;
import ghidra.app.util.bin.format.pe.*;
import ghidra.app.util.bin.format.pe.PortableExecutable.SectionLayout;
import ghidra.app.util.bin.format.pe.debug.DebugCOFFSymbol;
import ghidra.app.util.bin.format.pe.debug.DebugDirectoryParser;
import ghidra.app.util.demangler.*;
import ghidra.app.util.importer.*;
import ghidra.framework.model.DomainObject;
import ghidra.framework.options.Options;
import ghidra.program.model.address.*;
import ghidra.program.model.data.*;
import ghidra.program.model.listing.*;
import ghidra.program.model.mem.*;
import ghidra.program.model.mem.Memory;
import ghidra.program.model.mem.MemoryAccessException;
import ghidra.program.model.reloc.RelocationTable;
import ghidra.program.model.symbol.*;
import ghidra.program.model.util.AddressSetPropertyMap;
@ -508,21 +509,6 @@ public class PeLoader extends AbstractPeDebugLoader {
// Don't create invalid symbol
}
DemangledObject demangledObj = null;
try {
demangledObj = DemanglerUtil.demangle(program, name);
}
catch (Exception e) {
//log.appendMsg("Unable to demangle: "+name);
}
if (demangledObj != null) {
String comment = demangledObj.getSignature(true);
if (hasComment(CodeUnit.PLATE_COMMENT, address)) {
comment = "\n" + comment;
}
setComment(CodeUnit.PLATE_COMMENT, address, comment);
}
try {
symTable.createLabel(address, SymbolUtilities.ORDINAL_PREFIX + export.getOrdinal(),
SourceType.IMPORTED);
@ -574,41 +560,6 @@ public class PeLoader extends AbstractPeDebugLoader {
// Nothing to do...just continue on
}
}
//if this export is not in an executable section,
//then it is a DATA export.
//see if it is a pointer, otherwise make it an undefined1
MemoryBlock block = memory.getBlock(address);
if (block != null && !block.isExecute()) {
try {
if (demangledObj instanceof DemangledVariable) {
DemangledVariable demangledVar = (DemangledVariable) demangledObj;
DemangledDataType ddt = demangledVar.getDataType();
DataType dt =
ddt == null ? null : ddt.getDataType(program.getDataTypeManager());
if (dt != null && dt.getLength() > 0) {
listing.createData(address, dt);
}
else {
listing.createData(address, new Undefined1DataType());
}
}
else {
listing.createData(address, StructConverter.POINTER,
address.getPointerSize());
Data data = listing.getDataAt(address);
Address ptr = data.getAddress(0);
if (ptr == null || !memory.contains(ptr)) {
listing.clearCodeUnits(data.getMinAddress(), data.getMaxAddress(),
false);
listing.createData(address, new Undefined1DataType());
}
}
}
catch (DataTypeConflictException | CodeUnitInsertionException e) {
// Nothing to do...just continue on
}
}
}
}