[PATCH] D15779: [ELF] - Implemented optimization for R_X86_64_GOTPCREL relocation.

Rafael Ávila de Espíndola via llvm-commits llvm-commits at lists.llvm.org
Wed May 25 07:10:34 PDT 2016

rafael accepted this revision.
rafael added a comment.
This revision is now accepted and ready to land.

LGTM with nits.

Thank you so much for caring this over some many redesigns. I am very happy to see that this fits nicely in the existing infrastructure.

Comment at: ELF/Relocations.cpp:345
@@ -343,3 +344,3 @@
-template <class ELFT>
+template <class ELFT, class uintX_t>
 static RelExpr adjustExpr(const elf::ObjectFile<ELFT> &File, SymbolBody &Body,
Don't make uintX_t a template parameter. You can just use ELFT::uint

Comment at: ELF/Relocations.cpp:490
@@ -484,1 +489,3 @@
+    Expr = adjustExpr(File, Body, IsWrite, Expr, Type,
+                      C.getSectionData().data(), Offset);
     if (HasError)
Use the existing variable Buf.

Comment at: ELF/Target.cpp:531
@@ -518,2 +530,3 @@
   case R_X86_64_GOTPCREL:
+  case R_X86_64_GOTTPOFF:
   case R_X86_64_GOTPCRELX:
Now this is just moving the label, please leave it in the original location.

Comment at: ELF/Target.cpp:744
@@ +743,3 @@
+  // Convert mov foo at GOTPCREL(%rip), %reg to lea foo(%rip), %reg
+  // is the only supported relaxation for now.


More information about the llvm-commits mailing list