We do not include the OSX library headers directly, so we actually need to add the suffixes manually. Until now this was only done for $UNIX2003, but it looks like we'll have to handle at least $INODE64 as well.
On Tue, Jul 16, 2013 at 4:42 PM, Jean-Daniel Dupas <devli...@shadowlab.org> wrote: > Argh, forget my previous comment. > > As the OS X interceptor is based on dyld interposition, it uses symbols > directly (and not symbol name string), so the compiler should also alias the > readdir interceptor and replace it by readdir$INODE64 as expected. > > Le 16 juil. 2013 à 14:35, Jean-Daniel Dupas <devli...@shadowlab.org> a écrit > : > > Hi, > > I also encounter this issue and I think your fix will not work. > > While it fixes compilation, it introduce a latent bug as now the structure > definition in asan no longer match the one readdir expects. > > When compiling for 10.6 and later, OS X implicitly replace call to readdir > (and other functions) by readdir$INODE64 call which properly handle the > 64bit structure, but call to readdir will always use the old structure. > > So if using 64 bit version of the dirent struct, ASAN should interpose > readdir$INODE64 and not readdir symbol. > > > Le 16 juil. 2013 à 13:58, Alexey Samsonov <samso...@google.com> a écrit : > > Hi Emmanuel! > > I found out what the problem was: we defined dirent structure for Mac OS X > 10.5, and in your case the runtime was compiled with > -mmacosx-version-min=10.7. > This problem should be fixed by r186404. > > > On Sat, Jul 13, 2013 at 10:25 PM, Emmanuel Thivierge <monamim...@gmail.com> > wrote: >> >> Hi, >> >> Thanks a lot for your help. >> >> My version of osX is 10.8.4 >> And the define __DARWIN_64_BIT_INO_T is define to 1. >> >> I hope this help. >> >> The reason I am compiling Address sanitizer is that I might need it is i >> run into problems while developing. >> >> Thanks again >> >> Emmanuel >> >> On 2013-07-12, at 9:05 AM, Alexey Samsonov <samso...@google.com> wrote: >> >> Hi! >> >> On Fri, Jul 12, 2013 at 4:34 AM, Mani <monamim...@gmail.com> wrote: >>> >>> Hi all, >>> >>> i have been compiling clang for months without problems, until about last >>> week. Since then I can't compile. >>> >>> usually delete CMakeCache.txt then run >>> cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DLLVM_TARGETS_TO_BUILD="X86" >>> -DCMAKE_C_COMPILER=/usr/local/bin/clang >>> -DCMAKE_CXX_COMPILER=/usr/local/bin/clang++ -DCMAKE_CXX_FLAGS="-std=c++11 >>> -stdlib=libc++" -DCMAKE_SHARED_LINKER_FLAGS="-std=c++11 -stdlib=libc++" >>> -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_WERROR=OFF -DLLVM_BUILD_TOOLS=ON >>> -DLLVM_BUILD_EXAMPLES=OFF -DCLANG_BUILD_EXAMPLES=OFF -DLLVM_APPEND_VC_REV=ON >>> /Users/Mani/Development/Projects/llvm/source >>> ln -s $PWD/compile_commands.json >>> /Users/Mani/Development/Projects/llvm/source >>> >>> and then run >>> make -j10 ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1 >>> >>> Here is what i get. >>> >>> [ 15%] [ 16%] Built target clang_rt.x86_64 >>> Built target clang_rt.i386 >>> [ 16%] >>> /Users/Mani/Development/Projects/llvm/source/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:799:1: >>> error: 'assertion_failed__799' >>> declared as an array with a negative size >>> CHECK_SIZE_AND_OFFSET(dirent, d_ino); >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>> >>> /Users/Mani/Development/Projects/llvm/source/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:726:3: >>> note: expanded from macro >>> 'CHECK_SIZE_AND_OFFSET' >>> COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *) NULL)->MEMBER) == \ >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>> >>> /Users/Mani/Development/Projects/llvm/source/projects/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h:239:30: >>> note: expanded from macro 'COMPILER_CHECK' >>> #define COMPILER_CHECK(pred) IMPL_COMPILER_ASSERT(pred, __LINE__) >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>> >>> /Users/Mani/Development/Projects/llvm/source/projects/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h:245:57: >>> note: expanded from macro >>> 'IMPL_COMPILER_ASSERT' >>> typedef char IMPL_PASTE(assertion_failed_##_, line)[2*(int)(pred)-1] >>> ^~~~~~~~~~~~~~~ >>> >>> /Users/Mani/Development/Projects/llvm/source/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:803:1: >>> error: 'assertion_failed__803' >>> declared as an array with a negative size >>> CHECK_SIZE_AND_OFFSET(dirent, d_reclen); >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>> >>> /Users/Mani/Development/Projects/llvm/source/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:728:3: >>> note: expanded from macro >>> 'CHECK_SIZE_AND_OFFSET' >>> COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) == \ >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>> >>> /Users/Mani/Development/Projects/llvm/source/projects/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h:239:30: >>> note: expanded from macro 'COMPILER_CHECK' >>> #define COMPILER_CHECK(pred) IMPL_COMPILER_ASSERT(pred, __LINE__) >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>> >>> /Users/Mani/Development/Projects/llvm/source/projects/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h:245:57: >>> note: expanded from macro >>> 'IMPL_COMPILER_ASSERT' >>> typedef char IMPL_PASTE(assertion_failed_##_, line)[2*(int)(pred)-1] >>> ^~~~~~~~~~~~~~~ >>> 2 errors generated. >>> Built target RTLSanCommon.osx >>> make[2]: *** >>> [projects/compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.osx.dir/sanitizer_platform_limits_posix.cc.o] >>> Error 1 >>> make[1]: *** >>> [projects/compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.osx.dir/all] >>> Error 2 >>> make[1]: *** Waiting for unfinished jobs…. >>> >>> Anybody know what going on? >> >> >> You've got a problem with compiling AddressSanitizer runtime: it >> incorrectly defines "dirent" structure (normally it comes from >> /usr/include/sys/dirent.h). >> 1) Which OS X version do you use? >> 2) What is the value of __DARWIN_64_BIT_INO_T on your system? (you may >> check it by including sys/cdefs.h and looking at the value of this >> definition). >> >> Note that if you're not interested in ASan, you may just build clang as >> follows: >> "make -j10 ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1 clang" >> >>> >>> Thanks >>> Emmanuel >>> _______________________________________________ >>> cfe-users mailing list >>> cfe-users@cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users >> >> >> >> >> -- >> Alexey Samsonov, MSK >> >> > > > > -- > Alexey Samsonov, MSK > _______________________________________________ > cfe-users mailing list > cfe-users@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users > > > -- Jean-Daniel > > > > > _______________________________________________ > cfe-users mailing list > cfe-users@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users > > > -- Jean-Daniel > > > > -- Alexander Potapenko Software Engineer Google Moscow _______________________________________________ cfe-users mailing list cfe-users@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users