This is a cross post to some dynamic linker studies that I did in the past and hosted on github >> dynld <<.
The focus was to understand the process initialization and to implement a minimal dynamic linker, which can run a binary with a single shared library dependency. Minimal, because the linker just implements what is required to explore the concepts of dynamic linking.
In the repository the studies are structured as:
- ch1: introduction to dynamic linking
- ch2: exploring initial process state
- ch3: create a skeleton for the dynamic linker
- ch4: build the final dynamic linker (which can load a binary with a single shared library dependency)
All the experiments target the Linux (x86_64) environment, however going to a different ISA, e.g Linux (arm) can be achieved quiet "easily" once the general concepts are understood.