mirror of
https://github.com/morluto/rea
synced 2026-10-27 06:33:32 -04:00
c86b09a109
* feat(ghidra): admit 32-bit big-endian PowerPC ELF Recognize EM_PPC as a provider-neutral `powerpc` family that keeps its ELF class, byte order, type and flags, and admit ELF32 big-endian ET_EXEC through a bounded Ghidra lane. ELF64, little-endian, relocatable/shared objects and EF_PPC_EMB are refused with a specific reason; Hopper and IDA do not gain PowerPC support, and Windows Ghidra P0 is unchanged. Ghidra's ELF loader selects PowerPC:BE:32:e500:default for a plain EM_PPC header, which misreads 750-family code. The lane binds PowerPC:BE:32:default/default in the profile (language_selection "admitted-lane-v1"), imports with it and checks the reported language. A language set through REA_GHIDRA_LANGUAGE_ID still replaces the lane default. Add a source-owned fixture, fixed-encoding probe, GNU readelf cross-check and the optional `verify:ghidra:ppc` real-provider lane, plus docs/ghidra-ppc.md. Refs #1741 * style(ghidra): format shared PowerPC profile integration * fix(ghidra): preserve caller-selected PowerPC languages --------- Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
18 lines
401 B
ArmAsm
18 lines
401 B
ArmAsm
/* Source-owned 32-bit PowerPC instructions with fixed, reviewable encodings.
|
|
* No target execution. The conditional branch at +8 targets +16.
|
|
*/
|
|
.text
|
|
.p2align 2
|
|
.globl rea_ppc_probe
|
|
.type rea_ppc_probe, @function
|
|
rea_ppc_probe:
|
|
addi 3, 4, 0x1234
|
|
cmpwi 0, 4, 0
|
|
beq 0, .Lzero
|
|
blr
|
|
.Lzero:
|
|
li 3, 7
|
|
blr
|
|
.size rea_ppc_probe, .-rea_ppc_probe
|
|
.section .note.GNU-stack,"",@progbits
|