Skip to content

Revert "Don't require a strict revision match in LLDB." #70274

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions include/swift/Serialization/Validation.h
Original file line number Diff line number Diff line change
Expand Up @@ -251,16 +251,13 @@ struct SearchPath {
/// compiled with -enable-ossa-modules.
/// \param requiredSDK If not empty, only accept modules built with
/// a compatible SDK. The StringRef represents the canonical SDK name.
/// \param requiresRevisionMatch if true, expects the swift tag to match in
/// addition to the module format version number.
/// \param[out] extendedInfo If present, will be populated with additional
/// compilation options serialized into the AST at build time that may be
/// necessary to load it properly.
/// \param[out] dependencies If present, will be populated with list of
/// input files the module depends on, if present in INPUT_BLOCK.
ValidationInfo validateSerializedAST(
StringRef data, bool requiresOSSAModules, StringRef requiredSDK,
bool requiresRevisionMatch = true,
ExtendedValidationInfo *extendedInfo = nullptr,
SmallVectorImpl<SerializationOptions::FileDependency> *dependencies =
nullptr,
Expand Down
3 changes: 1 addition & 2 deletions lib/ASTSectionImporter/ASTSectionImporter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,7 @@ swift::parseASTSection(MemoryBufferSerializedModuleLoader &Loader,
// headers. Iterate over all AST modules.
while (!buf.empty()) {
auto info = serialization::validateSerializedAST(
buf, Loader.isRequiredOSSAModules(), /*requiredSDK*/ StringRef(),
/*requiresRevisionMatch*/ false);
buf, Loader.isRequiredOSSAModules(), /*requiredSDK*/StringRef());

assert(info.name.size() < (2 << 10) && "name failed sanity check");

Expand Down
5 changes: 2 additions & 3 deletions lib/Frontend/CompilerInvocation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3224,8 +3224,7 @@ serialization::Status
CompilerInvocation::loadFromSerializedAST(StringRef data) {
serialization::ExtendedValidationInfo extendedInfo;
serialization::ValidationInfo info = serialization::validateSerializedAST(
data, getSILOptions().EnableOSSAModules, LangOpts.SDKName,
!LangOpts.DebuggerSupport, &extendedInfo);
data, getSILOptions().EnableOSSAModules, LangOpts.SDKName, &extendedInfo);

if (info.status != serialization::Status::Valid)
return info.status;
Expand Down Expand Up @@ -3261,7 +3260,7 @@ CompilerInvocation::setUpInputForSILTool(

auto result = serialization::validateSerializedAST(
fileBufOrErr.get()->getBuffer(), getSILOptions().EnableOSSAModules,
LangOpts.SDKName, !LangOpts.DebuggerSupport, &extendedInfo);
LangOpts.SDKName, &extendedInfo);
bool hasSerializedAST = result.status == serialization::Status::Valid;

if (hasSerializedAST) {
Expand Down
16 changes: 7 additions & 9 deletions lib/Frontend/ModuleInterfaceLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,10 +211,10 @@ namespace path = llvm::sys::path;

static bool serializedASTLooksValid(const llvm::MemoryBuffer &buf,
bool requiresOSSAModules,
StringRef requiredSDK,
bool requiresRevisionMatch) {
auto VI = serialization::validateSerializedAST(
buf.getBuffer(), requiresOSSAModules, requiredSDK, requiresRevisionMatch);
StringRef requiredSDK) {
auto VI = serialization::validateSerializedAST(buf.getBuffer(),
requiresOSSAModules,
requiredSDK);
return VI.status == serialization::Status::Valid;
}

Expand Down Expand Up @@ -462,7 +462,6 @@ class UpToDateModuleCheker {
LLVM_DEBUG(llvm::dbgs() << "Validating deps of " << path << "\n");
auto validationInfo = serialization::validateSerializedAST(
buf.getBuffer(), requiresOSSAModules, ctx.LangOpts.SDKName,
!ctx.LangOpts.DebuggerSupport,
/*ExtendedValidationInfo=*/nullptr, &allDeps);

if (validationInfo.status != serialization::Status::Valid) {
Expand Down Expand Up @@ -621,8 +620,7 @@ class ModuleInterfaceLoaderImpl {
// First, make sure the underlying module path exists and is valid.
auto modBuf = fs.getBufferForFile(fwd.underlyingModulePath);
if (!modBuf || !serializedASTLooksValid(*modBuf.get(), requiresOSSAModules,
ctx.LangOpts.SDKName,
!ctx.LangOpts.DebuggerSupport))
ctx.LangOpts.SDKName))
return false;

// Next, check the dependencies in the forwarding file.
Expand Down Expand Up @@ -2233,7 +2231,7 @@ bool ExplicitSwiftModuleLoader::canImportModule(
}
auto metaData = serialization::validateSerializedAST(
(*moduleBuf)->getBuffer(), Ctx.SILOpts.EnableOSSAModules,
Ctx.LangOpts.SDKName, !Ctx.LangOpts.DebuggerSupport);
Ctx.LangOpts.SDKName);
versionInfo->setVersion(metaData.userModuleVersion,
ModuleVersionSourceKind::SwiftBinaryModule);
return true;
Expand Down Expand Up @@ -2564,7 +2562,7 @@ bool ExplicitCASModuleLoader::canImportModule(
}
auto metaData = serialization::validateSerializedAST(
(*moduleBuf)->getBuffer(), Ctx.SILOpts.EnableOSSAModules,
Ctx.LangOpts.SDKName, !Ctx.LangOpts.DebuggerSupport);
Ctx.LangOpts.SDKName);
versionInfo->setVersion(metaData.userModuleVersion,
ModuleVersionSourceKind::SwiftBinaryModule);
return true;
Expand Down
4 changes: 2 additions & 2 deletions lib/Serialization/ModuleFileSharedCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,7 @@ bool serialization::isSerializedAST(StringRef data) {

ValidationInfo serialization::validateSerializedAST(
StringRef data, bool requiresOSSAModules, StringRef requiredSDK,
bool requiresRevisionMatch, ExtendedValidationInfo *extendedInfo,
ExtendedValidationInfo *extendedInfo,
SmallVectorImpl<SerializationOptions::FileDependency> *dependencies,
SmallVectorImpl<SearchPath> *searchPaths) {
ValidationInfo result;
Expand Down Expand Up @@ -590,7 +590,7 @@ ValidationInfo serialization::validateSerializedAST(
result = validateControlBlock(
cursor, scratch,
{SWIFTMODULE_VERSION_MAJOR, SWIFTMODULE_VERSION_MINOR},
requiresOSSAModules, requiresRevisionMatch,
requiresOSSAModules, /*requiresRevisionMatch=*/true,
requiredSDK,
extendedInfo, localObfuscator);
if (result.status != Status::Valid)
Expand Down
2 changes: 1 addition & 1 deletion lib/Serialization/SerializedModuleLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1389,7 +1389,7 @@ bool SerializedModuleLoaderBase::canImportModule(
if (swiftInterfaceVersion.empty() && moduleInputBuffer) {
auto metaData = serialization::validateSerializedAST(
moduleInputBuffer->getBuffer(), Ctx.SILOpts.EnableOSSAModules,
Ctx.LangOpts.SDKName, !Ctx.LangOpts.DebuggerSupport);
Ctx.LangOpts.SDKName);
versionInfo->setVersion(metaData.userModuleVersion,
ModuleVersionSourceKind::SwiftBinaryModule);
} else {
Expand Down
4 changes: 2 additions & 2 deletions tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ static bool validateModule(
llvm::SmallVectorImpl<swift::serialization::SearchPath> &searchPaths) {
info = swift::serialization::validateSerializedAST(
data, requiresOSSAModules,
/*requiredSDK*/ StringRef(), /*requiresRevisionMatch*/ false,
&extendedInfo, /* dependencies*/ nullptr, &searchPaths);
/*requiredSDK*/ StringRef(), &extendedInfo, /* dependencies*/ nullptr,
&searchPaths);
if (info.status != swift::serialization::Status::Valid) {
llvm::outs() << "error: validateSerializedAST() failed\n";
return false;
Expand Down