[cfe-dev] i386 -faddress-sanitizer

Carsten Mattner carstenmattner at gmail.com
Thu Oct 18 07:23:53 PDT 2012


On Thu, Oct 18, 2012 at 3:36 PM, Alexander Potapenko <glider at google.com> wrote:
> Can you append -v at the place it's being invoked to check whether the
> contents of LDFLAGS are being actually passed?

$ clang <INPUT_OBJECTS> -lstdc++ -v -faddress-sanitizer -shared
<PROJECT_FLAGS> -o <SO_FILE>
clang
version 3.2 (http://llvm.org/git/clang.git
278eafa2cd8296f8128d13c6466a0ace3d03a872)
(http://llvm.org/git/llvm.git
2360b7ad99eedecaae512373e7be49c2143550cf)
Target: i386-pc-linux-gnu
Thread model: posix

"/usr/bin/ld" --eh-frame-hdr -m elf_i386 -shared -o <SO_FILE>
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../crti.o
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/crtbeginS.o
-L/usr/lib/gcc/i686-pc-linux-gnu/4.7.2
-L/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../.. -L/lib -L/usr/lib
<INPUT_OBJECTS> -lstdc++ -lgcc --as-needed -lgcc_s --no-as-needed -lc
-lgcc --as-needed -lgcc_s --no-as-needed
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/crtendS.o
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../crtn.o

I guess the libasan archive should be part of the above call to ld.

> On Thu, Oct 18, 2012 at 5:33 PM, Carsten Mattner
> <carstenmattner at gmail.com> wrote:
>> On Thu, Oct 18, 2012 at 3:29 PM, Alexander Potapenko wrote:
>>> Are you linking with ld or clang?
>>> -faddress-sanitizer is a Clang flag, so if you're running `ld $LDFLAGS
>>> ...` to link your program, it won't work.
>>
>> clang.
>>
>>> On Thu, Oct 18, 2012 at 5:12 PM, Carsten Mattner
>>> <carstenmattner at gmail.com> wrote:
>>>> On Thu, Oct 18, 2012 at 12:27 AM, Eli Friedman wrote:
>>>>> On Wed, Oct 17, 2012 at 1:43 PM, Carsten Mattner
>>>>> <carstenmattner at gmail.com> wrote:
>>>>>> Is it expected that -faddress-sanitizer  does not work on i386 and fails
>>>>>> to properly link resulting in errors like 'undefined symbol: __asan_init'
>>>>>> at runtime?
>>>>>>
>>>>>> I have ./lib/clang/3.2/lib/linux/libclang_rt.asan-i386.a in llvm's installation,
>>>>>> but it doesn't look like it's linked automatically into the executable.
>>>>>>
>>>>>> CFLAGS:
>>>>>> -faddress-sanitizer -O1 -fno-omit-frame-pointer -g $PROJECT_FLAGS
>>>>>
>>>>> You need to pass in -faddress-sanitizer both when compiling and when
>>>>> linking an application.  Try something like
>>>>> "LDFLAGS=-faddress-sanitizer".
>>>>
>>>> Oh that makes a lot of sense and is kind of obvious in hindsight.
>>>> Yet it didn't work in a quick test. Any options I flags to pass for
>>>> verbose printfs to see what's happening you can suggest?
>>>> In the next test I'll also try to explicitly link the libasan archive
>>>> manually for ruling out issues with that archive.
>>>> _______________________________________________
>>>> cfe-dev mailing list
>>>> cfe-dev at cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>>
>>>
>>>
>>> --
>>> Alexander Potapenko
>>> Software Engineer
>>> Google Moscow
>
>
>
> --
> Alexander Potapenko
> Software Engineer
> Google Moscow



More information about the cfe-dev mailing list