Introduce new csu0 variant for -static -pie binaries to use called
authorkurt <kurt@openbsd.org>
Mon, 22 Dec 2014 03:51:08 +0000 (03:51 +0000)
committerkurt <kurt@openbsd.org>
Mon, 22 Dec 2014 03:51:08 +0000 (03:51 +0000)
commitb7d44ead2528d548ebe369571fb766478149400a
treed50df598109861829495786e8696141cddea4e49
parent5983c6bf65607967d28cf0ad94427fae93479bd7
Introduce new csu0 variant for -static -pie binaries to use called
rcsu0.o where the initial 'r' is for relocatable. rcsu0.o performs
self-relocation on static pie binaries by calling a slightly modified
copy of ld.so's _dl_boot_bind() in boot.h.

The first arch implementatation is also included for amd64 where
__start calls _dl_boot_bind() and then calls ___start(). Includes
parts from kettenis@ to help get R_X86_64_64 relocations working
and proper handling for undefined weak symbols.

This is the first part of several to get static pie self-relocating
binaries working. binutils, gcc and kernel changes are forthcoming
to complete the solution, then per-arch implementations are needed
for MD_RCRT0_START in csu.

okay kettenis@ pascal@ deraadt@
lib/csu/Makefile
lib/csu/amd64/md_init.h
lib/csu/boot.h [new file with mode: 0644]
lib/csu/crt0.c
libexec/ld.so/amd64/archdep.h