TBDGen: add a flag for embedding external symbols in emitted tbd file

Static-linked libraries could add symbols to the final tbd file. We need
this flag to specify additional module names to collect symbols from.

rdar://59399684
This commit is contained in:
Xi Ge
2020-02-11 22:27:43 -08:00
parent d5cb71a1af
commit e013f1fb81
8 changed files with 62 additions and 4 deletions

View File

@@ -1435,11 +1435,14 @@ static bool validateTBDIfNeeded(const CompilerInvocation &Invocation,
}
const bool allSymbols = mode == FrontendOptions::TBDValidationMode::All;
// We should ignore embeded symbols from external modules for validation.
TBDGenOptions Opts = Invocation.getTBDGenOptions();
Opts.embedSymbolsFromModules.clear();
return MSF.is<SourceFile *>()
? validateTBD(MSF.get<SourceFile *>(), IRModule,
Invocation.getTBDGenOptions(), allSymbols)
Opts, allSymbols)
: validateTBD(MSF.get<ModuleDecl *>(), IRModule,
Invocation.getTBDGenOptions(), allSymbols);
Opts, allSymbols);
}
static bool generateCode(const CompilerInvocation &Invocation,