TheBrokenRail a9cf1ef2e2
Some checks failed
CI / Test (AMD64) (push) Failing after 32s
CI / Test (ARM64) (push) Failing after 4m58s
Exit Immediately Upon Error
2025-02-15 14:23:15 -05:00
Fix
2025-02-15 00:26:16 -05:00
2025-02-15 00:36:44 -05:00
2025-02-15 01:17:12 -05:00
2025-02-14 23:21:19 -05:00
2025-02-15 00:36:44 -05:00
2025-02-15 14:23:15 -05:00
2024-06-04 17:22:15 -04:00
2025-02-15 13:50:33 -05:00
2025-01-04 05:34:24 -05:00
2025-02-15 00:04:19 -05:00

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.

Description
Reborn Runtime
Readme GPL-2.0 258 MiB
Languages
C++ 56.6%
CMake 20.4%
C 17.6%
Shell 5.4%