aboutsummaryrefslogtreecommitdiff
path: root/02_process_init
diff options
context:
space:
mode:
authorjohannst <johannes.stoelp@gmail.com>2020-11-25 17:53:53 +0100
committerjohannst <johannes.stoelp@gmail.com>2020-11-25 17:53:53 +0100
commitd103cc99e36e0579c3891f6f8e9666bf9fa0f44d (patch)
tree7c7878b368cb52708226f6ea29092b524e0052ab /02_process_init
parentd59dca0ee1983057f3f03e588fd50f9488ae9fa7 (diff)
downloaddynld-d103cc99e36e0579c3891f6f8e9666bf9fa0f44d.tar.gz
dynld-d103cc99e36e0579c3891f6f8e9666bf9fa0f44d.zip
ch02 adding goals
Diffstat (limited to '02_process_init')
-rw-r--r--02_process_init/README.md13
1 files changed, 10 insertions, 3 deletions
diff --git a/02_process_init/README.md b/02_process_init/README.md
index 5e4e7b3..9dcda8d 100644
--- a/02_process_init/README.md
+++ b/02_process_init/README.md
@@ -1,5 +1,12 @@
# Process Initialization
+### Goals
+- Understand process state on process entry as specified by the
+ [SystemV x86-64 ABI][sysv_x86_64]
+- Build `no-std` program to visualize process state
+
+---
+
Before starting to implement a minimal dynamic linker the first step is to
understand the `process initialization` in further depth.
Which is important because when starting a new process
@@ -12,7 +19,7 @@ Which is important because when starting a new process
Before transferring control to a new user process the Linux Kernel provides some
data on the `stack` with the format following the specification in the
-[`SystemV x86-64 ABI`][sysv_x86_64] chapter _Initial Stack and Register State_.
+[SystemV x86-64 ABI][sysv_x86_64] chapter _Initial Stack and Register State_.
## Stack state on process entry
@@ -91,7 +98,7 @@ Where `AT_NULL` is used to indicate the end of `AUXV`.
## Register state on process entry
Regarding the state of general purpose registers on process entry the
-[`x86-64 SystemV ABI`][sysv_x86_64] states that all registers except the ones listed
+[x86-64 SystemV ABI][sysv_x86_64] states that all registers except the ones listed
below are in an unspecified state:
- `$rbp`: content is unspecified, but user code should set it to zero to mark
the deepest stack frame
@@ -280,7 +287,7 @@ Print auxiliary vector
## Things to remember
- On process entry the Linux Kernel provides data on the stack as specified in
- the `SystemV ABI`
+ the [SystemV ABI][sysv_x86_64]
- By default the `static linker` adds additional code which contains the
`_start` symbol being the default process `entry point`