brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 826573b Raw
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