diff options
Diffstat (limited to 'lld/MachO/Dwarf.h')
-rw-r--r-- | lld/MachO/Dwarf.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/lld/MachO/Dwarf.h b/lld/MachO/Dwarf.h new file mode 100644 index 000000000000..119f2778fc6b --- /dev/null +++ b/lld/MachO/Dwarf.h @@ -0,0 +1,53 @@ +//===- 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_MACHO_DWARF_H +#define LLD_MACHO_DWARF_H + +#include "llvm/ADT/StringRef.h" +#include "llvm/DebugInfo/DWARF/DWARFObject.h" + +namespace lld { +namespace macho { + +class ObjFile; + +// Implements the interface between LLVM's DWARF-parsing utilities and LLD's +// InputSection structures. +class DwarfObject final : public llvm::DWARFObject { +public: + bool isLittleEndian() const override { return true; } + + llvm::Optional<llvm::RelocAddrEntry> find(const llvm::DWARFSection &sec, + uint64_t pos) const override { + // TODO: implement this + return llvm::None; + } + + void forEachInfoSections( + llvm::function_ref<void(const llvm::DWARFSection &)> f) const override { + f(infoSection); + } + + llvm::StringRef getAbbrevSection() const override { return abbrevSection; } + llvm::StringRef getStrSection() const override { return strSection; } + + // Returns an instance of DwarfObject if the given object file has the + // relevant DWARF debug sections. + static std::unique_ptr<DwarfObject> create(ObjFile *); + +private: + llvm::DWARFSection infoSection; + llvm::StringRef abbrevSection; + llvm::StringRef strSection; +}; + +} // namespace macho +} // namespace lld + +#endif |