This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [libsanitizer] merge fresh sources from upstream


On Fri, Nov 23, 2012 at 04:35:29PM +0400, Konstantin Serebryany wrote:
> > Ok, provided it has been properly tested
> 
> The upstream library is continuously tested on Linux, Mac, Windows and Android
> using the existing test suite (unfortunately, the build bots are
> private so far).

Yeah, but one thing is testing it inside of llvm built with clang, and
another one to test what is in the gcc tree.  We really don't want to break
bootstrap again (happened for some time immediately after asan was merged
and for 4 revisions again for i686-linux when tsan was merged).

> > make -C gcc check-g{cc,++} RUNTESTFLAGS='--target_board=unix\{-m32,-m64\} asan.exp'
> 
> The tests fail even w/o this change for me.
> The reports look like
>     #0 0x555c96f2 in  ??:0
>     #1 0x80488d1 in  ??:0
> i.e. either the debug info is missing or the symbolizer script is not working.
> Any suggestion?

That is strange.  What addr2line you are using?  If you look at
gcc/testsuite/gcc/gcc.log
there should be lines like

Executing on host: addr2line -f -e /usr/lib64/libc-2.15.so 0x21734   (timeout = 300)
spawn -ignore SIGHUP addr2line -f -e /usr/lib64/libc-2.15.so 0x21734
??
??:0
Executing on host: addr2line -f -e /usr/src/gcc/obj2/gcc/testsuite/gcc/memcmp-1.exe 0x400a19   (timeout = 300)
spawn -ignore SIGHUP addr2line -f -e /usr/src/gcc/obj2/gcc/testsuite/gcc/memcmp-1.exe 0x400a19
main
??:0
Executing on host: addr2line -f -e /usr/src/gcc/obj2/x86_64-unknown-linux-gnu/libsanitizer/asan/.libs/libasan.so.0.0.0 0xb52f   (timeout = 300)
spawn -ignore SIGHUP addr2line -f -e /usr/src/gcc/obj2/x86_64-unknown-linux-gnu/libsanitizer/asan/.libs/libasan.so.0.0.0 0xb52f
memcmp
??:0

if using oldish addr2line which understands DWARF4, but doesn't cope with
constant class DW_AT_high_pc that GCC 4.8 now emits, or
like:

Executing on host: addr2line -f -e /usr/lib64/libc-2.15.so 0x21734   (timeout = 300)
spawn -ignore SIGHUP addr2line -f -e /usr/lib64/libc-2.15.so 0x21734
??
??:0
Executing on host: addr2line -f -e /usr/src/gcc/obj2/gcc/testsuite/gcc/memcmp-1.exe 0x400a19   (timeout = 300)
spawn -ignore SIGHUP addr2line -f -e /usr/src/gcc/obj2/gcc/testsuite/gcc/memcmp-1.exe 0x400a19
main
/usr/src/gcc/gcc/testsuite/c-c++-common/asan/memcmp-1.c:12
Executing on host: addr2line -f -e /usr/src/gcc/obj2/x86_64-unknown-linux-gnu/libsanitizer/asan/.libs/libasan.so.0.0.0 0xb52f   (timeout = 300)
spawn -ignore SIGHUP addr2line -f -e /usr/src/gcc/obj2/x86_64-unknown-linux-gnu/libsanitizer/asan/.libs/libasan.so.0.0.0 0xb52f
__interceptor_memcmp
/usr/src/gcc/obj2/x86_64-unknown-linux-gnu/libsanitizer/asan/../../../../libsanitizer/asan/asan_interceptors.cc:218

if using recent enough addr2line.

> Ooops. I actually edited it. How do I regenerate it? (I beg my pardon
> for a complete ignorance)

Well, in this case there should be really no difference, regeneration
should generate exactly what you hand edited I think.
But generally, one needs to use the standard GCC versions of
autoconf/automake (right now 2.64 and 1.11), and just run autoconf
(autoheader not needed for libsanitizer) and automake.
As people usually have different versions of the autotools installed, I
usually do
PATH=~/automake-1.11/bin:~/autoconf-2.64/bin:$PATH autoconf
PATH=~/automake-1.11/bin:~/autoconf-2.64/bin:$PATH automake
where I've installed autoconf and automake with the ~/automake-1.11 resp.
~/autoconf-2.64 --prefix.

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]