Skip to content

Commit

Permalink
Revert "[lldb][ClangExpressionParser] Set BuiltinHeadersInSystemModul…
Browse files Browse the repository at this point in the history
…es depending on SDK version (llvm#102309)"

This reverts commit 1cbcf74.

unittests do not build because liblldbPluginExpressionParserClang.a now
depends on liblldbPluginPlatformMacOSX.a when built on macOS, reverting
until we can straighten out the dependency.

(cherry picked from commit cf56e26)
  • Loading branch information
jasonmolenda authored and adrian-prantl committed Oct 11, 2024
1 parent 5ff5236 commit 655e018
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 94 deletions.
14 changes: 0 additions & 14 deletions lldb/include/lldb/Utility/XcodeSDK.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,20 +85,6 @@ class XcodeSDK {
/// Whether LLDB feels confident importing Clang modules from this SDK.
static bool SDKSupportsModules(Type type, llvm::VersionTuple version);
static bool SDKSupportsModules(Type desired_type, const FileSpec &sdk_path);

/// Returns true if the SDK for the specified triple supports
/// builtin modules in system headers.
///
/// NOTE: should be kept in sync with sdkSupportsBuiltinModules in
/// Toolchains/Darwin.cpp
///
/// FIXME: this function will be removed once LLDB's ClangExpressionParser
/// constructs the compiler instance through the driver/toolchain. See \ref
/// SetupImportStdModuleLangOpts
///
static bool SDKSupportsBuiltinModules(const llvm::Triple &target_triple,
llvm::VersionTuple sdk_version);

/// Return the canonical SDK name, such as "macosx" for the macOS SDK.
static std::string GetCanonicalName(Info info);
/// Return the best-matching SDK type for a specific triple.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#include "clang/AST/ExternalASTSource.h"
#include "clang/AST/PrettyPrinter.h"
#include "clang/Basic/Builtins.h"
#include "clang/Basic/DarwinSDKInfo.h"
#include "clang/Basic/DiagnosticIDs.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/TargetInfo.h"
Expand Down Expand Up @@ -40,7 +39,6 @@
#include "llvm/ExecutionEngine/ExecutionEngine.h"
#include "llvm/Support/CrashRecoveryContext.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/TargetSelect.h"

Expand Down Expand Up @@ -93,8 +91,6 @@
#include "lldb/Utility/StringList.h"

#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
#include "Plugins/Platform/MacOSX/PlatformDarwin.h"
#include "lldb/Utility/XcodeSDK.h"

#include <cctype>
#include <memory>
Expand Down Expand Up @@ -283,49 +279,6 @@ class ClangDiagnosticManagerAdapter : public clang::DiagnosticConsumer {
std::string m_output;
};

/// Returns true if the SDK for the specified triple supports
/// builtin modules in system headers. This is used to decide
/// whether to pass -fbuiltin-headers-in-system-modules to
/// the compiler instance when compiling the `std` module.
static llvm::Expected<bool>
sdkSupportsBuiltinModules(lldb_private::Target &target) {
#ifndef __APPLE__
return false;
#else
auto arch_spec = target.GetArchitecture();
auto const &triple = arch_spec.GetTriple();
auto module_sp = target.GetExecutableModule();
if (!module_sp)
return llvm::createStringError("Executable module not found.");

// Get SDK path that the target was compiled against.
auto sdk_or_err = PlatformDarwin::GetSDKPathFromDebugInfo(*module_sp);
if (!sdk_or_err)
return sdk_or_err.takeError();

// Use the SDK path from debug-info to find a local matching SDK directory.
auto sdk_path_or_err =
HostInfo::GetSDKRoot(HostInfo::SDKOptions{std::move(sdk_or_err->first)});
if (!sdk_path_or_err)
return sdk_path_or_err.takeError();

auto VFS = FileSystem::Instance().GetVirtualFileSystem();
if (!VFS)
return llvm::createStringError("No virtual filesystem available.");

// Extract SDK version from the /path/to/some.sdk/SDKSettings.json
auto parsed_or_err = clang::parseDarwinSDKInfo(*VFS, *sdk_path_or_err);
if (!parsed_or_err)
return parsed_or_err.takeError();

auto maybe_sdk = *parsed_or_err;
if (!maybe_sdk)
return llvm::createStringError("Couldn't find Darwin SDK info.");

return XcodeSDK::SDKSupportsBuiltinModules(triple, maybe_sdk->getVersion());
#endif
}

static void SetupModuleHeaderPaths(CompilerInstance *compiler,
std::vector<std::string> include_directories,
lldb::TargetSP target_sp) {
Expand Down Expand Up @@ -608,9 +561,7 @@ static void SetupLangOpts(CompilerInstance &compiler,
lang_opts.NoBuiltin = true;
}

static void SetupImportStdModuleLangOpts(CompilerInstance &compiler,
lldb_private::Target &target) {
Log *log = GetLog(LLDBLog::Expressions);
static void SetupImportStdModuleLangOpts(CompilerInstance &compiler) {
LangOptions &lang_opts = compiler.getLangOpts();
lang_opts.Modules = true;
// We want to implicitly build modules.
Expand All @@ -627,14 +578,7 @@ static void SetupImportStdModuleLangOpts(CompilerInstance &compiler,
lang_opts.GNUMode = true;
lang_opts.GNUKeywords = true;
lang_opts.CPlusPlus11 = true;

auto supported_or_err = sdkSupportsBuiltinModules(target);
if (supported_or_err)
lang_opts.BuiltinHeadersInSystemModules = !*supported_or_err;
else
LLDB_LOG_ERROR(log, supported_or_err.takeError(),
"Failed to determine BuiltinHeadersInSystemModules when "
"setting up import-std-module: {0}");
lang_opts.BuiltinHeadersInSystemModules = true;

// The Darwin libc expects this macro to be set.
lang_opts.GNUCVersion = 40201;
Expand Down Expand Up @@ -715,7 +659,7 @@ ClangExpressionParser::ClangExpressionParser(
if (auto *clang_expr = dyn_cast<ClangUserExpression>(&m_expr);
clang_expr && clang_expr->DidImportCxxModules()) {
LLDB_LOG(log, "Adding lang options for importing C++ modules");
SetupImportStdModuleLangOpts(*m_compiler, *target_sp);
SetupImportStdModuleLangOpts(*m_compiler);
SetupModuleHeaderPaths(m_compiler.get(), m_include_directories, target_sp);
}

Expand Down
21 changes: 0 additions & 21 deletions lldb/source/Utility/XcodeSDK.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -259,27 +259,6 @@ bool XcodeSDK::SupportsSwift() const {
}
}

bool XcodeSDK::SDKSupportsBuiltinModules(const llvm::Triple &target_triple,
llvm::VersionTuple sdk_version) {
using namespace llvm;

switch (target_triple.getOS()) {
case Triple::OSType::MacOSX:
return sdk_version >= VersionTuple(15U);
case Triple::OSType::IOS:
return sdk_version >= VersionTuple(18U);
case Triple::OSType::TvOS:
return sdk_version >= VersionTuple(18U);
case Triple::OSType::WatchOS:
return sdk_version >= VersionTuple(11U);
case Triple::OSType::XROS:
return sdk_version >= VersionTuple(2U);
default:
// New SDKs support builtin modules from the start.
return true;
}
}

bool XcodeSDK::SDKSupportsModules(XcodeSDK::Type desired_type,
const FileSpec &sdk_path) {
ConstString last_path_component = sdk_path.GetFilename();
Expand Down

0 comments on commit 655e018

Please sign in to comment.