aboutsummaryrefslogtreecommitdiff

dynld

This repository contains studies about process initialization and dynamic linking on Linux(x86_64). It is mainly used for personal studies, but may be useful to some random internet user.

All studies and discussions assume the following environment:

  • Arch: x86_64
  • OS: Linux Kernel
  • System ABI: SystemV x86_64 ABI
  • BinFMT: ELF

The studies are structured as follows:

  1. Ch 01 dynamic linking: Brief introduction to dynamic linking.
  2. Ch 02 process initialization: Building a no-std executable and exploring the initial process state.
  3. Ch 03 dynamic linker skeleton: Building a skeleton for the dynamic linker which can run a statically linked no-std executable.
  4. Ch 04 dynld no-std: Building a dynamic linker dynld which can initialize the execution environment for a no-std executable with a shared library dependency.

License

This project is licensed under the MIT license.