Skip to content

Commit

Permalink
add Makefile rule for test program CREATE_STD_THREADS
Browse files Browse the repository at this point in the history
Effectively removes -lpthreads from linux/gcc build of test programs in test/api/multithreaded. This was done due to that combination causing a test program to hang due, likely due to an issue with gcc linker and libstdc++ conflicting pthreads code in test program and pthread used by lldb.  Issue has been documented at:
http://llvm.org/bugs/show_bug.cgi?id=21553

Differential Revision: http://reviews.llvm.org/D5838

llvm-svn: 222031
  • Loading branch information
Shawn Best committed Nov 14, 2014
1 parent 966064c commit 954eae0
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
2 changes: 1 addition & 1 deletion lldb/test/api/multithreaded/Makefile
@@ -1,6 +1,6 @@
LEVEL = ../../make

ENABLE_THREADS := YES
ENABLE_STD_THREADS := YES
CXX_SOURCES := main.cpp

include $(LEVEL)/Makefile.rules
Expand Down
20 changes: 17 additions & 3 deletions lldb/test/make/Makefile.rules
Expand Up @@ -120,9 +120,23 @@ LD = $(CC)
LDFLAGS ?= $(CFLAGS)
LDFLAGS += $(LD_EXTRAS)
ifneq "$(OS)" "Windows_NT"
ifeq "$(ENABLE_THREADS)" "YES"
LDFLAGS += -lpthread
endif
ifeq "$(ENABLE_THREADS)" "YES"
LDFLAGS += -lpthread
else
ifeq "$(ENABLE_STD_THREADS)" "YES"
# with the specific combination of Linux, g++, std=c++11, adding the
# linker flag -lpthread, will cause a program to hang when a std::conditional_variable
# is used in a program that links lldb (see bugzilla 21553)
ifeq "$(OS)" "Linux"
ifeq (,$(findstring gcc,$(CC)))
# Linux, but not gcc
LDFLAGS += -lpthread
endif
else
LDFLAGS += -lpthread
endif
endif
endif
endif
OBJECTS =
EXE ?= a.out
Expand Down

0 comments on commit 954eae0

Please sign in to comment.