diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/ElfProgramBuilder.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/ElfProgramBuilder.java index f5d2043723..1df8f31230 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/ElfProgramBuilder.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/ElfProgramBuilder.java @@ -15,24 +15,27 @@ */ package ghidra.app.util.opinion; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.math.BigInteger; +import java.nio.file.AccessMode; import java.text.NumberFormat; import java.util.*; +import org.apache.commons.compress.compressors.xz.XZCompressorInputStream; import org.apache.commons.lang3.StringUtils; +import generic.continues.GenericFactory; import ghidra.app.cmd.label.SetLabelPrimaryCmd; import ghidra.app.util.MemoryBlockUtils; import ghidra.app.util.Option; -import ghidra.app.util.bin.ByteProvider; +import ghidra.app.util.bin.*; import ghidra.app.util.bin.format.MemoryLoadable; import ghidra.app.util.bin.format.elf.*; import ghidra.app.util.bin.format.elf.ElfDynamicType.ElfDynamicValueType; import ghidra.app.util.bin.format.elf.extend.ElfLoadAdapter; import ghidra.app.util.bin.format.elf.relocation.*; import ghidra.app.util.importer.MessageLog; +import ghidra.app.util.importer.MessageLogContinuesFactory; import ghidra.framework.options.Options; import ghidra.program.database.mem.FileBytes; import ghidra.program.database.register.AddressRangeObjectMap; @@ -53,6 +56,7 @@ import ghidra.util.*; import ghidra.util.datastruct.*; import ghidra.util.exception.*; import ghidra.util.task.TaskMonitor; +import utilities.util.FileUtilities; class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper { @@ -1352,7 +1356,10 @@ class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper { // Mapped data/object symbol addresses with specific sizes HashMap
dataAllocationMap = new HashMap<>(); - ElfSymbolTable[] symbolTables = elf.getSymbolTables(); + List
+ * The ".gnu_debugdata" section contains a xz compressed minimal ELF file that has symbols that
+ * have been stripped from this binary.
+ *
+ * @param monitor checked for cancelation when copying data
+ * @return list of ElfSymbolTables, empty if not present
+ */
+ private List