TheBrokenRail 873f50e97f
All checks were successful
CI / Test (AMD64) (push) Successful in 2m10s
CI / Test (ARM64) (push) Successful in 5m7s
Tweak README
2025-02-15 14:38:19 -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:24:17 -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 14:38: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 lib directory is licensed with the Unlicense as it does 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%