Executable Relocation - Dynamic Program ld.so was 99% there already All that was needed was to find out the program load offset Compare the address of phdr pointer passed via AUXV to the address of the phdr section in the elf data Pass the load offset so that the program itself gets relocated For pie the csu objects also need to be compiled pic (actually -fpie) Some archs needed adjustments to crt0 assembly to make PIC compatible