[lldb-dev] Compilation failure on FreeBSD 8.

dawn at burble.org dawn at burble.org
Mon Sep 26 16:08:53 PDT 2011


I get this same error (and 17 others like it) compiling on Mac OS/X
in XCode version 3.2.6.  gcc --version says 4.2.1 (I assume that's the
gcc XCode is using but can't be sure).  uname -a says version is 10.8.0.

I followed the instructions documented here http://lldb.llvm.org/build.html
and started with a clean build.  This is building just lldb (no llvm/clang)
inside the XCode IDE.  

What's the actual source change to fix this?  Can you please send a patch?

Thanks in advance,
    -Dawn

On Thu, Sep 22, 2011 at 04:29:41PM +0200, Enrico Granata wrote:
> The reason for this error looks like an ambiguity in template resolution. In order to implement a "special" behavior for regex-based summaries, the Delete_Impl call uses template specialization:
>     template<typename K, typename V>
>     bool
>     Delete_Impl (ConstString type, Types<K,V>)
> vs.
>     template<typename V>
>     bool
>     Delete_Impl (ConstString type, Types<lldb::RegularExpressionSP,V>)
> 
> Your compiler seems to be inferring correctly the template arguments, but has a doubt on whether it should pick the specialized function, or the general one replacing K = lldb::RegularExpressionSP
> 
> This is the first time I see a compiler being confused at this (LLDB is routinely compiled with clang and I guess several people compile it on Linux with GCC as well). This idiom is actually a quite common way to obtain one-function-specialization-inside-class-template.
> 
> In order to try and solve this, could you try to clean your LLDB build folder and try to build LLDB alone without the rest of LLVM, or using a different more recent version of GCC?
> 
> - Enrico Granata
> 
> On Sep 22, 2011, at 4:07 PM, arrowdodger wrote:
> 
> > Hello. I'm compiling trunk LLVM + trunk lldb on i386 FreeBSD 8 system (GCC 4.2.1) and see this error:
> > 
> > /usr/code/llvm/tools/lldb/source/Commands/../../include/lldb/Core/FormatNavigator.h: In member function 'bool lldb_private::FormatNavigator<KeyType, ValueType>::Delete(lldb_private::ConstString) [with KeyType = lldb_private::SharingPtr<lldb_private::RegularExpression>, ValueType = lldb_private::SummaryFormat]':
> > CommandObjectType.cpp:1064:   instantiated from here
> > /usr/code/llvm/tools/lldb/source/Commands/../../include/lldb/Core/FormatNavigator.h:269: error: call of overloaded 'Delete_Impl(lldb_private::ConstString&, lldb_private::FormatNavigator<lldb_private::SharingPtr<lldb_private::RegularExpression>, lldb_private::SummaryFormat>::Types<lldb_private::SharingPtr<lldb_private::RegularExpression>, lldb_private::SummaryFormat>)' is ambiguous
> > /usr/code/llvm/tools/lldb/source/Commands/../../include/lldb/Core/FormatNavigator.h:333: note: candidates are: bool lldb_private::FormatNavigator<KeyType, ValueType>::Delete_Impl(lldb_private::ConstString, lldb_private::FormatNavigator<KeyType, ValueType>::Types<K, V>) [with K = lldb_private::SharingPtr<lldb_private::RegularExpression>, V = lldb_private::SummaryFormat, KeyType = lldb_private::SharingPtr<lldb_private::RegularExpression>, ValueType = lldb_private::SummaryFormat]
> > /usr/code/llvm/tools/lldb/source/Commands/../../include/lldb/Core/FormatNavigator.h:340: note:                 bool lldb_private::FormatNavigator<KeyType, ValueType>::Delete_Impl(lldb_private::ConstString, lldb_private::FormatNavigator<KeyType, ValueType>::Types<lldb_private::SharingPtr<lldb_private::RegularExpression>, V>) [with V = lldb_private::SummaryFormat, KeyType = lldb_private::SharingPtr<lldb_private::RegularExpression>, ValueType = lldb_private::SummaryFormat]
> > 
> > _______________________________________________
> > lldb-dev mailing list
> > lldb-dev at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> 

> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev




More information about the lldb-dev mailing list