Skip to content
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
a266cad
fix(ghidra)!: load ESP-IDF flash code in Ghidra's default address space
Entrpi Nov 1, 2026
82d0df4
fix(ghidra): bound the overlap sweep and check the load preparation
Entrpi Nov 1, 2026
42243f4
fix(ghidra): retarget references into the moved ESP-IDF flash code
Entrpi Nov 1, 2026
16ecb0f
fix(ghidra): move labels past the ESP-IDF flash code's end with it
Entrpi Nov 1, 2026
30fa2b1
fix(ghidra): check prepared blocks by coordinates and address spaces
Entrpi Nov 1, 2026
78a4135
fix(ghidra): bound the sections the overlap check keeps
Entrpi Nov 1, 2026
43a8517
Merge upstream main into fix-ghidra-esp-idf-flash-overlay
Entrpi Nov 1, 2026
af6aab2
fix(ghidra): check RISC-V handshake reports before any analysis call
Entrpi Nov 2, 2026
58d3d9e
fix(ghidra): skip analysis after a refused ELF load preparation
Entrpi Nov 4, 2026
da567c4
Merge upstream main into fix-ghidra-esp-idf-flash-overlay
Entrpi Nov 4, 2026
d378c36
test(ghidra): read the load preparation report before Ghidra's log su…
Entrpi Nov 4, 2026
54e0713
Merge upstream main into fix-ghidra-esp-idf-flash-overlay
Entrpi Nov 7, 2026
054016b
test(ghidra): pin unchanged RISC-V profiles at main's revisions
Entrpi Nov 7, 2026
3111486
Merge main into fix-ghidra-esp-idf-flash-overlay
Entrpi Nov 8, 2026
5099cc9
Merge main into fix-ghidra-esp-idf-flash-overlay
Entrpi Nov 9, 2026
7774504
fix(ghidra): name the moved RISC-V guide in load-layout diagnostics
Entrpi Nov 9, 2026
6dcfe54
test(ghidra): check load-preparation facts instead of sentences
Entrpi Nov 9, 2026
38f32b5
fix(ghidra): give the ESP-IDF load preparation unused temporary names
Entrpi Nov 9, 2026
c7ba9d6
fix(ghidra): keep both final block names free during the ESP-IDF swap
Entrpi Nov 9, 2026
444c36e
Merge main into fix-ghidra-esp-idf-flash-overlay
Entrpi Nov 9, 2026
f589803
test(ghidra): repin the overlap-free RISC-V digests for main's #8340
Entrpi Nov 9, 2026
79f5b97
Merge remote-tracking branch 'origin/main' into fix-ghidra-esp-idf-fl…
Entrpi Nov 11, 2026
fed6719
test(ghidra): repin unchanged RISC-V digests for main's value-flow bu…
Entrpi Nov 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions bridge/ghidra/ReaGhidraBridge.java
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,11 @@ private JsonObject sessionInfo(SessionDescriptor descriptor) throws Exception {
String riscvCallingConvention = currentProgram.getOptions(ghidra.program.model.listing.Program.PROGRAM_INFO)
.getString("REA RISC-V calling convention", null);
if (riscvCallingConvention != null) result.add("riscv_calling_convention", JsonParser.parseString(riscvCallingConvention));
// Written by ReaGhidraPrepareElfLoad before auto-analysis; REA requires it
// exactly when the committed profile declares a RISC-V load preparation.
String loadPreparation = currentProgram.getOptions(ghidra.program.model.listing.Program.PROGRAM_INFO)
.getString("REA ELF load preparation", null);
if (loadPreparation != null) result.add("elf_load_preparation", JsonParser.parseString(loadPreparation));
return result;
}

Expand Down
352 changes: 352 additions & 0 deletions bridge/ghidra/ReaGhidraPrepareElfLoad.java

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/providers/ghidra-provider.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ request ceiling.
| Symbols | `list_names` includes address-bearing memory and external symbols, including dynamic symbols, while excluding variable and no-address namespace records. Each item reports primary, dynamic, external, symbol type, and source facts. |
| Procedures | Both non-external and external functions are listed. A local thunk remains distinct from its resolved target; exact and qualified name lookup fails on ambiguity rather than guessing. |
| Strings | Only Ghidra-defined string `Data` is observed. Items report charset, byte length, and whether a required null terminator is missing. The API cannot distinguish a present terminator from fixed/Pascal layouts when no terminator is missing, so that state is named `present_or_not_required`. |
| Memory | Memory-block end addresses are exclusive. Read/write/execute, initialization, overlay, address space, and image base are direct Ghidra observations. |
| Memory | Memory-block end addresses are exclusive. Read/write/execute, initialization, overlay, address space, and image base are direct Ghidra observations, after any memory-map preparation a lane documents, such as the [RISC-V load layout](ghidra-riscv.md#load-layout). |
| Inventory | Procedure, symbol, and string listings plus searches return the complete matching collection in one response; callers do not provide offsets or result-count limits. |
| Search | Literal and Java-regex searches return every match in the immutable provider-defined inventory; string search does not cover every text sequence in artifact bytes. Search waits for a reply or caller cancellation; there are no caller-supplied offsets or result-count limits. |
| Analysis state | The socket is exposed only after default auto-analysis completes. Established operations wait for their reply or caller cancellation; there is no fixed response-size ceiling. |
Expand Down
177 changes: 157 additions & 20 deletions docs/providers/ghidra-riscv.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
"bridge/ghidra/ReaGhidraRiscvCallingConvention.java",
"bridge/ghidra/ReaGhidraPrepareRaw.java",
"bridge/ghidra/ReaGhidraPrepareDol.java",
"bridge/ghidra/ReaGhidraPrepareElfLoad.java",
"bridge/android/ReaJadxBridge.java",
"bridge/mitmproxy/capture.py",
"bridge/agentenv/capture.py",
Expand Down
Loading
Loading