[lld] r251692 - Comments about how values were calculated for functions below were added.

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 30 02:11:13 PDT 2015


Author: grimar
Date: Fri Oct 30 04:11:12 2015
New Revision: 251692

URL: http://llvm.org/viewvc/llvm-project?rev=251692&view=rev
Log:
Comments about how values were calculated for functions below were added.
1. X86_64TargetInfo::writePltZeroEntry.
2. X86_64TargetInfo::writePltEntry.

Modified:
    lld/trunk/ELF/Target.cpp

Modified: lld/trunk/ELF/Target.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.cpp?rev=251692&r1=251691&r2=251692&view=diff
==============================================================================
--- lld/trunk/ELF/Target.cpp (original)
+++ lld/trunk/ELF/Target.cpp Fri Oct 30 04:11:12 2015
@@ -228,6 +228,10 @@ void X86_64TargetInfo::writePltZeroEntry
       0xff, 0x25, 0x00, 0x00, 0x00, 0x00, // jmp *GOT+16(%rip)
       0x0f, 0x1f, 0x40, 0x00              // nopl 0x0(rax)
   };
+  // 1. NextPC = PltEntryAddr + 6,
+  // GotEntryAddr - NextPC + 8 = GotEntryAddr - PltEntryAddr + 2.
+  // 2. NextPC = PltEntryAddr + 6 + 6,
+  // GotEntryAddr - NextPC + 16 = GotEntryAddr - PltEntryAddr + 4.
   memcpy(Buf, PltData, sizeof(PltData));
   write32le(Buf + 2, GotEntryAddr - PltEntryAddr + 2); // GOT+8
   write32le(Buf + 8, GotEntryAddr - PltEntryAddr + 4); // GOT+16
@@ -243,6 +247,12 @@ void X86_64TargetInfo::writePltEntry(uin
   };
   memcpy(Buf, Inst, sizeof(Inst));
 
+  // 1. NextPC = PltEntryAddr + 6,
+  // GotEntryAddr - NextPC = GotEntryAddr - PltEntryAddr - 6.
+  // 2. Index is just and index of PLT record.
+  // 3. NextPC = PltEntryAddr + 6 + 5 + 5 = PltEntryAddr + 16,
+  // PltEntryAddr - Index * PltEntrySize - PltZeroEntrySize - NextPC =
+  // -Index * PltEntrySize - PltZeroEntrySize - 16.
   write32le(Buf + 2, GotEntryAddr - PltEntryAddr - 6);
   write32le(Buf + 7, Index);
   write32le(Buf + 12, -Index * PltEntrySize - PltZeroEntrySize - 16);




More information about the llvm-commits mailing list