Author: Jordan Rupprecht
Date: 2019-12-11T13:38:05-08:00
New Revision: 34ef51b5f97933ba12d857d2da8b0d7c133320ce

URL: 
https://github.com/llvm/llvm-project/commit/34ef51b5f97933ba12d857d2da8b0d7c133320ce
DIFF: 
https://github.com/llvm/llvm-project/commit/34ef51b5f97933ba12d857d2da8b0d7c133320ce.diff

LOG: [lldb][dotest] Improve libc++ detection

Summary: The test logic for running libc++ tests only looks to see if 
`/usr/include/c++/v1` exists. This adds a fallback for including libc++ tests 
as long as `$(CC) -stdlib=libc++` works.

Reviewers: labath, EricWF

Subscribers: ldionne, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D71319

Added: 
    

Modified: 
    lldb/packages/Python/lldbsuite/test/dotest.py

Removed: 
    


################################################################################
diff  --git a/lldb/packages/Python/lldbsuite/test/dotest.py 
b/lldb/packages/Python/lldbsuite/test/dotest.py
index b7a52663a433..fa2b3cb15a9a 100644
--- a/lldb/packages/Python/lldbsuite/test/dotest.py
+++ b/lldb/packages/Python/lldbsuite/test/dotest.py
@@ -32,6 +32,7 @@
 import signal
 import subprocess
 import sys
+import tempfile
 
 # Third-party modules
 import six
@@ -850,9 +851,15 @@ def canRunLibcxxTests():
         return True, "libc++ always present"
 
     if platform == "linux":
-        if not os.path.isdir("/usr/include/c++/v1"):
-            return False, "Unable to find libc++ installation"
-        return True, "Headers found, let's hope they work"
+        if os.path.isdir("/usr/include/c++/v1"):
+            return True, "Headers found, let's hope they work"
+        with tempfile.NamedTemporaryFile() as f:
+            cmd = [configuration.compiler, "-xc++", "-stdlib=libc++", "-o", 
f.name, "-"]
+            p = subprocess.Popen(cmd, stdin=subprocess.PIPE, 
stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+            _, stderr = p.communicate("int main() {}")
+            if not p.returncode:
+                return True, "Compiling with -stdlib=libc++ works"
+            return False, "Compiling with -stdlib=libc++ fails with the error: 
%s" % stderr
 
     return False, "Don't know how to build with libc++ on %s" % platform
 


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to