Update for API change for handling mips64el.
llvm-svn: 178695
This commit is contained in:
		
							parent
							
								
									2025e8b820
								
							
						
					
					
						commit
						26cf0b5130
					
				| 
						 | 
					@ -33,16 +33,18 @@ template <class ELFT> class ELFReference LLVM_FINAL : public Reference {
 | 
				
			||||||
  typedef llvm::object::Elf_Rel_Impl<ELFT, true> Elf_Rela;
 | 
					  typedef llvm::object::Elf_Rel_Impl<ELFT, true> Elf_Rela;
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ELFReference(const Elf_Rela *rela, uint64_t offset, const Atom *target)
 | 
					  ELFReference(const Elf_Rela *rela, uint64_t offset, const Atom *target,
 | 
				
			||||||
      : _target(target), _targetSymbolIndex(rela->getSymbol()),
 | 
					               Kind kind, uint32_t symbol)
 | 
				
			||||||
 | 
					      : _target(target), _targetSymbolIndex(symbol),
 | 
				
			||||||
        _offsetInAtom(offset), _addend(rela->r_addend) {
 | 
					        _offsetInAtom(offset), _addend(rela->r_addend) {
 | 
				
			||||||
    _kind = (Kind) rela->getType();
 | 
					    _kind = kind;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ELFReference(const Elf_Rel *rel, uint64_t offset, const Atom *target)
 | 
					  ELFReference(const Elf_Rel *rel, uint64_t offset, const Atom *target,
 | 
				
			||||||
      : _target(target), _targetSymbolIndex(rel->getSymbol()),
 | 
					               Kind kind, uint32_t symbol)
 | 
				
			||||||
 | 
					      : _target(target), _targetSymbolIndex(symbol),
 | 
				
			||||||
        _offsetInAtom(offset), _addend(0) {
 | 
					        _offsetInAtom(offset), _addend(0) {
 | 
				
			||||||
    _kind = (Kind) rel->getType();
 | 
					    _kind = kind;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ELFReference(Kind kind)
 | 
					  ELFReference(Kind kind)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -576,8 +576,12 @@ private:
 | 
				
			||||||
        if (!((rai.r_offset >= symbol->st_value) &&
 | 
					        if (!((rai.r_offset >= symbol->st_value) &&
 | 
				
			||||||
              (rai.r_offset < symbol->st_value + content.size())))
 | 
					              (rai.r_offset < symbol->st_value + content.size())))
 | 
				
			||||||
          continue;
 | 
					          continue;
 | 
				
			||||||
 | 
					        bool isMips64EL = _objFile->isMips64EL();
 | 
				
			||||||
 | 
					        Kind kind = (Kind) rai.getType(isMips64EL);
 | 
				
			||||||
 | 
					        uint32_t symbolIndex = rai.getSymbol(isMips64EL);
 | 
				
			||||||
        auto *ERef = new (_readerStorage)
 | 
					        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);
 | 
					        _references.push_back(ERef);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -586,8 +590,12 @@ private:
 | 
				
			||||||
      for (auto &ri : rri->second) {
 | 
					      for (auto &ri : rri->second) {
 | 
				
			||||||
        if ((ri.r_offset >= symbol->st_value) &&
 | 
					        if ((ri.r_offset >= symbol->st_value) &&
 | 
				
			||||||
            (ri.r_offset < symbol->st_value + content.size())) {
 | 
					            (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)
 | 
					          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
 | 
					          // Read the addend from the section contents
 | 
				
			||||||
          // TODO : We should move the way lld reads relocations totally from
 | 
					          // TODO : We should move the way lld reads relocations totally from
 | 
				
			||||||
          // ELFObjectFile
 | 
					          // ELFObjectFile
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue