diff options
Diffstat (limited to 'lld/ELF/DWARF.cpp')
-rw-r--r-- | lld/ELF/DWARF.cpp | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/lld/ELF/DWARF.cpp b/lld/ELF/DWARF.cpp index a00189a0e3a2..24c44730bf64 100644 --- a/lld/ELF/DWARF.cpp +++ b/lld/ELF/DWARF.cpp @@ -22,9 +22,9 @@ using namespace llvm; using namespace llvm::object; +using namespace lld; +using namespace lld::elf; -namespace lld { -namespace elf { template <class ELFT> LLDDwarfObj<ELFT>::LLDDwarfObj(ObjFile<ELFT> *obj) { for (InputSectionBase *sec : obj->getSections()) { if (!sec) @@ -36,6 +36,7 @@ template <class ELFT> LLDDwarfObj<ELFT>::LLDDwarfObj(ObjFile<ELFT> *obj) { .Case(".debug_gnu_pubnames", &gnuPubnamesSection) .Case(".debug_gnu_pubtypes", &gnuPubtypesSection) .Case(".debug_info", &infoSection) + .Case(".debug_loclists", &loclistsSection) .Case(".debug_ranges", &rangesSection) .Case(".debug_rnglists", &rnglistsSection) .Case(".debug_str_offsets", &strOffsetsSection) @@ -99,15 +100,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), @@ -124,10 +119,7 @@ Optional<RelocAddrEntry> LLDDwarfObj<ELFT>::find(const llvm::DWARFSection &s, return findAux(*sec.sec, pos, sec.sec->template rels<ELFT>()); } -template class LLDDwarfObj<ELF32LE>; -template class LLDDwarfObj<ELF32BE>; -template class LLDDwarfObj<ELF64LE>; -template class LLDDwarfObj<ELF64BE>; - -} // namespace elf -} // namespace lld +template class elf::LLDDwarfObj<ELF32LE>; +template class elf::LLDDwarfObj<ELF32BE>; +template class elf::LLDDwarfObj<ELF64LE>; +template class elf::LLDDwarfObj<ELF64BE>; |