Mercurial > hg > CbC > CbC_llvm
view lld/ELF/DWARF.h @ 192:d7606dcf6fce
Added tag llvm10 for changeset 0572611fdcc8
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 14 Dec 2020 18:01:34 +0900 |
parents | 0572611fdcc8 |
children | 2e18cbf3894f |
line wrap: on
line source
//===- DWARF.h -----------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===-------------------------------------------------------------------===// #ifndef LLD_ELF_DWARF_H #define LLD_ELF_DWARF_H #include "InputFiles.h" #include "llvm/ADT/STLExtras.h" #include "llvm/DebugInfo/DWARF/DWARFContext.h" #include "llvm/Object/ELF.h" namespace lld { namespace elf { class InputSection; struct LLDDWARFSection final : public llvm::DWARFSection { InputSectionBase *sec = nullptr; }; template <class ELFT> class LLDDwarfObj final : public llvm::DWARFObject { public: explicit LLDDwarfObj(ObjFile<ELFT> *obj); void forEachInfoSections( llvm::function_ref<void(const llvm::DWARFSection &)> f) const override { f(infoSection); } const llvm::DWARFSection &getLoclistsSection() const override { return loclistsSection; } const llvm::DWARFSection &getRangesSection() const override { return rangesSection; } const llvm::DWARFSection &getRnglistsSection() const override { return rnglistsSection; } const llvm::DWARFSection &getStrOffsetsSection() const override { return strOffsetsSection; } const llvm::DWARFSection &getLineSection() const override { return lineSection; } const llvm::DWARFSection &getAddrSection() const override { return addrSection; } const llvm::DWARFSection &getGnuPubnamesSection() const override { return gnuPubnamesSection; } const llvm::DWARFSection &getGnuPubtypesSection() const override { return gnuPubtypesSection; } StringRef getFileName() const override { return ""; } StringRef getAbbrevSection() const override { return abbrevSection; } StringRef getStrSection() const override { return strSection; } StringRef getLineStrSection() const override { return lineStrSection; } 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 gnuPubnamesSection; LLDDWARFSection gnuPubtypesSection; LLDDWARFSection infoSection; LLDDWARFSection loclistsSection; LLDDWARFSection rangesSection; LLDDWARFSection rnglistsSection; LLDDWARFSection strOffsetsSection; LLDDWARFSection lineSection; LLDDWARFSection addrSection; StringRef abbrevSection; StringRef strSection; StringRef lineStrSection; }; } // namespace elf } // namespace lld #endif