[lld] r248844 - ELF2: Do not create ArrayRefs and use const arrays instead. NFC.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 29 16:00:49 PDT 2015


Author: ruiu
Date: Tue Sep 29 18:00:47 2015
New Revision: 248844

URL: http://llvm.org/viewvc/llvm-project?rev=248844&view=rev
Log:
ELF2: Do not create ArrayRefs and use const arrays instead. NFC.

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=248844&r1=248843&r2=248844&view=diff
==============================================================================
--- lld/trunk/ELF/Target.cpp (original)
+++ lld/trunk/ELF/Target.cpp Tue Sep 29 18:00:47 2015
@@ -37,16 +37,11 @@ X86TargetInfo::X86TargetInfo() {
 
 void X86TargetInfo::writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
                                   uint64_t PltEntryAddr) const {
-  ArrayRef<uint8_t> Jmp = {0xff, 0x25}; // jmpl *val
-  memcpy(Buf, Jmp.data(), Jmp.size());
-  Buf += Jmp.size();
-
+  // jmpl *val; nop; nop
+  const uint8_t Inst[] = {0xff, 0x25, 0, 0, 0, 0, 0x90, 0x90};
+  memcpy(Buf, Inst, sizeof(Inst));
   assert(isUInt<32>(GotEntryAddr));
-  write32le(Buf, GotEntryAddr);
-  Buf += 4;
-
-  ArrayRef<uint8_t> Nops = {0x90, 0x90};
-  memcpy(Buf, Nops.data(), Nops.size());
+  write32le(Buf + 2, GotEntryAddr);
 }
 
 bool X86TargetInfo::relocNeedsGot(uint32_t Type) const {
@@ -107,18 +102,14 @@ X86_64TargetInfo::X86_64TargetInfo() {
 
 void X86_64TargetInfo::writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
                                      uint64_t PltEntryAddr) const {
-  ArrayRef<uint8_t> Jmp = {0xff, 0x25}; // jmpq *val(%rip)
-  memcpy(Buf, Jmp.data(), Jmp.size());
-  Buf += Jmp.size();
+  // jmpq *val(%rip); nop; nop
+  const uint8_t Inst[] = {0xff, 0x25, 0, 0, 0, 0, 0x90, 0x90};
+  memcpy(Buf, Inst, sizeof(Inst));
 
   uintptr_t NextPC = PltEntryAddr + 6;
   intptr_t Delta = GotEntryAddr - NextPC;
   assert(isInt<32>(Delta));
-  write32le(Buf, Delta);
-  Buf += 4;
-
-  ArrayRef<uint8_t> Nops = {0x90, 0x90};
-  memcpy(Buf, Nops.data(), Nops.size());
+  write32le(Buf + 2, Delta);
 }
 
 bool X86_64TargetInfo::relocNeedsGot(uint32_t Type) const {




More information about the llvm-commits mailing list