#include "MarkLive.h"
#include "Config.h"
#include "OutputSegment.h"
#include "SymbolTable.h"
#include "Symbols.h"
#include "UnwindInfoSection.h"
#include "lld/Common/ErrorHandler.h"
#include "llvm/Support/TimeProfiler.h"
#include "mach-o/compact_unwind_encoding.h"
namespace lld::macho {
usingnamespacellvm;
usingnamespacellvm::MachO;
struct WhyLiveEntry { … };
class MarkLive { … };
template <bool RecordWhyLive> class MarkLiveImpl : public MarkLive { … };
template <bool RecordWhyLive>
void MarkLiveImpl<RecordWhyLive>::enqueue(
InputSection *isec, uint64_t off,
const typename MarkLiveImpl<RecordWhyLive>::WorklistEntry *prev) { … }
static void printWhyLive(const Symbol *s, const WhyLiveEntry *prev) { … }
template <bool RecordWhyLive>
void MarkLiveImpl<RecordWhyLive>::addSym(
Symbol *s,
const typename MarkLiveImpl<RecordWhyLive>::WorklistEntry *prev) { … }
template <bool RecordWhyLive>
const InputSection *MarkLiveImpl<RecordWhyLive>::getInputSection(
const MarkLiveImpl<RecordWhyLive>::WorklistEntry *entry) const { … }
template <bool RecordWhyLive>
typename MarkLiveImpl<RecordWhyLive>::WorklistEntry *
MarkLiveImpl<RecordWhyLive>::makeEntry(
InputSection *isec,
const MarkLiveImpl<RecordWhyLive>::WorklistEntry *prev) const { … }
template <bool RecordWhyLive>
void MarkLiveImpl<RecordWhyLive>::markTransitively() { … }
void markLive() { … }
}