[PATCH] D14993: [ELF] - simplify Target interface, relocPointsToGot() removed.

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 25 12:23:29 PST 2015


This revision was automatically updated to reflect the committed changes.
Closed by commit rL254088: [ELF] - simplify Target interface, relocPointsToGot() removed. (authored by grimar).

Changed prior to commit:
  http://reviews.llvm.org/D14993?vs=41163&id=41167#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D14993

Files:
  lld/trunk/ELF/InputSection.cpp
  lld/trunk/ELF/Target.cpp
  lld/trunk/ELF/Target.h

Index: lld/trunk/ELF/Target.cpp
===================================================================
--- lld/trunk/ELF/Target.cpp
+++ lld/trunk/ELF/Target.cpp
@@ -53,7 +53,6 @@
                      uint64_t PltEntryAddr, int32_t Index) const override;
   bool relocNeedsCopy(uint32_t Type, const SymbolBody &S) const override;
   bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
-  bool relocPointsToGot(uint32_t Type) const override;
   bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
   void relocateOne(uint8_t *Loc, uint8_t *BufEnd, uint32_t Type, uint64_t P,
                    uint64_t SA) const override;
@@ -166,8 +165,6 @@
 
 unsigned TargetInfo::getPltRefReloc(unsigned Type) const { return PCRelReloc; }
 
-bool TargetInfo::relocPointsToGot(uint32_t Type) const { return false; }
-
 bool TargetInfo::isRelRelative(uint32_t Type) const { return true; }
 
 void TargetInfo::relocateTlsOptimize(uint8_t *Loc, uint8_t *BufEnd, uint64_t P,
@@ -209,10 +206,6 @@
   return Type == R_386_GOT32 || relocNeedsPlt(Type, S);
 }
 
-bool X86TargetInfo::relocPointsToGot(uint32_t Type) const {
-  return Type == R_386_GOTPC;
-}
-
 bool X86TargetInfo::relocNeedsPlt(uint32_t Type, const SymbolBody &S) const {
   return Type == R_386_PLT32 || (Type == R_386_PC32 && S.isShared());
 }
@@ -223,6 +216,9 @@
   case R_386_GOT32:
     add32le(Loc, SA - Out<ELF32LE>::Got->getVA());
     break;
+  case R_386_GOTPC:
+    add32le(Loc, SA + Out<ELF32LE>::Got->getVA() - P);
+    break;
   case R_386_PC32:
     add32le(Loc, SA - P);
     break;
Index: lld/trunk/ELF/InputSection.cpp
===================================================================
--- lld/trunk/ELF/InputSection.cpp
+++ lld/trunk/ELF/InputSection.cpp
@@ -148,9 +148,6 @@
       SymVA = Out<ELFT>::Got->getEntryAddr(Body);
       Type = Body.isTLS() ? Target->getTlsGotReloc()
                           : Target->getGotRefReloc(Type);
-    } else if (Target->relocPointsToGot(Type)) {
-      SymVA = Out<ELFT>::Got->getVA();
-      Type = Target->getPCRelReloc();
     } else if (!Target->relocNeedsCopy(Type, Body) &&
                isa<SharedSymbol<ELFT>>(Body)) {
       continue;
Index: lld/trunk/ELF/Target.h
===================================================================
--- lld/trunk/ELF/Target.h
+++ lld/trunk/ELF/Target.h
@@ -24,7 +24,6 @@
   unsigned getPageSize() const { return PageSize; }
   uint64_t getVAStart() const;
   unsigned getCopyReloc() const { return CopyReloc; }
-  unsigned getPCRelReloc() const { return PCRelReloc; }
   unsigned getGotReloc() const { return GotReloc; }
   unsigned getPltReloc() const { return PltReloc; }
   unsigned getRelativeReloc() const { return RelativeReloc; }
@@ -55,7 +54,6 @@
   virtual bool isRelRelative(uint32_t Type) const;
   virtual bool relocNeedsCopy(uint32_t Type, const SymbolBody &S) const;
   virtual bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const = 0;
-  virtual bool relocPointsToGot(uint32_t Type) const;
   virtual bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const = 0;
   virtual void relocateOne(uint8_t *Loc, uint8_t *BufEnd, uint32_t Type,
                            uint64_t P, uint64_t SA) const = 0;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D14993.41167.patch
Type: text/x-patch
Size: 3215 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151125/1fb89406/attachment.bin>


More information about the llvm-commits mailing list