diff options
author | johannst <johannes.stoelp@gmail.com> | 2021-04-28 23:52:29 +0200 |
---|---|---|
committer | johannst <johannes.stoelp@gmail.com> | 2021-04-28 23:52:29 +0200 |
commit | 925c2cb1f4cb61f3ff9bb96017bc3701338a124e (patch) | |
tree | 3373be6c97feeae4cb4c1196fe90fba68c3c5bec /03_hello_dynld/README.md | |
parent | 8b1b84fa12bec56e4a4066975c43dee6486bf591 (diff) | |
download | dynld-925c2cb1f4cb61f3ff9bb96017bc3701338a124e.tar.gz dynld-925c2cb1f4cb61f3ff9bb96017bc3701338a124e.zip |
03: update README
Diffstat (limited to '03_hello_dynld/README.md')
-rw-r--r-- | 03_hello_dynld/README.md | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/03_hello_dynld/README.md b/03_hello_dynld/README.md index e79e13a..bcee3f4 100644 --- a/03_hello_dynld/README.md +++ b/03_hello_dynld/README.md @@ -65,12 +65,12 @@ user_entry(); ## User program -The next step is to create the user program that will be loaded by -the dynamic linker created in the previous section. -For now the functionality of the user program is not important, but it -must full-fill the requirements no to depend on any shared libraries or +The next step is to create the user program that will be jumped to by the +dynamic linker created above. +For now the functionality of the user program is not really important, but it +must full-fill the requirements to not depend on any shared libraries or contain any relocations. -For this purpose the following simple `no-std` program is used: +For this purpose the following `no-std` program is used: ```c #include <syscall.h> #include <io.h> @@ -90,7 +90,8 @@ section. This can be done with the following command line switch: ```bash gcc ... -Wl,--dynamic-linker=<path> ... ``` -> The full compile and link command can be seen in the [Makefile - main](./Makefile). +> The full compile and link command can be seen in the [Makefile - main +> target](./Makefile). The result can be seen in the `.interp` sections referenced by the `PT_INTERP` segment in the program headers: @@ -112,7 +113,7 @@ Program Headers: ``` As discussed in [01_dynamic_linking](../01_dynamic_linking/README.md) -the `PT_INTERP` segment tells to Linux Kernel which dynamic linker to +the `PT_INTERP` segment tells the Linux Kernel which dynamic linker to load to handle the startup of the user executable. When running the `./main` user program, the `dynld.so` will be loaded |