A runtime hot-linker and loader
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Macoy Madson f53b19bfc1 Update for new Cakelisp type rules 2 weeks ago
Dependencies Update for new Cakelisp type rules 2 weeks ago
data/Fonts Initial commit 6 months ago
src Update for new Cakelisp type rules 2 weeks ago
test Update for new Cakelisp type rules 2 weeks ago
.gitignore Start ELF work 6 months ago
.gitmodules Point to macoy.me repositories 1 month ago
Build.sh Triumph by finding issue in weak_alias handling 5 months ago
COPYING Add dependencies, readme 6 months ago
LICENSE Initial commit 6 months ago
ReadMe.org Link to blog 5 months ago
RunProfiler.sh Initial commit 6 months ago

ReadMe.org

Linker Loader

Read the full introduction.

The goal of this library is to dynamically link and hot-load code from COFF and ELF files at runtime. The intent is to speed up iteration time by removing the whole-executable link step. This loader will make it possible to compile and load single functions rather than entire dynamic libraries, for example.

I was inspired by Hot Runtime Linking by Andreas Fredriksson (archive.org) and Naughty Dog's GOAL.

By controlling the linking and loading phases, I hope to make it easier to save "cores" of the entire application state (i.e., every static variable), show diagnostics on undefined/unused references, and a variety of other things.

I want to be able to load COFF and ELF files on either of the main platforms I support (Windows x64 and GNU/Linux x64), regardless of the sub-type of file:

  • .o

  • .obj

  • .lib

  • .so

  • .dll

  • .exe

  • ELF executable

This isn't intended to be shipped enabled for end-users, unless the application is supposed to be friendly to modification. I am making this as a tool primarily for applications in development.

Similar projects

  • Runtime Compiled C++

  • Live++: "Live++ works at the binary level using .PDB, .EXE, .DLL, .LIB, and .OBJ directly. It extracts and reverses most of the needed information from executable and object files." Live++ has no GNU/Linux support.