Due to issues like https://reviews.llvm.org/D70570 (with more details @ https://reviews.llvm.org/D38554 ), clang's support for freestanding / static model / "EABI" code is still lacking on ppc32, and things like compiler builtins assume the availability of a PLT.
As such, implement the missing linker bits on ppc32 to support jump tables.
However, since GCC4 currently crashes on linker sets when building PIC on powerpc32, defer the actual PIC switch to clang flag day. ( D22798)
- Add elf_cpu_parse_dynamic() to allow MD code to do its own DYNAMIC parsing. Add stubs to all link_elf.c platforms.
- Implement jump table relocation for ppc32 secure-plt LD_BIND_NOW style and add a check to ensure it is only loading secure-plt modules (using elf_cpu_parse_dynamic())
Build kernel modules -fPIC on powerpc*.Moved to D22798 for flag day.- Poison the powerpc32 runtime resolver to ensure any attempts to call it cause an appropriate panic instead of a branch-to-zero.
Todo:
Figure out why dtrace is broken again.Was due to CTF type bloat, again.- Use elf_cpu_parse_dynamic() to make ppc64 module loading more robust?
ELFv1 (gcc4) testing.ELFv1 works with -fPIC (and doesn't generate PLT slots.)
Contra indications:
- Using PIC kernel modules crashes GCC4 when compiling module<->module linker sets. (accf_http, etc.) As such, actual flipping of the switch will happen on the powerpc* clang flag day.