[lld] r298797 - Sort. NFC.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Sat Mar 25 21:10:43 PDT 2017


Author: ruiu
Date: Sat Mar 25 23:10:43 2017
New Revision: 298797

URL: http://llvm.org/viewvc/llvm-project?rev=298797&view=rev
Log:
Sort. NFC.

Modified:
    lld/trunk/ELF/InputSection.cpp
    lld/trunk/ELF/Relocations.h

Modified: lld/trunk/ELF/InputSection.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputSection.cpp?rev=298797&r1=298796&r2=298797&view=diff
==============================================================================
--- lld/trunk/ELF/InputSection.cpp (original)
+++ lld/trunk/ELF/InputSection.cpp Sat Mar 25 23:10:43 2017
@@ -339,76 +339,49 @@ static typename ELFT::uint
 getRelocTargetVA(uint32_t Type, int64_t A, typename ELFT::uint P,
                  const SymbolBody &Body, RelExpr Expr) {
   switch (Expr) {
-  case R_HINT:
-  case R_NONE:
-  case R_TLSDESC_CALL:
-    llvm_unreachable("cannot relocate hint relocs");
-  case R_TLSLD:
-    return In<ELFT>::Got->getTlsIndexOff() + A - In<ELFT>::Got->getSize();
-  case R_TLSLD_PC:
-    return In<ELFT>::Got->getTlsIndexVA() + A - P;
-  case R_PPC_TOC:
-    return getPPC64TocBase() + A;
-  case R_TLSGD:
-    return In<ELFT>::Got->getGlobalDynOffset(Body) + A -
-           In<ELFT>::Got->getSize();
-  case R_TLSGD_PC:
-    return In<ELFT>::Got->getGlobalDynAddr(Body) + A - P;
-  case R_TLSDESC:
-    return In<ELFT>::Got->getGlobalDynAddr(Body) + A;
-  case R_TLSDESC_PAGE:
-    return getAArch64Page(In<ELFT>::Got->getGlobalDynAddr(Body) + A) -
-           getAArch64Page(P);
-  case R_PLT:
-    return Body.getPltVA() + A;
-  case R_PLT_PC:
-  case R_PPC_PLT_OPD:
-    return Body.getPltVA() + A - P;
-  case R_SIZE:
-    return Body.getSize<ELFT>() + A;
+  case R_ABS:
+  case R_RELAX_GOT_PC_NOPIC:
+    return Body.getVA(A);
+  case R_GOT:
+  case R_RELAX_TLS_GD_TO_IE_ABS:
+    return Body.getGotVA<ELFT>() + A;
+  case R_GOTONLY_PC:
+    return In<ELFT>::Got->getVA() + A - P;
+  case R_GOTONLY_PC_FROM_END:
+    return In<ELFT>::Got->getVA() + A - P + In<ELFT>::Got->getSize();
   case R_GOTREL:
     return Body.getVA(A) - In<ELFT>::Got->getVA();
   case R_GOTREL_FROM_END:
     return Body.getVA(A) - In<ELFT>::Got->getVA() - In<ELFT>::Got->getSize();
-  case R_RELAX_TLS_GD_TO_IE_END:
   case R_GOT_FROM_END:
+  case R_RELAX_TLS_GD_TO_IE_END:
     return Body.getGotOffset() + A - In<ELFT>::Got->getSize();
-  case R_RELAX_TLS_GD_TO_IE_ABS:
-  case R_GOT:
-    return Body.getGotVA<ELFT>() + A;
-  case R_RELAX_TLS_GD_TO_IE_PAGE_PC:
+  case R_GOT_OFF:
+    return Body.getGotOffset() + A;
   case R_GOT_PAGE_PC:
+  case R_RELAX_TLS_GD_TO_IE_PAGE_PC:
     return getAArch64Page(Body.getGotVA<ELFT>() + A) - getAArch64Page(P);
-  case R_RELAX_TLS_GD_TO_IE:
   case R_GOT_PC:
+  case R_RELAX_TLS_GD_TO_IE:
     return Body.getGotVA<ELFT>() + A - P;
-  case R_GOTONLY_PC:
-    return In<ELFT>::Got->getVA() + A - P;
-  case R_GOTONLY_PC_FROM_END:
-    return In<ELFT>::Got->getVA() + A - P + In<ELFT>::Got->getSize();
-  case R_RELAX_TLS_LD_TO_LE:
-  case R_RELAX_TLS_IE_TO_LE:
-  case R_RELAX_TLS_GD_TO_LE:
-  case R_TLS:
-    // A weak undefined TLS symbol resolves to the base of the TLS
-    // block, i.e. gets a value of zero. If we pass --gc-sections to
-    // lld and .tbss is not referenced, it gets reclaimed and we don't
-    // create a TLS program header. Therefore, we resolve this
-    // statically to zero.
-    if (Body.isTls() && (Body.isLazy() || Body.isUndefined()) &&
-        Body.symbol()->isWeak())
-      return 0;
-    if (Target->TcbSize)
-      return Body.getVA(A) + alignTo(Target->TcbSize, Out::TlsPhdr->p_align);
-    return Body.getVA(A) - Out::TlsPhdr->p_memsz;
-  case R_RELAX_TLS_GD_TO_LE_NEG:
-  case R_NEG_TLS:
-    return Out::TlsPhdr->p_memsz - Body.getVA(A);
-  case R_ABS:
-  case R_RELAX_GOT_PC_NOPIC:
-    return Body.getVA(A);
-  case R_GOT_OFF:
-    return Body.getGotOffset() + A;
+  case R_HINT:
+  case R_NONE:
+  case R_TLSDESC_CALL:
+    llvm_unreachable("cannot relocate hint relocs");
+  case R_MIPS_GOTREL:
+    return Body.getVA(A) - In<ELFT>::MipsGot->getGp();
+  case R_MIPS_GOT_GP:
+    return In<ELFT>::MipsGot->getGp() + A;
+  case R_MIPS_GOT_GP_PC: {
+    // R_MIPS_LO16 expression has R_MIPS_GOT_GP_PC type iif the target
+    // is _gp_disp symbol. In that case we should use the following
+    // formula for calculation "AHL + GP - P + 4". For details see p. 4-19 at
+    // ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf
+    uint64_t V = In<ELFT>::MipsGot->getGp() + A - P;
+    if (Type == R_MIPS_LO16)
+      V += 4;
+    return V;
+  }
   case R_MIPS_GOT_LOCAL_PAGE:
     // If relocation against MIPS local symbol requires GOT entry, this entry
     // should be initialized by 'page address'. This address is high 16-bits
@@ -424,20 +397,6 @@ getRelocTargetVA(uint32_t Type, int64_t
     return In<ELFT>::MipsGot->getVA() +
            In<ELFT>::MipsGot->getBodyEntryOffset(Body, A) -
            In<ELFT>::MipsGot->getGp();
-  case R_MIPS_GOTREL:
-    return Body.getVA(A) - In<ELFT>::MipsGot->getGp();
-  case R_MIPS_GOT_GP:
-    return In<ELFT>::MipsGot->getGp() + A;
-  case R_MIPS_GOT_GP_PC: {
-    // R_MIPS_LO16 expression has R_MIPS_GOT_GP_PC type iif the target
-    // is _gp_disp symbol. In that case we should use the following
-    // formula for calculation "AHL + GP - P + 4". For details see p. 4-19 at
-    // ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf
-    uint64_t V = In<ELFT>::MipsGot->getGp() + A - P;
-    if (Type == R_MIPS_LO16)
-      V += 4;
-    return V;
-  }
   case R_MIPS_TLSGD:
     return In<ELFT>::MipsGot->getVA() + In<ELFT>::MipsGot->getTlsOffset() +
            In<ELFT>::MipsGot->getGlobalDynOffset(Body) -
@@ -445,6 +404,26 @@ getRelocTargetVA(uint32_t Type, int64_t
   case R_MIPS_TLSLD:
     return In<ELFT>::MipsGot->getVA() + In<ELFT>::MipsGot->getTlsOffset() +
            In<ELFT>::MipsGot->getTlsIndexOff() - In<ELFT>::MipsGot->getGp();
+  case R_PAGE_PC:
+  case R_PLT_PAGE_PC:
+    if (Body.isUndefined() && !Body.isLocal() && Body.symbol()->isWeak())
+      return getAArch64Page(A);
+    return getAArch64Page(Body.getVA(A)) - getAArch64Page(P);
+  case R_PC:
+    if (Body.isUndefined() && !Body.isLocal() && Body.symbol()->isWeak()) {
+      // On ARM and AArch64 a branch to an undefined weak resolves to the
+      // next instruction, otherwise the place.
+      if (Config->EMachine == EM_ARM)
+        return getARMUndefinedRelativeWeakVA(Type, A, P);
+      if (Config->EMachine == EM_AARCH64)
+        return getAArch64UndefinedRelativeWeakVA(Type, A, P);
+    }
+    return Body.getVA(A) - P;
+  case R_PLT:
+    return Body.getPltVA() + A;
+  case R_PLT_PC:
+  case R_PPC_PLT_OPD:
+    return Body.getPltVA() + A - P;
   case R_PPC_OPD: {
     uint64_t SymVA = Body.getVA(A);
     // If we have an undefined weak symbol, we might get here with a symbol
@@ -463,22 +442,44 @@ getRelocTargetVA(uint32_t Type, int64_t
     }
     return SymVA - P;
   }
-  case R_PC:
-    if (Body.isUndefined() && !Body.isLocal() && Body.symbol()->isWeak()) {
-      // On ARM and AArch64 a branch to an undefined weak resolves to the
-      // next instruction, otherwise the place.
-      if (Config->EMachine == EM_ARM)
-        return getARMUndefinedRelativeWeakVA(Type, A, P);
-      if (Config->EMachine == EM_AARCH64)
-        return getAArch64UndefinedRelativeWeakVA(Type, A, P);
-    }
+  case R_PPC_TOC:
+    return getPPC64TocBase() + A;
   case R_RELAX_GOT_PC:
     return Body.getVA(A) - P;
-  case R_PLT_PAGE_PC:
-  case R_PAGE_PC:
-    if (Body.isUndefined() && !Body.isLocal() && Body.symbol()->isWeak())
-      return getAArch64Page(A);
-    return getAArch64Page(Body.getVA(A)) - getAArch64Page(P);
+  case R_RELAX_TLS_GD_TO_LE:
+  case R_RELAX_TLS_IE_TO_LE:
+  case R_RELAX_TLS_LD_TO_LE:
+  case R_TLS:
+    // A weak undefined TLS symbol resolves to the base of the TLS
+    // block, i.e. gets a value of zero. If we pass --gc-sections to
+    // lld and .tbss is not referenced, it gets reclaimed and we don't
+    // create a TLS program header. Therefore, we resolve this
+    // statically to zero.
+    if (Body.isTls() && (Body.isLazy() || Body.isUndefined()) &&
+        Body.symbol()->isWeak())
+      return 0;
+    if (Target->TcbSize)
+      return Body.getVA(A) + alignTo(Target->TcbSize, Out::TlsPhdr->p_align);
+    return Body.getVA(A) - Out::TlsPhdr->p_memsz;
+  case R_RELAX_TLS_GD_TO_LE_NEG:
+  case R_NEG_TLS:
+    return Out::TlsPhdr->p_memsz - Body.getVA(A);
+  case R_SIZE:
+    return Body.getSize<ELFT>() + A;
+  case R_TLSDESC:
+    return In<ELFT>::Got->getGlobalDynAddr(Body) + A;
+  case R_TLSDESC_PAGE:
+    return getAArch64Page(In<ELFT>::Got->getGlobalDynAddr(Body) + A) -
+           getAArch64Page(P);
+  case R_TLSGD:
+    return In<ELFT>::Got->getGlobalDynOffset(Body) + A -
+           In<ELFT>::Got->getSize();
+  case R_TLSGD_PC:
+    return In<ELFT>::Got->getGlobalDynAddr(Body) + A - P;
+  case R_TLSLD:
+    return In<ELFT>::Got->getTlsIndexOff() + A - In<ELFT>::Got->getSize();
+  case R_TLSLD_PC:
+    return In<ELFT>::Got->getTlsIndexVA() + A - P;
   }
   llvm_unreachable("Invalid expression");
 }

Modified: lld/trunk/ELF/Relocations.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Relocations.h?rev=298797&r1=298796&r2=298797&view=diff
==============================================================================
--- lld/trunk/ELF/Relocations.h (original)
+++ lld/trunk/ELF/Relocations.h Sat Mar 25 23:10:43 2017
@@ -34,12 +34,12 @@ enum RelExpr {
   R_GOT_PAGE_PC,
   R_GOT_PC,
   R_HINT,
-  R_MIPS_GOT_LOCAL_PAGE,
-  R_MIPS_GOT_OFF,
-  R_MIPS_GOT_OFF32,
   R_MIPS_GOTREL,
   R_MIPS_GOT_GP,
   R_MIPS_GOT_GP_PC,
+  R_MIPS_GOT_LOCAL_PAGE,
+  R_MIPS_GOT_OFF,
+  R_MIPS_GOT_OFF32,
   R_MIPS_TLSGD,
   R_MIPS_TLSLD,
   R_NEG_TLS,
@@ -47,16 +47,16 @@ enum RelExpr {
   R_PAGE_PC,
   R_PC,
   R_PLT,
-  R_PLT_PC,
   R_PLT_PAGE_PC,
+  R_PLT_PC,
   R_PPC_OPD,
   R_PPC_PLT_OPD,
   R_PPC_TOC,
   R_RELAX_GOT_PC,
   R_RELAX_GOT_PC_NOPIC,
   R_RELAX_TLS_GD_TO_IE,
-  R_RELAX_TLS_GD_TO_IE_END,
   R_RELAX_TLS_GD_TO_IE_ABS,
+  R_RELAX_TLS_GD_TO_IE_END,
   R_RELAX_TLS_GD_TO_IE_PAGE_PC,
   R_RELAX_TLS_GD_TO_LE,
   R_RELAX_TLS_GD_TO_LE_NEG,
@@ -65,8 +65,8 @@ enum RelExpr {
   R_SIZE,
   R_TLS,
   R_TLSDESC,
-  R_TLSDESC_PAGE,
   R_TLSDESC_CALL,
+  R_TLSDESC_PAGE,
   R_TLSGD,
   R_TLSGD_PC,
   R_TLSLD,




More information about the llvm-commits mailing list