<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">ASan (and other sanitizers) have dropped support for 10.6 long time ago, the intention of the commit (and another one before) in question was to explicitly specify that via -mmacosx-version-min, and also explicitly require libc++.  Libc++ is available on 10.7+ and ASan contains several interceptors that only work in libc++ mode.</div><div class=""><br class=""></div><div class="">Before these commits (or if we revert), the situation is that *it depends on your system* what C++ library will ASan link against.  The minimal OS X version is also set to your *current OS*.  This makes the resulting sanitizer dylibs have subtle differences based on how/where the dylib was built.</div><div class=""><br class=""></div><div class="">Note that this should only apply to sanitizers - the parts of compiler-rt that are used for regular binaries are not dylibs, but .a files, and their required OS X version should be much lower.  If these .a are also affected by that patch, then that was unintentional and a bug.</div><div class=""><br class=""></div><div class="">Kuba</div><br class=""><div><blockquote type="cite" class=""><div class="">On Apr 13, 2015, at 4:39 PM, Nico Weber <<a href="mailto:thakis@google.com" class="">thakis@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote">On Sun, Apr 12, 2015 at 12:22 AM, Hans Wennborg <span dir="ltr" class=""><<a href="mailto:hans@chromium.org" target="_blank" class="">hans@chromium.org</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">+samsonov who did the Clang part in r233860<br class="">
<br class="">
We only do one compiler-rt build, and that is used for both asan and<br class="">
regular builds, so it needs to work with both.<br class="">
<br class="">
Nico: I assume parts of compiler-rt get linked into the target<br class="">
binaries, i.e. it's not just used for asan, right?<br class=""></blockquote><div class=""><br class=""></div><div class="">Yes:</div><div class=""><br class=""></div><div class="">$ clang test.c -v<br class=""></div><div class=""># ...</div><div class="">"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" ... /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/lib/darwin/libclang_rt.osx.a<br class=""></div><div class=""><br class=""></div><div class="">Since the commit description didn't say anything about intentionally dropping support for 10.6, I think it's ok to revert this for now.</div><div class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class=""><div class="h5"><br class="">
On Fri, Apr 10, 2015 at 10:17 AM, Alexander Potapenko <<a href="mailto:glider@google.com" class="">glider@google.com</a>> wrote:<br class="">
> I don't think we really need to require libc++ for ASan, but note that<br class="">
> ASan itself already requires 10.7.<br class="">
> Perhaps we should bump the target OS version in Chromium for asan==1?<br class="">
> (IIRC we don't have 10.6 machines on CF or bots)<br class="">
><br class="">
> On Fri, Apr 10, 2015 at 3:07 AM, Hans Wennborg <<a href="mailto:hans@chromium.org" class="">hans@chromium.org</a>> wrote:<br class="">
>> This seems to have broken Chromium's ASan build on Darwin, where we<br class="">
>> target Mac OS X 10.6 which IIUC doesn't have libc++.<br class="">
>><br class="">
>> Is libc++ now a hard requirement of the ASan run-time?<br class="">
>><br class="">
>> On Wed, Mar 25, 2015 at 2:07 PM, Kuba Brecka <<a href="mailto:kuba.brecka@gmail.com" class="">kuba.brecka@gmail.com</a>> wrote:<br class="">
>>> Author: kuba.brecka<br class="">
>>> Date: Wed Mar 25 16:07:20 2015<br class="">
>>> New Revision: 233215<br class="">
>>><br class="">
>>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=233215&view=rev" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=233215&view=rev</a><br class="">
>>> Log:<br class="">
>>> On OS X, explicitly use libc++<br class="">
>>><br class="">
>>> For OS X builds, both Make and CMake, let's be very explicit about using<br class="">
>>> libc++ and libc++abi with:<br class="">
>>><br class="">
>>> 1) -stdlib=libc++ in CFLAGS and LDFLAGS for all platforms<br class="">
>>> 2) -lc++ in LDFLAGS for all platforms<br class="">
>>> 3) switch from -undefined dynamic_lookup to -lc++abi for UBSan in<br class="">
>>>    Makefile-based builds<br class="">
>>><br class="">
>>> Reviewed at <a href="http://reviews.llvm.org/D8617" target="_blank" class="">http://reviews.llvm.org/D8617</a><br class="">
>>><br class="">
>>><br class="">
>>> Modified:<br class="">
>>>     compiler-rt/trunk/CMakeLists.txt<br class="">
>>>     compiler-rt/trunk/make/platform/<a href="http://clang_darwin.mk/" target="_blank" class="">clang_darwin.mk</a><br class="">
>>><br class="">
>>> Modified: compiler-rt/trunk/CMakeLists.txt<br class="">
>>> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/CMakeLists.txt?rev=233215&r1=233214&r2=233215&view=diff" target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/CMakeLists.txt?rev=233215&r1=233214&r2=233215&view=diff</a><br class="">
>>> ==============================================================================<br class="">
>>> --- compiler-rt/trunk/CMakeLists.txt (original)<br class="">
>>> +++ compiler-rt/trunk/CMakeLists.txt Wed Mar 25 16:07:20 2015<br class="">
>>> @@ -302,10 +302,12 @@ if(APPLE)<br class="">
>>>    set(DARWIN_osx_CFLAGS -mmacosx-version-min=${SANITIZER_MIN_OSX_VERSION}<br class="">
>>>      -stdlib=libc++)<br class="">
>>>    set(DARWIN_iossim_CFLAGS<br class="">
>>> +    -stdlib=libc++<br class="">
>>>      -mios-simulator-version-min=7.0 -isysroot ${IOSSIM_SDK_DIR})<br class="">
>>>    set(DARWIN_osx_LINKFLAGS -mmacosx-version-min=${SANITIZER_MIN_OSX_VERSION}<br class="">
>>> -     -stdlib=libc++)<br class="">
>>> +    -stdlib=libc++ -lc++)<br class="">
>>>    set(DARWIN_iossim_LINKFLAGS<br class="">
>>> +    -stdlib=libc++ -lc++<br class="">
>>>      -Wl,-ios_simulator_version_min,7.0.0<br class="">
>>>      -mios-simulator-version-min=7.0<br class="">
>>>      -isysroot ${IOSSIM_SDK_DIR})<br class="">
>>><br class="">
>>> Modified: compiler-rt/trunk/make/platform/<a href="http://clang_darwin.mk/" target="_blank" class="">clang_darwin.mk</a><br class="">
>>> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/platform/clang_darwin.mk?rev=233215&r1=233214&r2=233215&view=diff" target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/platform/clang_darwin.mk?rev=233215&r1=233214&r2=233215&view=diff</a><br class="">
>>> ==============================================================================<br class="">
>>> --- compiler-rt/trunk/make/platform/<a href="http://clang_darwin.mk/" target="_blank" class="">clang_darwin.mk</a> (original)<br class="">
>>> +++ compiler-rt/trunk/make/platform/<a href="http://clang_darwin.mk/" target="_blank" class="">clang_darwin.mk</a> Wed Mar 25 16:07:20 2015<br class="">
>>> @@ -178,29 +178,27 @@ CFLAGS.10.4               := $(CFLAGS) $(OSX_DEPLOYME<br class="">
>>>  SANITIZER_MACOSX_DEPLOYMENT_ARGS := -mmacosx-version-min=10.7<br class="">
>>>  SANITIZER_IOSSIM_DEPLOYMENT_ARGS := -mios-simulator-version-min=7.0 \<br class="">
>>>    -isysroot $(IOSSIM_SDK)<br class="">
>>> -SANITIZER_CFLAGS := -fno-builtin -gline-tables-only<br class="">
>>> +SANITIZER_CFLAGS := -fno-builtin -gline-tables-only -stdlib=libc++<br class="">
>>><br class="">
>>>  CFLAGS.asan_osx_dynamic := \<br class="">
>>>         $(CFLAGS) $(SANITIZER_MACOSX_DEPLOYMENT_ARGS) \<br class="">
>>>         $(SANITIZER_CFLAGS) \<br class="">
>>> -       -stdlib=libc++ \<br class="">
>>>         -DMAC_INTERPOSE_FUNCTIONS=1 \<br class="">
>>>         -DASAN_DYNAMIC=1<br class="">
>>><br class="">
>>>  CFLAGS.asan_iossim_dynamic := \<br class="">
>>>         $(CFLAGS) $(SANITIZER_IOSSIM_DEPLOYMENT_ARGS) \<br class="">
>>> -  $(SANITIZER_CFLAGS) \<br class="">
>>> +       $(SANITIZER_CFLAGS) \<br class="">
>>>         -DMAC_INTERPOSE_FUNCTIONS=1 \<br class="">
>>>         -DASAN_DYNAMIC=1<br class="">
>>><br class="">
>>>  CFLAGS.ubsan_osx_dynamic := \<br class="">
>>>         $(CFLAGS) $(SANITIZER_MACOSX_DEPLOYMENT_ARGS) \<br class="">
>>> -       $(SANITIZER_CFLAGS) \<br class="">
>>> -       -stdlib=libc++<br class="">
>>> +       $(SANITIZER_CFLAGS)<br class="">
>>><br class="">
>>>  CFLAGS.ubsan_iossim_dynamic := \<br class="">
>>>         $(CFLAGS) $(SANITIZER_IOSSIM_DEPLOYMENT_ARGS) \<br class="">
>>> -  $(SANITIZER_CFLAGS)<br class="">
>>> +       $(SANITIZER_CFLAGS)<br class="">
>>><br class="">
>>><br class="">
>>>  CFLAGS.ios.i386                := $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS)<br class="">
>>> @@ -232,10 +230,10 @@ CFLAGS.profile_ios.armv7k := $(CFLAGS) $<br class="">
>>>  CFLAGS.profile_ios.armv7s := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)<br class="">
>>>  CFLAGS.profile_ios.arm64  := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS)<br class="">
>>><br class="">
>>> -SANITIZER_LDFLAGS := -undefined dynamic_lookup<br class="">
>>> +SANITIZER_LDFLAGS := -stdlib=libc++ -lc++<br class="">
>>><br class="">
>>>  SHARED_LIBRARY.asan_osx_dynamic := 1<br class="">
>>> -LDFLAGS.asan_osx_dynamic := -lc++ $(SANITIZER_LDFLAGS) -install_name @rpath/libclang_rt.asan_osx_dynamic.dylib \<br class="">
>>> +LDFLAGS.asan_osx_dynamic := $(SANITIZER_LDFLAGS) -install_name @rpath/libclang_rt.asan_osx_dynamic.dylib \<br class="">
>>>    $(SANITIZER_MACOSX_DEPLOYMENT_ARGS)<br class="">
>>><br class="">
>>>  SHARED_LIBRARY.asan_iossim_dynamic := 1<br class="">
>>> @@ -243,11 +241,11 @@ LDFLAGS.asan_iossim_dynamic := $(SANITIZ<br class="">
>>>    -Wl,-ios_simulator_version_min,7.0.0 $(SANITIZER_IOSSIM_DEPLOYMENT_ARGS)<br class="">
>>><br class="">
>>>  SHARED_LIBRARY.ubsan_osx_dynamic := 1<br class="">
>>> -LDFLAGS.ubsan_osx_dynamic := -lc++ $(SANITIZER_LDFLAGS) -install_name @rpath/libclang_rt.ubsan_osx_dynamic.dylib \<br class="">
>>> +LDFLAGS.ubsan_osx_dynamic := $(SANITIZER_LDFLAGS) -lc++abi -install_name @rpath/libclang_rt.ubsan_osx_dynamic.dylib \<br class="">
>>>    $(SANITIZER_MACOSX_DEPLOYMENT_ARGS)<br class="">
>>><br class="">
>>>  SHARED_LIBRARY.ubsan_iossim_dynamic := 1<br class="">
>>> -LDFLAGS.ubsan_iossim_dynamic := $(SANITIZER_LDFLAGS) -install_name @rpath/libclang_rt.ubsan_iossim_dynamic.dylib \<br class="">
>>> +LDFLAGS.ubsan_iossim_dynamic := $(SANITIZER_LDFLAGS) -lc++abi -install_name @rpath/libclang_rt.ubsan_iossim_dynamic.dylib \<br class="">
>>>    -Wl,-ios_simulator_version_min,7.0.0 $(SANITIZER_IOSSIM_DEPLOYMENT_ARGS)<br class="">
>>><br class="">
>>>  ifneq ($(OSX_SDK),)<br class="">
>>><br class="">
>>><br class="">
>>> _______________________________________________<br class="">
>>> llvm-commits mailing list<br class="">
>>> <a href="mailto:llvm-commits@cs.uiuc.edu" class="">llvm-commits@cs.uiuc.edu</a><br class="">
>>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br class="">
><br class="">
><br class="">
><br class="">
> --<br class="">
> Alexander Potapenko<br class="">
> Software Engineer<br class="">
> Google Moscow<br class="">
</div></div></blockquote></div><br class=""></div></div>
</div></blockquote></div><br class=""></body></html>