aboutsummaryrefslogtreecommitdiffhomepage
path: root/content
diff options
context:
space:
mode:
authorJohannes Stoelp <johannes.stoelp@gmail.com>2023-01-13 15:29:13 +0100
committerJohannes Stoelp <johannes.stoelp@gmail.com>2023-01-13 15:29:13 +0100
commit68a2bc627a9b1a961d9fe4a05b04eed82715ca40 (patch)
treeb48f6155bdafbfc6a6b4e525a0ab5fb872f49f0a /content
parente3c00cb594a76ed5ba7e20bd2bd66edf05acc005 (diff)
downloadblog-68a2bc627a9b1a961d9fe4a05b04eed82715ca40.tar.gz
blog-68a2bc627a9b1a961d9fe4a05b04eed82715ca40.zip
xpost: dynld
Diffstat (limited to 'content')
-rw-r--r--content/2023-01-13-xpost-dynld.md31
1 files changed, 31 insertions, 0 deletions
diff --git a/content/2023-01-13-xpost-dynld.md b/content/2023-01-13-xpost-dynld.md
new file mode 100644
index 0000000..4340cfc
--- /dev/null
+++ b/content/2023-01-13-xpost-dynld.md
@@ -0,0 +1,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