Open
Description
Describe the bug
ebpf processor NullPointerException when loading a solana program file, solana is based on eBPF, there is an IDA extension for this, but Ghidra it fails
To Reproduce
# dump the Banana Gun program
solana program dump BANANAjs7FJiPQqJTGFzkZJndT9o7UmKiYYGaJz6frGu banana_gun_router.so
Open it in Ghidra:
Cannot invoke "ghidra.app.util.bin.format.elf.ElfSectionHeader.getNameAsString()" because the return value of "ghidra.app.util.bin.format.elf.ElfRelocationTable.getSectionToBeRelocated()" is null
java.lang.NullPointerException: Cannot invoke "ghidra.app.util.bin.format.elf.ElfSectionHeader.getNameAsString()" because the return value of "ghidra.app.util.bin.format.elf.ElfRelocationTable.getSectionToBeRelocated()" is null
at ghidra.app.util.bin.format.elf.relocation.eBPF_ElfRelocationHandler.relocate(eBPF_ElfRelocationHandler.java:50)
at ghidra.app.util.bin.format.elf.relocation.ElfRelocationContext.processRelocation(ElfRelocationContext.java:112)
at ghidra.app.util.opinion.ElfProgramBuilder.processRelocationTableEntries(ElfProgramBuilder.java:1048)
at ghidra.app.util.opinion.ElfProgramBuilder.processRelocationTable(ElfProgramBuilder.java:950)
at ghidra.app.util.opinion.ElfProgramBuilder.processRelocations(ElfProgramBuilder.java:885)
at ghidra.app.util.opinion.ElfProgramBuilder.load(ElfProgramBuilder.java:171)
at ghidra.app.util.opinion.ElfProgramBuilder.loadElf(ElfProgramBuilder.java:108)
at ghidra.app.util.opinion.ElfLoader.load(ElfLoader.java:147)
at ghidra.app.util.opinion.AbstractLibrarySupportLoader.doLoad(AbstractLibrarySupportLoader.java:811)
at ghidra.app.util.opinion.AbstractLibrarySupportLoader.loadProgram(AbstractLibrarySupportLoader.java:100)
at ghidra.app.util.opinion.AbstractProgramLoader.load(AbstractProgramLoader.java:131)
at ghidra.plugin.importer.ImporterUtilities.importSingleFile(ImporterUtilities.java:388)
at ghidra.plugin.importer.ImporterDialog.lambda$okCallback$7(ImporterDialog.java:347)
at ghidra.util.task.TaskBuilder$TaskBuilderTask.run(TaskBuilder.java:306)
at ghidra.util.task.Task.monitoredRun(Task.java:134)
at ghidra.util.task.TaskRunner.lambda$startTaskThread$0(TaskRunner.java:106)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1623)
---------------------------------------------------
Build Date: 2023-Aug-29 1442 EDT
Ghidra Version: 10.3.3
Java Home: /usr/lib/jvm/jdk-20
JVM Version: Oracle Corporation 20
OS: Linux 6.8.0-57-generic amd64
Expected behavior
Load the program successfully
Screenshots
Environment (please complete the following information):
- OS: Linux Ubuntu
- Java Version: JDK 24
- Ghidra Version: 10.3.3
- Ghidra Origin: Github official release .zip file