Skip to content

Commit 440a4de

Browse files
[lldb][darwin] force BuiltinHeadersInSystemModules to be always false (#151535)
This is a re-landing of #144913, which was reverted because of tests failing on Darwin. The bots were failing because the x64 bots run the macOS 14.0 SDKs whereas we assumed all the bots were running the macOS 15.0+ SDKs. To address this, we deactivated the failing tests on SDKs that are older than 15.0 in #147768. Now that this is merged, we can re-land #144913.
1 parent 147bce7 commit 440a4de

File tree

3 files changed

+1
-84
lines changed

3 files changed

+1
-84
lines changed

lldb/include/lldb/Utility/XcodeSDK.h

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -93,19 +93,6 @@ class XcodeSDK {
9393
static bool SDKSupportsModules(Type type, llvm::VersionTuple version);
9494
static bool SDKSupportsModules(Type desired_type, const FileSpec &sdk_path);
9595

96-
/// Returns true if the SDK for the specified triple supports
97-
/// builtin modules in system headers.
98-
///
99-
/// NOTE: should be kept in sync with sdkSupportsBuiltinModules in
100-
/// Toolchains/Darwin.cpp
101-
///
102-
/// FIXME: this function will be removed once LLDB's ClangExpressionParser
103-
/// constructs the compiler instance through the driver/toolchain. See \ref
104-
/// SetupImportStdModuleLangOpts
105-
///
106-
static bool SDKSupportsBuiltinModules(const llvm::Triple &target_triple,
107-
llvm::VersionTuple sdk_version);
108-
10996
/// Return the canonical SDK name, such as "macosx" for the macOS SDK.
11097
static std::string GetCanonicalName(Info info);
11198
/// Return the best-matching SDK type for a specific triple.

lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp

Lines changed: 1 addition & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -319,49 +319,6 @@ class ClangDiagnosticManagerAdapter : public clang::DiagnosticConsumer {
319319
StringRef m_filename;
320320
};
321321

322-
/// Returns true if the SDK for the specified triple supports
323-
/// builtin modules in system headers. This is used to decide
324-
/// whether to pass -fbuiltin-headers-in-system-modules to
325-
/// the compiler instance when compiling the `std` module.
326-
static llvm::Expected<bool>
327-
sdkSupportsBuiltinModules(lldb_private::Target &target) {
328-
auto arch_spec = target.GetArchitecture();
329-
auto const &triple = arch_spec.GetTriple();
330-
auto module_sp = target.GetExecutableModule();
331-
if (!module_sp)
332-
return llvm::createStringError("Executable module not found.");
333-
334-
// Get SDK path that the target was compiled against.
335-
auto platform_sp = target.GetPlatform();
336-
if (!platform_sp)
337-
return llvm::createStringError("No Platform plugin found on target.");
338-
339-
auto sdk_or_err = platform_sp->GetSDKPathFromDebugInfo(*module_sp);
340-
if (!sdk_or_err)
341-
return sdk_or_err.takeError();
342-
343-
// Use the SDK path from debug-info to find a local matching SDK directory.
344-
auto sdk_path_or_err =
345-
HostInfo::GetSDKRoot(HostInfo::SDKOptions{std::move(sdk_or_err->first)});
346-
if (!sdk_path_or_err)
347-
return sdk_path_or_err.takeError();
348-
349-
auto VFS = FileSystem::Instance().GetVirtualFileSystem();
350-
if (!VFS)
351-
return llvm::createStringError("No virtual filesystem available.");
352-
353-
// Extract SDK version from the /path/to/some.sdk/SDKSettings.json
354-
auto parsed_or_err = clang::parseDarwinSDKInfo(*VFS, *sdk_path_or_err);
355-
if (!parsed_or_err)
356-
return parsed_or_err.takeError();
357-
358-
auto maybe_sdk = *parsed_or_err;
359-
if (!maybe_sdk)
360-
return llvm::createStringError("Couldn't find Darwin SDK info.");
361-
362-
return XcodeSDK::SDKSupportsBuiltinModules(triple, maybe_sdk->getVersion());
363-
}
364-
365322
static void SetupModuleHeaderPaths(CompilerInstance *compiler,
366323
std::vector<std::string> include_directories,
367324
lldb::TargetSP target_sp) {
@@ -705,7 +662,6 @@ static void SetupLangOpts(CompilerInstance &compiler,
705662

706663
static void SetupImportStdModuleLangOpts(CompilerInstance &compiler,
707664
lldb_private::Target &target) {
708-
Log *log = GetLog(LLDBLog::Expressions);
709665
LangOptions &lang_opts = compiler.getLangOpts();
710666
lang_opts.Modules = true;
711667
// We want to implicitly build modules.
@@ -723,12 +679,7 @@ static void SetupImportStdModuleLangOpts(CompilerInstance &compiler,
723679
lang_opts.GNUKeywords = true;
724680
lang_opts.CPlusPlus11 = true;
725681

726-
if (auto supported_or_err = sdkSupportsBuiltinModules(target))
727-
lang_opts.BuiltinHeadersInSystemModules = !*supported_or_err;
728-
else
729-
LLDB_LOG_ERROR(log, supported_or_err.takeError(),
730-
"Failed to determine BuiltinHeadersInSystemModules when "
731-
"setting up import-std-module: {0}");
682+
lang_opts.BuiltinHeadersInSystemModules = false;
732683

733684
// The Darwin libc expects this macro to be set.
734685
lang_opts.GNUCVersion = 40201;

lldb/source/Utility/XcodeSDK.cpp

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -266,27 +266,6 @@ bool XcodeSDK::SupportsSwift() const {
266266
}
267267
}
268268

269-
bool XcodeSDK::SDKSupportsBuiltinModules(const llvm::Triple &target_triple,
270-
llvm::VersionTuple sdk_version) {
271-
using namespace llvm;
272-
273-
switch (target_triple.getOS()) {
274-
case Triple::OSType::MacOSX:
275-
return sdk_version >= VersionTuple(15U);
276-
case Triple::OSType::IOS:
277-
return sdk_version >= VersionTuple(18U);
278-
case Triple::OSType::TvOS:
279-
return sdk_version >= VersionTuple(18U);
280-
case Triple::OSType::WatchOS:
281-
return sdk_version >= VersionTuple(11U);
282-
case Triple::OSType::XROS:
283-
return sdk_version >= VersionTuple(2U);
284-
default:
285-
// New SDKs support builtin modules from the start.
286-
return true;
287-
}
288-
}
289-
290269
bool XcodeSDK::SDKSupportsModules(XcodeSDK::Type desired_type,
291270
const FileSpec &sdk_path) {
292271
ConstString last_path_component = sdk_path.GetFilename();

0 commit comments

Comments
 (0)