[lldb-dev] LLDB @ Mac OSX: build on Snow Leopard (still) supported? [patch]

Jean-Daniel Dupas devlists at shadowlab.org
Wed Feb 5 16:42:20 PST 2014


Le 6 févr. 2014 à 00:42, Bjoern Kahl <mls at bjoern-kahl.de> a écrit :

> Am 05.02.14 23:22, schrieb Jason Molenda:
>> 
>> On Feb 5, 2014, at 1:35 PM, Bjoern Kahl <mls at bjoern-kahl.de> wrote:
>> 
>>> Well, I am still on Snow Leopard, and I intent to stay there for the
>>> foreseeable future. :-)
>> 
>> :) I think it's worth distinguishing between Snow Leopard build issues (e.g. the patch you attached) and issues of building a Mac OS X native lldb with a non-clang compiler like gcc 4.8 & the GNU libstdc++.  The last gcc release that Apple had (with Objective-C++ support) was 4.2.1 or so - which obviously won't work for lldb because of the C++11 use in the codebase.
> 
> I am not sure I understand you correctly.
> 
> Do you mean by "Mac OS X native lldb" to build with just the plain
> Mac OS X + Xcode installed?
> 
> I agree, that would probably be close to impossible.
> 
> 
> Building with Mac OS X + some decent OSS environment (MacPorts,
> Homebrew, Fink, ...) shouldn't be to hard.  I don't think the problems
> I had should exists.
> 
> In fact, I almost succeeded with the gcc-48, which has Objective-C
> support, but apparently not the latest, i.e. no "blocks" support, at
> least I found no option that enables this.
> 
> Trying clang was a major disappointment, because without "--enable-libcpp"
> configure just complained about a to old libc++ (it couldn't find
> "atomic" header), and with "--enable-libcpp" configure completed but
> the build failed in the first file including cmath due to missing
> declarations of llrint() and llround().  I guess I could have just
> hacked the systems cmath instead of installing a separate toolchain
> and libc++ in /usr/local, but I didn't want to touch system files.
> 
> 


The llrint/llround issue is well known when using clang on 10.6.

If you are compiling in a standard mode (aka -std=c++11), the system header will incorrectly exclude some maths functions.
This is not a compiler bug but a OS X SDK bug.

You can either try to use a gnu mode instead -std=gnu++11 or undefined the __STRICT_ANSI__ macro via some compiler flags:

clang -std=c++11 -U__STRICT_ANSI__

> 
>>> Actually, after a lot of tries, I succeeded to build current-lldb with
>>> only minimal changes to its source.  I had to touch only four files
>>> (patch attached, but needs additional configure test):
>>> 
>>> lib/Makefile                     :  added -lpanel
>>> source/Host/common/FileSpec.cpp  :  added missing #include <limits.h>
>>> source/Host/common/Host.cpp      :  worked around pthread_fchdir()
>>> source/Host/macosx/Host.mm       :  worked around pthread_fchdir()
>>> 
>>> That's all for LLDB.
>> 
>> Where did you define CONFIG_HAS_PTHREAD_CHDIR for your build?  It might be easier to add something like
> 
> :-) Nowhere.  The point was to have the pthread_chdir() code "ifdef'ed out"
> and use the variant for platforms that don't have these calls.
> 
> My intention was to have a configure test, if the platform supports it
> and then have or have not a "#define" in config.h.  Conditioning on a
> vendor isn't optimal, because other platforms may at some point also
> develop that pthread feature.
> 
> 
>> #if defined(__APPLE)
>> #include <AvailabilityMacros.h>
>> #if  MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_6
>> // __pthread_chdir and __pthread_fchdir are only available on Mac OS X 10.7 and later
>> #define CONFIG_HAS_PTHREAD_CHDIR
>> #endif
>> #endif
>> 
>> to common/Host.cpp.
> 
> Looks good to me, and much simpler then a vendor neutral test in
> configure.  I've added it to my tree, using "<Availability.h>".
> 
> 
> Björn
> 
> -- 
> |     Bjoern Kahl   +++   Siegburg   +++    Germany     |
> | "googlelogin at -my-domain-"   +++   www.bjoern-kahl.de  |
> | Languages: German, English, Ancient Latin (a bit :-)) |
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

-- Jean-Daniel








More information about the lldb-dev mailing list