Skip to content

Commit 8a14956

Browse files
authored
Merge pull request #34 from timschumi/ghidra-12
Add support for Ghidra 12.0 (and drop the others)
2 parents 2e2af1e + fad5eef commit 8a14956

4 files changed

Lines changed: 14 additions & 28 deletions

File tree

.github/workflows/main.yml

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
uses: actions/setup-java@v4
3131
with:
3232
distribution: 'temurin'
33-
java-version: '17'
33+
java-version: '21'
3434

3535
- name: Install Ghidra
3636
uses: antoniovazquezblanco/setup-ghidra@4ecf6e0dc501f8efc1d74d93645c6d5c1df7f441 # v1.2.1
@@ -55,19 +55,7 @@ jobs:
5555
strategy:
5656
matrix:
5757
ghidra:
58-
- "11.0.3"
59-
- "11.0.2"
60-
- "11.0.1"
61-
- "11.0"
62-
- "10.4"
63-
- "10.3.3"
64-
- "10.3.2"
65-
- "10.3.1"
66-
- "10.3"
67-
- "10.2.3"
68-
- "10.2.2"
69-
- "10.2.1"
70-
- "10.2"
58+
- "12.0"
7159

7260
needs: build-natives
7361
runs-on: ubuntu-latest
@@ -82,7 +70,7 @@ jobs:
8270
uses: actions/setup-java@v4
8371
with:
8472
distribution: 'temurin'
85-
java-version: '17'
73+
java-version: '21'
8674

8775
- name: Install Ghidra
8876
uses: antoniovazquezblanco/setup-ghidra@4ecf6e0dc501f8efc1d74d93645c6d5c1df7f441 # v1.2.1

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ This was accepted as a [coreboot project for GSoC 2019][2].
3030
- Locates and defines global copies of UEFI table pointers (gBS/gRT/gST/etc)
3131

3232
## Building & Installation
33-
JDK 11 (or newer) and Ghidra 10.1 (or newer) are required.
33+
JDK 21 (or newer) and Ghidra 12.0 (or newer) are required.
3434

3535
Ghidra's standard Gradle build system is used. Set the `GHIDRA_INSTALL_DIR`
3636
environment variable before building, or set it as a Gradle property (useful

src/main/java/firmware/option_rom/LegacyOptionROMLoader.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import ghidra.app.util.bin.ByteProvider;
2222
import ghidra.app.util.importer.MessageLog;
2323
import ghidra.app.util.opinion.AbstractLibrarySupportLoader;
24+
import ghidra.app.util.opinion.Loader.ImporterSettings;
2425
import ghidra.app.util.opinion.LoadSpec;
2526
import ghidra.program.flatapi.FlatProgramAPI;
2627
import ghidra.program.model.address.Address;
@@ -52,14 +53,13 @@ public Collection<LoadSpec> findSupportedLoadSpecs(ByteProvider provider) {
5253
}
5354

5455
@Override
55-
protected void load(ByteProvider provider, LoadSpec loadSpec, List<Option> options,
56-
Program program, TaskMonitor monitor, MessageLog log) throws IOException {
57-
BinaryReader reader = new BinaryReader(provider, true);
56+
protected void load(Program program, ImporterSettings settings) throws IOException {
57+
BinaryReader reader = new BinaryReader(settings.provider(), true);
5858
LegacyOptionROMHeader header = new LegacyOptionROMHeader(reader);
5959

6060
// Create a segment for the entire option ROM.
61-
FlatProgramAPI api = new FlatProgramAPI(program, monitor);
62-
InputStream romStream = provider.getInputStream(0);
61+
FlatProgramAPI api = new FlatProgramAPI(program, settings.monitor());
62+
InputStream romStream = settings.provider().getInputStream(0);
6363
try {
6464
api.createMemoryBlock("Option ROM", api.toAddr(0), romStream, romStream.available(),
6565
false);

src/main/java/firmware/uefi_te/TELoader.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,12 @@ public Collection<LoadSpec> findSupportedLoadSpecs(ByteProvider provider) {
7878
}
7979

8080
@Override
81-
protected void load(ByteProvider provider, LoadSpec loadSpec, List<Option> options,
82-
Program program, TaskMonitor monitor,
83-
MessageLog log) throws IOException {
84-
BinaryReader reader = new BinaryReader(provider, true);
81+
protected void load(Program program, ImporterSettings settings) throws IOException {
82+
BinaryReader reader = new BinaryReader(settings.provider(), true);
8583
TerseExecutableHeader teHeader = new TerseExecutableHeader(reader);
8684
EFIImageSectionHeader[] sectionHeaders = teHeader.getSections();
87-
FlatProgramAPI api = new FlatProgramAPI(program, monitor);
88-
InputStream inputStream = provider.getInputStream(0);
85+
FlatProgramAPI api = new FlatProgramAPI(program, settings.monitor());
86+
InputStream inputStream = settings.provider().getInputStream(0);
8987

9088
try {
9189
// Create a segment for the TE header and section headers.
@@ -112,7 +110,7 @@ protected void load(ByteProvider provider, LoadSpec loadSpec, List<Option> optio
112110
continue;
113111
}
114112

115-
inputStream = provider.getInputStream(sectionHeader.getVirtualAddress() -
113+
inputStream = settings.provider().getInputStream(sectionHeader.getVirtualAddress() -
116114
teHeader.getHeaderOffset());
117115
long startAddress = teHeader.getImageBase() + sectionHeader.getVirtualAddress();
118116
try {

0 commit comments

Comments
 (0)