================
@@ -333,3 +335,41 @@ def expectedCompiler(compilers):
return True
return False
+
+
+# This is a helper function to determine if a specific version of Xcode's
linker
+# contains a TLS bug. We want to skip TLS tests if they contain this bug, but
+# adding a linker/linker_version conditions to a decorator is challenging due
to
+# the number of ways linkers can enter the build process.
+def darwinLinkerHasTLSBug():
+ """Returns true iff a test is running on a darwin platform and the host
linker is between versions 1000 and 1109."""
+ darwin_platforms = lldbplatform.translate(lldbplatform.darwin_all)
+ if getPlatform() not in darwin_platforms:
+ return False
+
+ linker_path = (
+ subprocess.check_output(["xcrun", "--find",
"ld"]).rstrip().decode("utf-8")
+ )
+ if not is_exe(linker_path):
+ return False
+
+ raw_linker_info = (
+ subprocess.check_output([linker_path, "-version_details"])
+ .rstrip()
+ .decode("utf-8")
+ )
+ parsed_linker_info = json.loads(raw_linker_info)
+ if "version" not in parsed_linker_info:
+ return False
+
+ raw_version = parsed_linker_info["version"]
+ version = None
+ try:
+ version = int(raw_version)
----------------
kastiglione wrote:
`float` also isn't sufficient, since some versions can contain 3 separate
numbers (ie `100.5.8`).
In my related PR, I used this:
```py
version_tuple = tuple(int(x) for x in version.split("."))
if (1000,) <= version_tuple <= (1109,):
# handle bug
```
Comparisons of tuples appear to behave as desired.
https://github.com/llvm/llvm-project/pull/83941
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits