40 lines · c
1//===- UnwindInfoSection.h ------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLD_MACHO_UNWIND_INFO_H10#define LLD_MACHO_UNWIND_INFO_H11 12#include "ConcatOutputSection.h"13#include "SyntheticSections.h"14#include "llvm/ADT/MapVector.h"15 16namespace lld::macho {17 18class UnwindInfoSection : public SyntheticSection {19public:20 // If all functions are free of unwind info, we can omit the unwind info21 // section entirely.22 bool isNeeded() const override { return !allEntriesAreOmitted; }23 void addSymbol(const Defined *);24 virtual void prepare() = 0;25 26protected:27 UnwindInfoSection();28 29 llvm::MapVector<std::pair<const InputSection *, uint64_t /*Defined::value*/>,30 const Defined *>31 symbols;32 bool allEntriesAreOmitted = true;33};34 35UnwindInfoSection *makeUnwindInfoSection();36 37} // namespace lld::macho38 39#endif40