Lines Matching defs:SymCtx

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