diff options
-rw-r--r-- | lld/ELF/DWARF.h | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/lld/ELF/DWARF.h b/lld/ELF/DWARF.h index adbbcfcf866..e397f3a199f 100644 --- a/lld/ELF/DWARF.h +++ b/lld/ELF/DWARF.h @@ -24,44 +24,54 @@ struct LLDDWARFSection final : public llvm::DWARFSection { }; template <class ELFT> class LLDDwarfObj final : public llvm::DWARFObject { - LLDDWARFSection InfoSection; - LLDDWARFSection RangeSection; - LLDDWARFSection LineSection; - StringRef AbbrevSection; - StringRef GnuPubNamesSection; - StringRef GnuPubTypesSection; - StringRef StrSection; - - template <class RelTy> - llvm::Optional<llvm::RelocAddrEntry> findAux(const InputSectionBase &Sec, - uint64_t Pos, - ArrayRef<RelTy> Rels) const; - public: explicit LLDDwarfObj(ObjFile<ELFT> *Obj); + const llvm::DWARFSection &getInfoSection() const override { return InfoSection; } + const llvm::DWARFSection &getRangeSection() const override { return RangeSection; } + const llvm::DWARFSection &getLineSection() const override { return LineSection; } + StringRef getFileName() const override { return ""; } StringRef getAbbrevSection() const override { return AbbrevSection; } StringRef getStringSection() const override { return StrSection; } + StringRef getGnuPubNamesSection() const override { return GnuPubNamesSection; } + StringRef getGnuPubTypesSection() const override { return GnuPubTypesSection; } + bool isLittleEndian() const override { return ELFT::TargetEndianness == llvm::support::little; } + llvm::Optional<llvm::RelocAddrEntry> find(const llvm::DWARFSection &Sec, uint64_t Pos) const override; + +private: + template <class RelTy> + llvm::Optional<llvm::RelocAddrEntry> findAux(const InputSectionBase &Sec, + uint64_t Pos, + ArrayRef<RelTy> Rels) const; + + LLDDWARFSection InfoSection; + LLDDWARFSection RangeSection; + LLDDWARFSection LineSection; + + StringRef AbbrevSection; + StringRef GnuPubNamesSection; + StringRef GnuPubTypesSection; + StringRef StrSection; }; } // namespace elf |