generate PIC code.

Change-Id: I6740c30e2782ae203aa7ddaeaf3b233e90de9c4d
Add linker support for PIE

Modify the dynamic linker so that executables can be loaded
at locations other than 0x00000000.

Modify crtbegin* so that non-PIC compilant "thumb interwork
veneers" are not created by the linker.

Bug: 5323301
Change-Id: Iece0272e2b708c79034f302c20160e1fe9029588
 linker: Fix the computation of si->base

 The computation of si->base assumed that the first entry in the
 program header table is a PT_PHDR. This results in the dynamic
 linker crashing with a SIGSEGV/MAPERR when trying to load some
 of the NDK unit test programs, which happen to have an EXIDX
 header first, followed byu a PHDR one.

 This patch fixes the computation by parsing the program header
 table, looking explicitely for the PHDR entry. This fixes the
 load of the NDK unit test programs, and doesn't affect system
 libraries.

 Fix taken from David 'Digit' Turner <digit@google.com>
 https://android-review.googlesource.com/#/c/36539/
linker: set LOCAL_NO_CRT := true

Use LOCAL_NO_CRT to prevent linking against crtbegin.o, rather than
messing with build rules. This also prevents linking against crtend.o,
which isn't needed for the linker.

Fix taken from Nick Kralevich <nnk@google.com>
https://android-review.googlesource.com/#/c/36600/
 Make the linker relocatable.

 Previously, the linker always loaded itself into the same
 location in memory, which inhibited the effectiveness of Android's
 ASLR implementation. Modify the linker code so it can be relocatable
 and link itself at runtime.

 Fix from Nick Kralevich <nnk@google.com>
 https://android-review.googlesource.com/#/c/36601/