Author: Fangrui Song
Date: 2021-01-24T20:21:57Z
New Revision: 50830e50031b5420f09f79e82cf6ec984fb8328d

URL: 
https://github.com/llvm/llvm-project/commit/50830e50031b5420f09f79e82cf6ec984fb8328d
DIFF: 
https://github.com/llvm/llvm-project/commit/50830e50031b5420f09f79e82cf6ec984fb8328d.diff

LOG: [lldb] Add -Wl,-rpath to make tests run with fresh built libc++

On my Debian machine, system libc++/libc++abi is not installed (`libc++1-9 
libc++abi-9`),
21 check-lldb-api tests fail because -stdlib=libc++ linked executables cannot
find runtime libc++.so.1 at runtime.

Use the `-Wl,-rpath,$(LLVM_LIBS_DIR)` mechanism in
`packages/Python/lldbsuite/test/make/Makefile.rules` (D58630 for NetBSD) to
allow such tests compile/link with fresh libc++ built beside lldb.
(A system libc++.so.1 is not guaranteed to match fresh libc++ header files.)

Some tweaks to the existing NetBSD rule when generalizing:

* Drop `-L$(LLVM_LIBS_DIR)` since Clang driver adds it correctly.
* Add `-stdlib=libc++` only for `USE_LIBCPP`.

Also, drop `-isystem /usr/include/c++/v1` introduced in D9426. It is not needed
by Clang driver. GCC using libc++ requires more setup.

I don't find any test needing `-Wl,-rpath` in 
`test/Shell/helper/{build,toolchain}.py` (D58630 for NetBSD added them).

Reviewed By: labath

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

Added: 
    

Modified: 
    lldb/packages/Python/lldbsuite/test/dotest.py
    lldb/packages/Python/lldbsuite/test/make/Makefile.rules

Removed: 
    


################################################################################
diff  --git a/lldb/packages/Python/lldbsuite/test/dotest.py 
b/lldb/packages/Python/lldbsuite/test/dotest.py
index c728bf329202..b8bfbab7b1f0 100644
--- a/lldb/packages/Python/lldbsuite/test/dotest.py
+++ b/lldb/packages/Python/lldbsuite/test/dotest.py
@@ -761,8 +761,6 @@ def canRunLibcxxTests():
         return True, "libc++ always present"
 
     if platform == "linux":
-        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)

diff  --git a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules 
b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
index 374dd6865d88..f4aa6d646711 100644
--- a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
+++ b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
@@ -279,11 +279,6 @@ CXXFLAGS += -std=c++11 $(CFLAGS) $(ARCH_CXXFLAGS) 
$(CXXFLAGS_EXTRAS)
 LD = $(CC)
 LDFLAGS ?= $(CFLAGS)
 LDFLAGS += $(LD_EXTRAS) $(ARCH_LDFLAGS)
-ifneq (,$(LLVM_LIBS_DIR))
-       ifeq ($(OS),NetBSD)
-               LDFLAGS += -L$(LLVM_LIBS_DIR) -Wl,-rpath,$(LLVM_LIBS_DIR)
-       endif
-endif
 ifeq (,$(filter $(OS), Windows_NT Android Darwin))
        ifneq (,$(filter YES,$(ENABLE_THREADS)))
                LDFLAGS += -pthread
@@ -393,21 +388,18 @@ endif
 
 ifeq (1,$(USE_LIBCPP))
        CXXFLAGS += -DLLDB_USING_LIBCPP
-       ifeq "$(OS)" "Linux"
-               ifneq (,$(findstring clang,$(CC)))
-                       CXXFLAGS += -stdlib=libc++
-                       LDFLAGS += -stdlib=libc++
-               else
-                       CXXFLAGS += -isystem /usr/include/c++/v1
-                       LDFLAGS += -lc++
-               endif
-       else ifeq "$(OS)" "Android"
+       ifeq "$(OS)" "Android"
                # Nothing to do, this is already handled in
                # Android.rules.
        else
                CXXFLAGS += -stdlib=libc++
                LDFLAGS += -stdlib=libc++
        endif
+       ifneq (,$(filter $(OS), FreeBSD Linux NetBSD))
+               ifneq (,$(LLVM_LIBS_DIR))
+                       LDFLAGS += -Wl,-rpath,$(LLVM_LIBS_DIR)
+               endif
+       endif
 endif
 
 #----------------------------------------------------------------------


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

Reply via email to