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

Malea, Daniel daniel.malea at intel.com
Tue Dec 11 17:27:05 PST 2012


Hi Chris, thanks for the note; I like the simpler approach you suggest.

I tried it out and it seems to work on Linux with both clang/gcc. Unless someone has any concerns, I will revert r169767 and conditionally compile source/Core/cxa_demangle.cpp if the host is Darwin.


Thanks,
Dan



On 2012-12-11, at 1:02 AM, Chris Lattner wrote:

> 
> 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