This patch implements basic variant of lazy loading for x86_x64 and for X86 targets.
What was done: 1) .got.plt section is created for functions that requires PLT. .got.plt has 3 predefined empty entries now that are required for dynamic linker. Also other new items created are configured to have correct jump to PLT[N]. 2) PLT section now has PLT[0] entry, also others ones are configured to support PLT->GOT(.got.plt) calls. 3) Implemented .rel[a].plt sections (based on patch http://reviews.llvm.org/D13569). 4) Fixed plt relocations types (based on patch http://reviews.llvm.org/D13589). NOTES: The .plt.got zero entry is still empty now. According to ELF specification it should hold the address of the dynamic structure, referenced with the symbol _DYNAMIC. The _DYNAMIC entry points to the .dynamic section which contains information used by the ELF interpreter to setup the binary. Differential Revision: http://reviews.llvm.org/D13651 llvm-svn: 250169
Loading
Please sign in to comment