Lines Matching refs:SymCtx
68 SymbolContext &SymCtx, in getAnnotatedName() argument
70 assert(!SymCtx.SymbolName.empty() && "Expected symbol name"); in getAnnotatedName()
72 const StringRef SymbolName = SymCtx.SymbolName; in getAnnotatedName()
74 (Demangle && (SymCtx.Kind == EncodeKind::GlobalSymbol)) in getAnnotatedName()
87 switch (SymCtx.ObjCIFKind) { in getAnnotatedName()
103 if ((SymCtx.Kind == EncodeKind::GlobalSymbol) && in getAnnotatedName()
109 switch (SymCtx.Kind) { in getAnnotatedName()
169 void DylibVerifier::addSymbol(const Record *R, SymbolContext &SymCtx, in addSymbol() argument
174 Exports->addGlobal(SymCtx.Kind, SymCtx.SymbolName, R->getFlags(), Targets); in addSymbol()
177 bool DylibVerifier::shouldIgnoreObsolete(const Record *R, SymbolContext &SymCtx, in shouldIgnoreObsolete() argument
179 if (!SymCtx.FA->Avail.isObsoleted()) in shouldIgnoreObsolete()
183 DeferredZipperedSymbols[SymCtx.SymbolName].emplace_back(ZipperedDeclSource{ in shouldIgnoreObsolete()
184 SymCtx.FA, &Ctx.Diag->getSourceManager(), Ctx.Target}); in shouldIgnoreObsolete()
189 SymbolContext &SymCtx) const { in shouldIgnoreReexport()
190 StringRef SymName = SymCtx.SymbolName; in shouldIgnoreReexport()
201 if (auto Sym = Lib.getSymbol(SymCtx.Kind, SymName, SymCtx.ObjCIFKind)) in shouldIgnoreReexport()
209 const Record *R, const SymbolContext &SymCtx) const { in shouldIgnoreInternalZipperedSymbol()
213 return Exports->findSymbol(SymCtx.Kind, SymCtx.SymbolName, in shouldIgnoreInternalZipperedSymbol()
214 SymCtx.ObjCIFKind) != nullptr; in shouldIgnoreInternalZipperedSymbol()
218 SymbolContext &SymCtx) { in shouldIgnoreZipperedAvailability() argument
219 if (!(Zippered && SymCtx.FA->Avail.isUnavailable())) in shouldIgnoreZipperedAvailability()
224 DeferredZipperedSymbols[SymCtx.SymbolName].emplace_back( in shouldIgnoreZipperedAvailability()
225 ZipperedDeclSource{SymCtx.FA, SourceManagers.back().get(), Ctx.Target}); in shouldIgnoreZipperedAvailability()
231 SymbolContext &SymCtx, in compareObjCInterfaceSymbols() argument
234 ((SymCtx.ObjCIFKind & ObjCIFSymbolKind::Class) == in compareObjCInterfaceSymbols()
236 ((SymCtx.ObjCIFKind & ObjCIFSymbolKind::MetaClass) == in compareObjCInterfaceSymbols()
249 Ctx.Diag->Report(SymCtx.FA->Loc, PrintAsWarning in compareObjCInterfaceSymbols()
256 Ctx.Diag->Report(SymCtx.FA->Loc, PrintAsWarning in compareObjCInterfaceSymbols()
268 SymCtx.ObjCIFKind = ObjCIFSymbolKind::Class; in compareObjCInterfaceSymbols()
270 getAnnotatedName(R, SymCtx), in compareObjCInterfaceSymbols()
274 SymCtx.ObjCIFKind = ObjCIFSymbolKind::MetaClass; in compareObjCInterfaceSymbols()
276 getAnnotatedName(R, SymCtx), in compareObjCInterfaceSymbols()
282 if (DR->isExportedSymbol(SymCtx.ObjCIFKind)) { in compareObjCInterfaceSymbols()
285 SymCtx.Kind = EncodeKind::GlobalSymbol; in compareObjCInterfaceSymbols()
286 SymCtx.SymbolName = R->getName(); in compareObjCInterfaceSymbols()
293 PrintDiagnostic(DR->getLinkageForSymbol(SymCtx.ObjCIFKind), R, in compareObjCInterfaceSymbols()
294 SymCtx.SymbolName); in compareObjCInterfaceSymbols()
299 SymbolContext &SymCtx, in compareVisibility() argument
305 Ctx.Diag->Report(SymCtx.FA->Loc, diag::err_library_missing_symbol) in compareVisibility()
306 << getAnnotatedName(R, SymCtx); in compareVisibility()
312 Ctx.Diag->Report(SymCtx.FA->Loc, diag::err_library_hidden_symbol) in compareVisibility()
313 << getAnnotatedName(R, SymCtx); in compareVisibility()
321 if ((R->isInternal() && !SymCtx.Inlined) && DR && DR->isExported()) { in compareVisibility()
326 if (shouldIgnorePrivateExternAttr(SymCtx.FA->D)) in compareVisibility()
329 if (shouldIgnoreInternalZipperedSymbol(R, SymCtx)) in compareVisibility()
342 Ctx.Diag->Report(SymCtx.FA->Loc, ID) << getAnnotatedName(R, SymCtx); in compareVisibility()
354 SymbolContext &SymCtx, in compareAvailability() argument
356 if (!SymCtx.FA->Avail.isUnavailable()) in compareAvailability()
359 if (shouldIgnoreZipperedAvailability(R, SymCtx)) in compareAvailability()
362 const bool IsDeclAvailable = SymCtx.FA->Avail.isUnavailable(); in compareAvailability()
367 Ctx.Diag->Report(SymCtx.FA->Loc, diag::warn_header_availability_mismatch) in compareAvailability()
368 << getAnnotatedName(R, SymCtx) << IsDeclAvailable << IsDeclAvailable; in compareAvailability()
373 Ctx.Diag->Report(SymCtx.FA->Loc, diag::err_header_availability_mismatch) in compareAvailability()
374 << getAnnotatedName(R, SymCtx) << IsDeclAvailable << IsDeclAvailable; in compareAvailability()
385 bool DylibVerifier::compareSymbolFlags(const Record *R, SymbolContext &SymCtx, in compareSymbolFlags() argument
389 Ctx.Diag->Report(SymCtx.FA->Loc, diag::err_dylib_symbol_flags_mismatch) in compareSymbolFlags()
390 << getAnnotatedName(DR, SymCtx) << DR->isThreadLocalValue(); in compareSymbolFlags()
396 Ctx.Diag->Report(SymCtx.FA->Loc, diag::err_header_symbol_flags_mismatch) in compareSymbolFlags()
397 << getAnnotatedName(R, SymCtx) << R->isThreadLocalValue(); in compareSymbolFlags()
404 Ctx.Diag->Report(SymCtx.FA->Loc, diag::err_dylib_symbol_flags_mismatch) in compareSymbolFlags()
405 << getAnnotatedName(DR, SymCtx) << R->isWeakDefined(); in compareSymbolFlags()
411 Ctx.Diag->Report(SymCtx.FA->Loc, diag::err_header_symbol_flags_mismatch) in compareSymbolFlags()
412 << getAnnotatedName(R, SymCtx) << R->isWeakDefined(); in compareSymbolFlags()
421 SymbolContext &SymCtx) { in verifyImpl() argument
425 if (R->isExported() && !SymCtx.FA->Avail.isUnavailable() && in verifyImpl()
426 !SymCtx.FA->Avail.isObsoleted()) { in verifyImpl()
427 addSymbol(R, SymCtx); in verifyImpl()
432 if (shouldIgnoreReexport(R, SymCtx)) { in verifyImpl()
438 findRecordFromSlice(Ctx.DylibSlice, SymCtx.SymbolName, SymCtx.Kind); in verifyImpl()
442 if (shouldIgnoreObsolete(R, SymCtx, DR)) { in verifyImpl()
448 if (SymCtx.FA->Avail.isUnavailable() && (!DR || DR->isInternal())) { in verifyImpl()
453 Result VisibilityCheck = compareVisibility(R, SymCtx, DR); in verifyImpl()
466 if (SymCtx.ObjCIFKind != ObjCIFSymbolKind::None) { in verifyImpl()
468 R, SymCtx, Ctx.DylibSlice->findObjCInterface(DR->getName()))) { in verifyImpl()
474 Result AvailabilityCheck = compareAvailability(R, SymCtx, DR); in verifyImpl()
480 if (!compareSymbolFlags(R, SymCtx, DR)) { in verifyImpl()
485 addSymbol(R, SymCtx); in verifyImpl()
535 SymbolContext SymCtx{FullName, EncodeKind::ObjectiveCInstanceVariable, FA}; in verify() local
536 return verifyImpl(R, SymCtx); in verify()
556 SymbolContext SymCtx; in verify() local
557 SymCtx.SymbolName = R->getName(); in verify()
558 SymCtx.ObjCIFKind = assignObjCIFSymbolKind(R); in verify()
560 SymCtx.Kind = R->hasExceptionAttribute() ? EncodeKind::ObjectiveCClassEHType in verify()
562 SymCtx.FA = FA; in verify()
564 return verifyImpl(R, SymCtx); in verify()
574 SymbolContext SymCtx; in verify() local
575 SymCtx.SymbolName = Sym.Name; in verify()
576 SymCtx.Kind = Sym.Kind; in verify()
577 SymCtx.FA = FA; in verify()
578 SymCtx.Inlined = R->isInlined(); in verify()
579 return verifyImpl(R, SymCtx); in verify()
605 void DylibVerifier::visitSymbolInDylib(const Record &R, SymbolContext &SymCtx) { in visitSymbolInDylib() argument
620 const StringRef SymbolName(SymCtx.SymbolName); in visitSymbolInDylib()
621 if (const Symbol *Sym = Exports->findSymbol(SymCtx.Kind, SymCtx.SymbolName, in visitSymbolInDylib()
622 SymCtx.ObjCIFKind)) { in visitSymbolInDylib()
635 auto It = DeferredZipperedSymbols.find(SymCtx.SymbolName); in visitSymbolInDylib()
670 << getAnnotatedName(&R, SymCtx) << ZSource.FA->Avail.isUnavailable() in visitSymbolInDylib()
681 if (Aliases.count({SymbolName.str(), SymCtx.Kind})) { in visitSymbolInDylib()
691 RecordLoc Loc = DWARFCtx->SourceLocs.lookup(SymCtx.SymbolName); in visitSymbolInDylib()
699 << getAnnotatedName(&R, SymCtx, Loc.isValid()); in visitSymbolInDylib()
711 << getAnnotatedName(&R, SymCtx, Loc.isValid()); in visitSymbolInDylib()
724 << getAnnotatedName(&R, SymCtx, Loc.isValid()); in visitSymbolInDylib()
738 SymbolContext SymCtx; in visitGlobal() local
740 SymCtx.SymbolName = Sym.Name; in visitGlobal()
741 SymCtx.Kind = Sym.Kind; in visitGlobal()
742 visitSymbolInDylib(R, SymCtx); in visitGlobal()
747 SymbolContext SymCtx; in visitObjCIVar() local
748 SymCtx.SymbolName = ObjCIVarRecord::createScopedName(Super, R.getName()); in visitObjCIVar()
749 SymCtx.Kind = EncodeKind::ObjectiveCInstanceVariable; in visitObjCIVar()
750 visitSymbolInDylib(R, SymCtx); in visitObjCIVar()
766 SymbolContext SymCtx; in visitObjCInterface() local
767 SymCtx.SymbolName = R.getName(); in visitObjCInterface()
768 SymCtx.ObjCIFKind = assignObjCIFSymbolKind(&R); in visitObjCInterface()
769 if (SymCtx.ObjCIFKind > ObjCIFSymbolKind::EHType) { in visitObjCInterface()
771 SymCtx.Kind = EncodeKind::ObjectiveCClassEHType; in visitObjCInterface()
772 visitSymbolInDylib(R, SymCtx); in visitObjCInterface()
774 SymCtx.Kind = EncodeKind::ObjectiveCClass; in visitObjCInterface()
775 visitSymbolInDylib(R, SymCtx); in visitObjCInterface()
777 SymCtx.Kind = R.hasExceptionAttribute() ? EncodeKind::ObjectiveCClassEHType in visitObjCInterface()
779 visitSymbolInDylib(R, SymCtx); in visitObjCInterface()
995 SymbolContext SymCtx; in takeExports() local
996 SymCtx.SymbolName = Alias.first; in takeExports()
997 SymCtx.Kind = Alias.second; in takeExports()
998 addSymbol(&R, SymCtx, std::move(Targets)); in takeExports()