#include "clang/InstallAPI/DylibVerifier.h"
#include "DiagnosticBuilderWrappers.h"
#include "clang/InstallAPI/FrontendRecords.h"
#include "clang/InstallAPI/InstallAPIDiagnostic.h"
#include "llvm/Demangle/Demangle.h"
#include "llvm/TextAPI/DylibReader.h"
usingnamespacellvm::MachO;
namespace clang {
namespace installapi {
struct DylibVerifier::SymbolContext { … };
struct DylibVerifier::DWARFContext { … };
static bool isCppMangled(StringRef Name) { … }
static std::string demangle(StringRef Name) { … }
std::string DylibVerifier::getAnnotatedName(const Record *R,
SymbolContext &SymCtx,
bool ValidSourceLoc) { … }
static DylibVerifier::Result updateResult(const DylibVerifier::Result Prev,
const DylibVerifier::Result Curr) { … }
static bool shouldIgnorePrivateExternAttr(const Decl *D) { … }
Record *findRecordFromSlice(const RecordsSlice *Slice, StringRef Name,
EncodeKind Kind) { … }
void DylibVerifier::updateState(Result State) { … }
void DylibVerifier::addSymbol(const Record *R, SymbolContext &SymCtx,
TargetList &&Targets) { … }
bool DylibVerifier::shouldIgnoreObsolete(const Record *R, SymbolContext &SymCtx,
const Record *DR) { … }
bool DylibVerifier::shouldIgnoreReexport(const Record *R,
SymbolContext &SymCtx) const { … }
bool DylibVerifier::shouldIgnoreInternalZipperedSymbol(
const Record *R, const SymbolContext &SymCtx) const { … }
bool DylibVerifier::shouldIgnoreZipperedAvailability(const Record *R,
SymbolContext &SymCtx) { … }
bool DylibVerifier::compareObjCInterfaceSymbols(const Record *R,
SymbolContext &SymCtx,
const ObjCInterfaceRecord *DR) { … }
DylibVerifier::Result DylibVerifier::compareVisibility(const Record *R,
SymbolContext &SymCtx,
const Record *DR) { … }
DylibVerifier::Result DylibVerifier::compareAvailability(const Record *R,
SymbolContext &SymCtx,
const Record *DR) { … }
bool DylibVerifier::compareSymbolFlags(const Record *R, SymbolContext &SymCtx,
const Record *DR) { … }
DylibVerifier::Result DylibVerifier::verifyImpl(Record *R,
SymbolContext &SymCtx) { … }
bool DylibVerifier::canVerify() { … }
void DylibVerifier::assignSlice(const Target &T) { … }
void DylibVerifier::setTarget(const Target &T) { … }
void DylibVerifier::setSourceManager(
IntrusiveRefCntPtr<SourceManager> SourceMgr) { … }
DylibVerifier::Result DylibVerifier::verify(ObjCIVarRecord *R,
const FrontendAttrs *FA,
const StringRef SuperClass) { … }
static ObjCIFSymbolKind assignObjCIFSymbolKind(const ObjCInterfaceRecord *R) { … }
DylibVerifier::Result DylibVerifier::verify(ObjCInterfaceRecord *R,
const FrontendAttrs *FA) { … }
DylibVerifier::Result DylibVerifier::verify(GlobalRecord *R,
const FrontendAttrs *FA) { … }
void DylibVerifier::VerifierContext::emitDiag(llvm::function_ref<void()> Report,
RecordLoc *Loc) { … }
static bool shouldIgnoreCpp(StringRef Name, bool IsWeakDef) { … }
void DylibVerifier::visitSymbolInDylib(const Record &R, SymbolContext &SymCtx) { … }
void DylibVerifier::visitGlobal(const GlobalRecord &R) { … }
void DylibVerifier::visitObjCIVar(const ObjCIVarRecord &R,
const StringRef Super) { … }
void DylibVerifier::accumulateSrcLocForDylibSymbols() { … }
void DylibVerifier::visitObjCInterface(const ObjCInterfaceRecord &R) { … }
void DylibVerifier::visitObjCCategory(const ObjCCategoryRecord &R) { … }
DylibVerifier::Result DylibVerifier::verifyRemainingSymbols() { … }
bool DylibVerifier::verifyBinaryAttrs(const ArrayRef<Target> ProvidedTargets,
const BinaryAttrs &ProvidedBA,
const LibAttrs &ProvidedReexports,
const LibAttrs &ProvidedClients,
const LibAttrs &ProvidedRPaths,
const FileType &FT) { … }
std::unique_ptr<SymbolSet> DylibVerifier::takeExports() { … }
}
}