aboutsummaryrefslogtreecommitdiff
path: root/lldb
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2021-01-24 20:21:57 +0000
committerFangrui Song <i@maskray.me>2021-01-24 20:21:57 +0000
commit50830e50031b5420f09f79e82cf6ec984fb8328d (patch)
tree63724ae8667ea5fdbd64a068cbeb46a8ced57299 /lldb
parent16baad8f4e02aea19224da0d397b2f72980b15da (diff)
downloadllvm-50830e50031b5420f09f79e82cf6ec984fb8328d.zip
llvm-50830e50031b5420f09f79e82cf6ec984fb8328d.tar.gz
llvm-50830e50031b5420f09f79e82cf6ec984fb8328d.tar.bz2
[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
Diffstat (limited to 'lldb')
-rw-r--r--lldb/packages/Python/lldbsuite/test/dotest.py2
-rw-r--r--lldb/packages/Python/lldbsuite/test/make/Makefile.rules20
2 files changed, 6 insertions, 16 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/dotest.py b/lldb/packages/Python/lldbsuite/test/dotest.py
index c728bf3..b8bfbab 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 374dd68..f4aa6d6 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
#----------------------------------------------------------------------