Commit a130be6a authored by Alexey Lapshin's avatar Alexey Lapshin
Browse files

[LLD][NFC] Remove getOffsetInFile() workaround.

Summary:
LLD has workaround for the times when SectionIndex was not passed properly:

LT->getFileLineInfoForAddress(
      S->getOffsetInFile() + Offset, nullptr,
      DILineInfoSpecifier::FileLineInfoKind::AbsoluteFilePath, Info));

S->getOffsetInFile() was added to differentiate offsets between
various sections. Now SectionIndex is properly specified.
Thus it is not necessary to use getOffsetInFile() workaround.
See https://reviews.llvm.org/D58194, https://reviews.llvm.org/D58357.

This patch removes getOffsetInFile() workaround.

Reviewers: ruiu, grimar, MaskRay, espindola

Reviewed By: grimar, MaskRay

Subscribers: emaste, arichardson, llvm-commits

Tags: #llvm, #lld

Differential Revision: https://reviews.llvm.org/D75636
parent 92a295eb
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -99,15 +99,9 @@ LLDDwarfObj<ELFT>::findAux(const InputSectionBase &sec, uint64_t pos,
  // its zero value will terminate the decoding of .debug_ranges prematurely.
  Symbol &s = file->getRelocTargetSym(rel);
  uint64_t val = 0;
  if (auto *dr = dyn_cast<Defined>(&s)) {
  if (auto *dr = dyn_cast<Defined>(&s))
    val = dr->value;

    // FIXME: We should be consistent about always adding the file
    // offset or not.
    if (dr->section->flags & ELF::SHF_ALLOC)
      val += cast<InputSection>(dr->section)->getOffsetInFile();
  }

  DataRefImpl d;
  d.p = getAddend<ELFT>(rel);
  return RelocAddrEntry{secIndex, RelocationRef(d, nullptr),
+1 −3
Original line number Diff line number Diff line
@@ -296,9 +296,7 @@ Optional<DILineInfo> ObjFile<ELFT>::getDILineInfo(InputSectionBase *s,
    }
  }

  // Use fake address calculated by adding section file offset and offset in
  // section. See comments for ObjectInfo class.
  return dwarf->getDILineInfo(s->getOffsetInFile() + offset, sectionIndex);
  return dwarf->getDILineInfo(offset, sectionIndex);
}

ELFFileBase::ELFFileBase(Kind k, MemoryBufferRef mb) : InputFile(k, mb) {
+4 −8
Original line number Diff line number Diff line
@@ -2686,15 +2686,11 @@ readAddressAreas(DWARFContext &dwarf, InputSection *sec) {
    for (DWARFAddressRange &r : *ranges) {
      if (r.SectionIndex == -1ULL)
        continue;
      InputSectionBase *s = sections[r.SectionIndex];
      if (!s || s == &InputSection::discarded || !s->isLive())
        continue;
      // Range list with zero size has no effect.
      if (r.LowPC == r.HighPC)
        continue;
      auto *isec = cast<InputSection>(s);
      uint64_t offset = isec->getOffsetInFile();
      ret.push_back({isec, r.LowPC - offset, r.HighPC - offset, cuIdx});
      InputSectionBase *s = sections[r.SectionIndex];
      if (s && s != &InputSection::discarded && s->isLive())
        if (r.LowPC != r.HighPC)
          ret.push_back({cast<InputSection>(s), r.LowPC, r.HighPC, cuIdx});
    }
    ++cuIdx;
  }