[cfe-users] Address Sanitizer Link Error

Peter Caspers pcaspers1973 at gmail.com
Sat May 10 11:34:57 PDT 2014


oh, sorry sorry sorry. My fault. My compiler-rt svn revision was
inconsistent with the other parts of llvm. Now everything works fine.

(btw, make update does not work for me - runs forever seemingly with
no progress at all. I used to do updates manually therefore. Now I
have a script for that :-) )

thanks and sorry again for wasting your time
Peter

On 7 May 2014 20:15, Peter Caspers <pcaspers1973 at gmail.com> wrote:
> here are the invocations for the linker step, with clang++ and clang.
> Indeed, only in the first case -lstdc++, this seems to be derived from
> the command name itself. Regarding the address sanitizer it seems that
> only libclang_rt.asan-x86_64.a, which seems properly installed in the
> correct path. Does anyone spot something suspicious ?
>
>  "/usr/bin/ld" -whole-archive
> /usr/local/bin/../lib/clang/3.5.0/lib/linux/libclang_rt.asan-x86_64.a
> -no-whole-archive -z relro --hash-style=gnu --build-id --eh-frame-hdr
> -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o
> AswZSpreads /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o
> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o
> /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o
> -L/home/peter/boost_1_55_0/stage/lib
> -L/home/peter/quantlib/QuantLib/ql/.libs
> -L/usr/local/lib/clang/3.5.0/lib/linux/
> -L/usr/lib/gcc/x86_64-linux-gnu/4.8
> -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu
> -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu
> -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. -L/usr/local/bin/../lib
> -L/lib -L/usr/lib /tmp/AswZSpreads-f59282.o -lQuantLib -lpthread -lrt
> -lm -ldl -export-dynamic -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc
> /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o
> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o
>
> "/usr/bin/ld" -whole-archive
> /usr/local/bin/../lib/clang/3.5.0/lib/linux/libclang_rt.asan-x86_64.a
> -no-whole-archive -z relro --hash-style=gnu --build-id --eh-frame-hdr
> -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o
> AswZSpreads /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o
> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o
> /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o
> -L/home/peter/boost_1_55_0/stage/lib
> -L/home/peter/quantlib/QuantLib/ql/.libs
> -L/usr/local/lib/clang/3.5.0/lib/linux/
> -L/usr/lib/gcc/x86_64-linux-gnu/4.8
> -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu
> -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu
> -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. -L/usr/local/bin/../lib
> -L/lib -L/usr/lib /tmp/AswZSpreads-606e7c.o -lQuantLib -lpthread -lrt
> -lm -ldl -export-dynamic -lgcc --as-needed -lgcc_s --no-as-needed -lc
> -lgcc --as-needed -lgcc_s --no-as-needed
> /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o
> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o
>
> On 7 May 2014 11:11, Peter Caspers <pcaspers1973 at gmail.com> wrote:
>> what I observe is that if I use clang (instead of clang++) for the
>> link step, I get a different error (undefined reference to symbol
>> ___cxa_free_exception@@CXXABI_1.3). I thought, that clang++ is just a
>> synonym for clang ? How does that magic happen ?
>> Thanks again
>> Peter
>>
>> On 7 May 2014 11:08, Peter Caspers <pcaspers1973 at gmail.com> wrote:
>>> I tried the link step from the command line manually, but get the same
>>> error messages.
>>> In which library is __asan_memcpy expected to reside ?
>>> Thanks
>>> Peter
>>>
>>> On 6 May 2014 12:23, Jeffrey Walton <noloader at gmail.com> wrote:
>>>> On Tue, May 6, 2014 at 5:36 AM, Peter Caspers <pcaspers1973 at gmail.com> wrote:
>>>>> yes, I use clang with the sanitize option to link. I have the
>>>>> following libs installed
>>>>>
>>>>> peter at peter-ThinkPad-W520:/usr/local/lib/clang/3.5.0/lib/linux$ ls
>>>>> libclang_rt.asan-x86_64.a   libclang_rt.lsan-x86_64.a
>>>>> libclang_rt.san-x86_64.a        libclang_rt.ubsan-x86_64.a
>>>>> libclang_rt.dfsan-x86_64.a  libclang_rt.msan-x86_64.a
>>>>> libclang_rt.tsan-x86_64.a
>>>>> libclang_rt.full-x86_64.a   libclang_rt.profile-x86_64.a
>>>>> libclang_rt.ubsan_cxx-x86_64.a
>>>>>
>>>>> You think that should work then ?
>>>> How do you invoke Clang? Are the sanitizer flags part of CFLAGS and CXXFLAGS?
>>>>
>>>> Is this an Autools project? Sometimes you have to be creative with
>>>> Autotools projects. For example, you might need to do:
>>>>
>>>>     export CC="clang -fsanitize=undefined -fsanitize=address"
>>>>     export CXX="clang -fsanitize=undefined -fsanitize=address
>>>> -fno-sanitize=vptr"
>>>>
>>>> That's because there will sometimes be a link line that *omits* CFLAGS
>>>> and CXXFLAGS. For example:
>>>>
>>>>     # Link using the compiler...
>>>>     $(CC) -o $(program_name) $(OBJECTS) $(LDFLAGS) $(LDLIBS)
>>>>
>>>> On Mac OS X, I also find I need to set DYLD_FALLBACK_LIBRARY_PATH
>>>> before executing:
>>>>
>>>>     export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/lib/clang/3.4/lib/darwin/
>>>>     ./my_program
>>>>
>>>> I don't recall doing similar on Linux. (But I may have done it and
>>>> forgotten about it).
>>>>
>>>> Jeff



More information about the cfe-users mailing list