[lld] r178695 - Update for API change for handling mips64el.

Rafael Espindola rafael.espindola at gmail.com
Wed Apr 3 14:03:19 PDT 2013


Author: rafael
Date: Wed Apr  3 16:03:19 2013
New Revision: 178695

URL: http://llvm.org/viewvc/llvm-project?rev=178695&view=rev
Log:
Update for API change for handling mips64el.

Modified:
    lld/trunk/lib/ReaderWriter/ELF/Atoms.h
    lld/trunk/lib/ReaderWriter/ELF/File.h

Modified: lld/trunk/lib/ReaderWriter/ELF/Atoms.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Atoms.h?rev=178695&r1=178694&r2=178695&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Atoms.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Atoms.h Wed Apr  3 16:03:19 2013
@@ -33,16 +33,18 @@ template <class ELFT> class ELFReference
   typedef llvm::object::Elf_Rel_Impl<ELFT, true> Elf_Rela;
 public:
 
-  ELFReference(const Elf_Rela *rela, uint64_t offset, const Atom *target)
-      : _target(target), _targetSymbolIndex(rela->getSymbol()),
+  ELFReference(const Elf_Rela *rela, uint64_t offset, const Atom *target,
+               Kind kind, uint32_t symbol)
+      : _target(target), _targetSymbolIndex(symbol),
         _offsetInAtom(offset), _addend(rela->r_addend) {
-    _kind = (Kind) rela->getType();
+    _kind = kind;
   }
 
-  ELFReference(const Elf_Rel *rel, uint64_t offset, const Atom *target)
-      : _target(target), _targetSymbolIndex(rel->getSymbol()),
+  ELFReference(const Elf_Rel *rel, uint64_t offset, const Atom *target,
+               Kind kind, uint32_t symbol)
+      : _target(target), _targetSymbolIndex(symbol),
         _offsetInAtom(offset), _addend(0) {
-    _kind = (Kind) rel->getType();
+    _kind = kind;
   }
 
   ELFReference(Kind kind)

Modified: lld/trunk/lib/ReaderWriter/ELF/File.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/File.h?rev=178695&r1=178694&r2=178695&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/File.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/File.h Wed Apr  3 16:03:19 2013
@@ -576,8 +576,12 @@ private:
         if (!((rai.r_offset >= symbol->st_value) &&
               (rai.r_offset < symbol->st_value + content.size())))
           continue;
+        bool isMips64EL = _objFile->isMips64EL();
+        Kind kind = (Kind) rai.getType(isMips64EL);
+        uint32_t symbolIndex = rai.getSymbol(isMips64EL);
         auto *ERef = new (_readerStorage)
-            ELFReference<ELFT>(&rai, rai.r_offset - symbol->st_value, nullptr);
+            ELFReference<ELFT>(&rai, rai.r_offset - symbol->st_value, nullptr,
+                               kind, symbolIndex);
         _references.push_back(ERef);
       }
 
@@ -586,8 +590,12 @@ private:
       for (auto &ri : rri->second) {
         if ((ri.r_offset >= symbol->st_value) &&
             (ri.r_offset < symbol->st_value + content.size())) {
+          bool isMips64EL = _objFile->isMips64EL();
+          Kind kind = (Kind) ri.getType(isMips64EL);
+          uint32_t symbolIndex = ri.getSymbol(isMips64EL);
           auto *ERef = new (_readerStorage)
-              ELFReference<ELFT>(&ri, ri.r_offset - symbol->st_value, nullptr);
+              ELFReference<ELFT>(&ri, ri.r_offset - symbol->st_value, nullptr,
+                                 kind, symbolIndex);
           // Read the addend from the section contents
           // TODO : We should move the way lld reads relocations totally from
           // ELFObjectFile





More information about the llvm-commits mailing list