[lldb-dev] Using a undeclared free function in lldb Mangled.cpp causes build failure

Zack Perry zack.perry at sbcglobal.net
Thu Aug 15 11:36:53 PDT 2013


Hi Stefanus,

Thanks for your response?

> 0. why in a C++ code, the C free function is used?

Because it's calling into a C API (cxxabi). demangled_name comes from a
call to abi::__cxa_demangle(), which presumably calls malloc to allocate
its return value.

OK. Got that.


> 1. Why when using it, the #include <cstdlib> is nowhere in the source?

Mangled.cpp:25 is:
#include <stdlib.h>

No. This is incorrect. With lldb 3.3 official release tar ball, the #include that you mentioned is not there.


zackp at nb1:~/Downloads/clang3.3/lldb-3.3.src/source/Core$ grep stdlib.h Mangled.cpp
zackp at nb1:~/Downloads/clang3.3/lldb-3.3.src/source/Core$

I patched it as follows:

   11  #if defined(__APPLE__)
   12  #define USE_BUILTIN_LIBCXXABI_DEMANGLER 1
   13  #endif
   14  
   15  #if defined(USE_BUILTIN_LIBCXXABI_DEMANGLER)
   16  #include "lldb/Core/cxa_demangle.h"
   17  #else
   18  // FreeBSD9-STABLE requires this to know about size_t in cxxabi.h
   19  #include <cstddef>
   20  #include <cxxabi.h>
   21  #endif
   22  
   23  #include <cstdlib>
   24  #include "llvm/ADT/DenseMap.h"

My personal style is that if I code in C++, I use as much as possible C++ coding convention.

Regards,

-- Zack[...]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20130815/16fc310c/attachment.html>


More information about the lldb-dev mailing list