https://github.com/Teemperor updated 
https://github.com/llvm/llvm-project/pull/188235

>From d09c104fa192ffd77cace06f6dfccd4a1502560d Mon Sep 17 00:00:00 2001
From: Raphael Isemann <[email protected]>
Date: Tue, 24 Mar 2026 12:12:43 +0000
Subject: [PATCH] [lldb][test] Don't treat 'xcrun clang' as a path for finding
 clang++

TestPrintObjectArray.py uses `xcrun clang` as the test compiler.
This is because the test source requires some Objective-C features
that are only available in downstream clang:

```
self.build(dictionary=[...], compiler="xcrun clang")
```

However, this currently just results in us running `clang++`
instead of `xcrun clang++` to compile test sources. If the downstream
`clang++` in PATH is not Apple's downstream version, this then causes
the tests to fail with compilation errors:

```
clang++: error: unknown argument: '-fno-constant-nsnumber-literals'
clang++: error: unknown argument: '-fno-constant-nsarray-literals'
clang++: error: unknown argument: '-fno-constant-nsdictionary-literals'
```

We end up in this situation as we treat this command as a path when
trying to assemble the `clang++` command. This patch just adds a
special case that if the path is not a file path or symlink, then we
assembly the `clang++` command by just appending the extension to the
command.
---
 lldb/packages/Python/lldbsuite/test/builders/builder.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/lldb/packages/Python/lldbsuite/test/builders/builder.py 
b/lldb/packages/Python/lldbsuite/test/builders/builder.py
index 024c9f1c7e435..7ad9658303823 100644
--- a/lldb/packages/Python/lldbsuite/test/builders/builder.py
+++ b/lldb/packages/Python/lldbsuite/test/builders/builder.py
@@ -159,7 +159,12 @@ def getToolchainSpec(self, compiler):
         def getToolchainUtil(util_name):
             return os.path.join(configuration.llvm_tools_dir, util_name + 
exe_ext)
 
-        cxx = cc_dir / (cc_prefix + cxx_type + cc_ext)
+        # If the compiler is a file path or symlink, try to infer where the
+        # C++ variant is. Otherwise just append the extension (usually '++').
+        if os.path.exists(cc):
+            cxx = cc_dir / (cc_prefix + cxx_type + cc_ext)
+        else:
+            cxx = cc + cc_ext
 
         util_names = {
             "OBJCOPY": "objcopy",

_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to