Process Startup - Dynamic Program csu objects still linked in to program Kernel sets up stack the similar to static programs but also add adds auxiliary vector data to stack AUXV data includes information interpreter needs: to inspect the program's elf data structures address of program entry point Kernel mmaps the interpreter (ld.so) and transfers control to it instead of the program directly ld.so's entry point is _dl_start _dl_start is similar assembly to crt0 but calls ld.so's _dl_boot_bind() and _dl_boot() functions _dl_boot_bind() relocates ld.so itself and sets up a local copy of the AUXV data _dl_boot() uses the AUXV data to: load and relocate the shared libs the program requires return the program's entry point __start back to _dl_start which then calls the program's entry point