[PATCH] D27406: [LLD][ELF] Ifunc implementation using synthetic sections

Peter Smith via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 7 08:05:02 PST 2016


peter.smith updated this revision to Diff 80597.
peter.smith added a comment.

I've updated the implementation with suggested changes. I've added some tests for AArch64, ARM and x86_64 to cover the ordering of the IRELATIVE relocations, and a check for IRELATIVE to non-preemptible symbols in a shared library.

The x86_32 problem is simple to fix as it needs to do the same thing as ARM and write the getVA() of the ifunc resolver instead of getPltVA(). This can come in a separate patch.


https://reviews.llvm.org/D27406

Files:
  ELF/Relocations.cpp
  ELF/Symbols.cpp
  ELF/Symbols.h
  ELF/SyntheticSections.cpp
  ELF/SyntheticSections.h
  ELF/Writer.cpp
  test/ELF/Inputs/arm-shared.s
  test/ELF/Inputs/shared2-x86-64.s
  test/ELF/aarch64-gnu-ifunc-plt.s
  test/ELF/aarch64-gnu-ifunc.s
  test/ELF/arm-gnu-ifunc-plt.s
  test/ELF/arm-gnu-ifunc.s
  test/ELF/gnu-ifunc-i386.s
  test/ELF/gnu-ifunc-plt.s
  test/ELF/gnu-ifunc-shared.s
  test/ELF/gnu-ifunc.s

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D27406.80597.patch
Type: text/x-patch
Size: 41949 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161207/8d5980b9/attachment.bin>


More information about the llvm-commits mailing list