aboutsummaryrefslogtreecommitdiffhomepage
path: root/content/2023-01-13-xpost-dynld.md
blob: 4340cfccadf466790181418c757a302557f638e7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
+++
title = "xpost: Dynamic linker studies (dynld)"

[taxonomies]
tags = ["elf", "linux", "x86"]
+++

This is a cross post to some **dynamic linker studies** that I did in the past
and hosted on github [>> dynld <<][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][dynld-ch1]: introduction to dynamic linking
- [ch2][dynld-ch2]: exploring initial process state
- [ch3][dynld-ch3]: create a skeleton for the dynamic linker
- [ch4][dynld-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.

[dynld]: https://github.com/johannst/dynld
[dynld-ch1]: https://github.com/johannst/dynld/tree/main/01_dynamic_linking
[dynld-ch2]: https://github.com/johannst/dynld/tree/main/02_process_init
[dynld-ch3]: https://github.com/johannst/dynld/tree/main/03_hello_dynld
[dynld-ch4]: https://github.com/johannst/dynld/tree/main/04_dynld_nostd