[Lldb-commits] [lldb] r169767 - in /lldb/trunk: lib/Makefile source/Core/Makefile source/Utility/Makefile

Chris Lattner clattner at apple.com
Mon Dec 10 22:02:10 PST 2012


On Dec 10, 2012, at 1:05 PM, Daniel Malea <daniel.malea at intel.com> wrote:

> Author: dmalea
> Date: Mon Dec 10 15:05:57 2012
> New Revision: 169767
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=169767&view=rev
> Log:
> Enable RTTI for liblldbCore.a when GCC is the compiler
> - gcc does not like -fno-rtti mixed with dynamic_cast<> (in cxa_demangle.cpp)

FWIW, another approach might just be to use the system version of __cxa_demangle on linux.  We use cxa_demangle.cpp on the mac specifically to work around system bugs with C++'11 symbols.  If this isn't a concern, you could just disable that file entirely.

-Chris

> 
> 
> Modified:
>    lldb/trunk/lib/Makefile
>    lldb/trunk/source/Core/Makefile
>    lldb/trunk/source/Utility/Makefile
> 
> Modified: lldb/trunk/lib/Makefile
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lib/Makefile?rev=169767&r1=169766&r2=169767&view=diff
> ==============================================================================
> --- lldb/trunk/lib/Makefile (original)
> +++ lldb/trunk/lib/Makefile Mon Dec 10 15:05:57 2012
> @@ -67,6 +67,14 @@
> 	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 \
> 
> Modified: lldb/trunk/source/Core/Makefile
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Makefile?rev=169767&r1=169766&r2=169767&view=diff
> ==============================================================================
> --- lldb/trunk/source/Core/Makefile (original)
> +++ lldb/trunk/source/Core/Makefile Mon Dec 10 15:05:57 2012
> @@ -11,4 +11,15 @@
> 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
> 
> Modified: lldb/trunk/source/Utility/Makefile
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/Makefile?rev=169767&r1=169766&r2=169767&view=diff
> ==============================================================================
> --- lldb/trunk/source/Utility/Makefile (original)
> +++ lldb/trunk/source/Utility/Makefile Mon Dec 10 15:05:57 2012
> @@ -12,4 +12,11 @@
> 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
> 
> 
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits




More information about the lldb-commits mailing list