Enable RTTI for liblldbCore.a when GCC is the compiler

- gcc does not like -fno-rtti mixed with dynamic_cast<> (in cxa_demangle.cpp)

llvm-svn: 169767
This commit is contained in:
Daniel Malea 2012-12-10 21:05:57 +00:00
parent 7352e4ffcb
commit 48b917bceb
3 changed files with 26 additions and 0 deletions

View File

@ -67,6 +67,14 @@ USEDLIBS = lldbAPI.a \
lldbPluginPlatformLinux.a \
lldbPluginPlatformFreeBSD.a
# Because GCC requires RTTI enabled for lldbCore (see source/Core/Makefile) it is
# necessary to also link the clang rewriter libraries so vtable references can
# be resolved correctly, if we are building with GCC.
ifeq (g++,$(shell basename $(CXX)))
USEDLIBS += clangRewriteCore.a \
clangRewriteFrontend.a
endif
include $(LLDB_LEVEL)/../../Makefile.config
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter codegen \

View File

@ -11,4 +11,15 @@ LLDB_LEVEL := ../..
LIBRARYNAME := lldbCore
BUILD_ARCHIVE = 1
# Enable RTTI on GCC builds because one source file in this directory
# (cxa_demangle.cpp) uses dynamic_cast<> and GCC (at least 4.6 and 4.7)
# complain if we try to compile it with -fno-rtti. This is somewhat of a
# kludge because it forces us to enable RTTI in liblldbUtility.a and also
# link in additional clang static libraries to resolve vtable references,
# but actually has negligible impact on (shard object) file size.
$(info shell basename CXX is $(shell basename $(CXX)))
ifeq (g++,$(shell basename $(CXX)))
REQUIRES_RTTI = 1
endif
include $(LLDB_LEVEL)/Makefile

View File

@ -12,4 +12,11 @@ LIBRARYNAME := lldbUtility
BUILD_ARCHIVE = 1
NO_PEDANTIC = 1
# Enable RTTI on GCC builds because liblldbCore.a requires RTTI.
# See source/Core/Makefile for details.
ifeq (g++,$(shell basename $(CXX)))
REQUIRES_RTTI = 1
endif
include $(LLDB_LEVEL)/Makefile