musl/crt
Rich Felker f3ddd17380 dynamic linker bootstrap overhaul
this overhaul further reduces the amount of arch-specific code needed
by the dynamic linker and removes a number of assumptions, including:

- that symbolic function references inside libc are bound at link time
  via the linker option -Bsymbolic-functions.

- that libc functions used by the dynamic linker do not require
  access to data symbols.

- that static/internal function calls and data accesses can be made
  without performing any relocations, or that arch-specific startup
  code handled any such relocations needed.

removing these assumptions paves the way for allowing libc.so itself
to be built with stack protector (among other things), and is achieved
by a three-stage bootstrap process:

1. relative relocations are processed with a flat function.
2. symbolic relocations are processed with no external calls/data.
3. main program and dependency libs are processed with a
   fully-functional libc/ldso.

reduction in arch-specific code is achived through the following:

- crt_arch.h, used for generating crt1.o, now provides the entry point
  for the dynamic linker too.

- asm is no longer responsible for skipping the beginning of argv[]
  when ldso is invoked as a command.

- the functionality previously provided by __reloc_self for heavily
  GOT-dependent RISC archs is now the arch-agnostic stage-1.

- arch-specific relocation type codes are mapped directly as macros
  rather than via an inline translation function/switch statement.
2015-04-13 03:04:42 -04:00
..
aarch64 add aarch64 port 2015-03-11 20:12:35 -04:00
arm add function types to arm crt assembly 2013-08-15 14:52:27 -04:00
i386 align stack properly for calling global ctors/dtors on x86[_64] 2013-06-03 17:32:42 -04:00
microblaze microblaze port 2012-09-29 01:05:31 -04:00
mips crt1 must align stack pointer on mips 2012-08-17 21:23:10 -04:00
or1k add or1k (OpenRISC 1000) architecture port 2014-07-18 14:10:23 -04:00
powerpc add missing startfiles for powerpc 2012-11-23 13:31:16 -05:00
superh superh port 2014-02-23 16:15:54 -06:00
x32 import vanilla x86_64 code as x32 2014-02-23 11:07:18 +01:00
x86_64 align stack properly for calling global ctors/dtors on x86[_64] 2013-06-03 17:32:42 -04:00
crt1.c dynamic linker bootstrap overhaul 2015-04-13 03:04:42 -04:00
crti.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
crtn.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
Scrt1.c new mostly-C crt1 implementation 2013-07-26 01:49:14 -04:00