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
_______________________________________________ cfe-users mailing list cfe-users@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users