Reborn Runtime
This is a simple program allowing ARM32 code to easily call "native" code.
By running an ARM32 program inside this runtime, it gains the ability to call raw_trampoline()
. This function copies its arguments and passes them to the "host" code.
The runtime also automatically uses QEMU on non-ARM systems.
Terminology
- "Guest" code is the main ARM32 program. It is running inside the runtime.
- "Host" code is the native code located in
libtrampoline.so
. It is running "alongside" the runtime.
Example
There is a simple C example here.
Syscall Vs. Pipe Trampolines
The runtime supports two methods of passing data between the guest and host.
- System Call
- Data is passed through a custom system-call added to QEMU.
- Only supported on x86_64.
- Pipes
- Data is passed through standard UNIX pipes.
- Can be forced using an environmental variable.
Licensing
The runtime itself is licensed with GPLv2 to comply with QEMU's license. However, the raw_trampoline
function and associated headers are licensed with the Unlicense as they do not directly link to the runtime.
Languages
C++
56.6%
CMake
20.4%
C
17.6%
Shell
5.4%