On 23 November 2015 at 09:07, Jakub Jelinek <ja...@redhat.com> wrote: > On Mon, Nov 23, 2015 at 10:46:33AM +0300, Maxim Ostapenko wrote: >> Index: libsanitizer/configure.ac >> =================================================================== >> --- libsanitizer/configure.ac (revision 230597) >> +++ libsanitizer/configure.ac (working copy) >> @@ -136,6 +136,12 @@ >> esac >> AM_CONDITIONAL(USING_MAC_INTERPOSE, $MAC_INTERPOSE) >> >> +case "$target" in >> + aarch64-*-linux*) tsan_aarch64=true ;; >> + *) tsan_aarch64=false ;; >> +esac >> +AM_CONDITIONAL(TSAN_AARCH64, $tsan_aarch64) >> + > > I don't understand the purpose of the above. > >> Index: libsanitizer/configure.tgt >> =================================================================== >> --- libsanitizer/configure.tgt (revision 230597) >> +++ libsanitizer/configure.tgt (working copy) >> @@ -37,6 +37,8 @@ >> aarch64*-*-linux*) >> if test x$ac_cv_sizeof_void_p = x8; then >> TSAN_SUPPORTED=yes >> + LSAN_SUPPORTED=yes >> + TSAN_TARGET_DEPENDENT_OBJECTS=tsan_rtl_aarch64.lo >> fi >> ;; >> x86_64-*-darwin[1]* | i?86-*-darwin[1]*) > > You already have this. > >> Index: libsanitizer/tsan/Makefile.am >> =================================================================== >> --- libsanitizer/tsan/Makefile.am (revision 230597) >> +++ libsanitizer/tsan/Makefile.am (working copy) >> @@ -21,6 +21,8 @@ >> tsan_interface_atomic.cc \ >> tsan_interface.cc \ >> tsan_interface_java.cc \ >> + tsan_libdispatch_mac.cc \ >> + tsan_malloc_mac.cc \ >> tsan_md5.cc \ >> tsan_mman.cc \ >> tsan_mutex.cc \ >> @@ -28,6 +30,7 @@ >> tsan_new_delete.cc \ >> tsan_platform_linux.cc \ >> tsan_platform_mac.cc \ >> + tsan_platform_posix.cc \ >> tsan_platform_windows.cc \ >> tsan_report.cc \ >> tsan_rtl.cc \ >> @@ -41,7 +44,11 @@ >> tsan_sync.cc >> >> libtsan_la_SOURCES = $(tsan_files) >> +if TSAN_AARCH64 >> +EXTRA_libtsan_la_SOURCES = tsan_rtl_aarch64.S >> +else >> EXTRA_libtsan_la_SOURCES = tsan_rtl_amd64.S >> +endif > > And if I understand automake manual, you can list in there both > EXTRA_libtsan_la_SOURCES = tsan_rtl_amd64.S tsan_rtl_aarch64.S > unconditionally, and what object actually gets linked in is picked from the > $(TSAN_TARGET_DEPENDENT_OBJECTS) (and similarly dependencies). > > Otherwise LGTM.
Since this commit (r230739), I've noticed that the arm*linux* builds fail: libtool: compile: /tmp/1800227_1.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-linux-gnueabi/gcc3/./gcc/xgcc -shared-libgcc -B/tmp/1800227_1.tmpdir/aci-gcc-fsf/builds/g cc-fsf-gccsrc/obj-arm-none-linux-gnueabi/gcc3/./gcc -nostdinc++ -L/tmp/1800227_1.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-linux-gnueabi/gcc3/arm-none-linux-gnueabi/ libstdc++-v3/src -L/tmp/1800227_1.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-linux-gnueabi/gcc3/arm-none-linux-gnueabi/libstdc++-v3/src/.libs -L/tmp/1800227_1.tmpdir/ aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-linux-gnueabi/gcc3/arm-none-linux-gnueabi/libstdc++-v3/libsupc++/.libs -B/tmp/1800227_1.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/t ools/arm-none-linux-gnueabi/bin/ -B/tmp/1800227_1.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/tools/arm-none-linux-gnueabi/lib/ -isystem /tmp/1800227_1.tmpdir/aci-gcc-fsf/builds/gc c-fsf-gccsrc/tools/arm-none-linux-gnueabi/include -isystem /tmp/1800227_1.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/tools/arm-none-linux-gnueabi/sys-include -D_GNU_SOURCE -D_DEBU G -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAVE_RPC_XDR_H=1 -DHAVE_TIRPC_RPC_XDR_H=0 -I. -I/tmp/1800227_1.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsr c/libsanitizer/sanitizer_common -I.. -I /tmp/1800227_1.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libsanitizer/include -isystem /tmp/1800227_1.tmpdir/aci-gcc-fsf/sources/gcc-fsf/ gccsrc/libsanitizer/include/system -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions -fno-rtti -fomit-frame-pointer -fun wind-tables -fvisibility=hidden -Wno-variadic-macros -I../../libstdc++-v3/include -I../../libstdc++-v3/include/arm-none-linux-gnueabi -I/tmp/1800227_1.tmpdir/aci-gcc-fsf/sources /gcc-fsf/gccsrc/libsanitizer/../libstdc++-v3/libsupc++ -std=gnu++11 -DSANITIZER_LIBBACKTRACE -DSANITIZER_CP_DEMANGLE -I /tmp/1800227_1.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/ libsanitizer/../libbacktrace -I ../libbacktrace -I /tmp/1800227_1.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libsanitizer/../include -include /tmp/1800227_1.tmpdir/aci-gcc-fsf/so urces/gcc-fsf/gccsrc/libsanitizer/libbacktrace/backtrace-rename.h -g -O2 -D_GNU_SOURCE -MT sanitizer_platform_limits_posix.lo -MD -MP -MF .deps/sanitizer_platform_limits_posix.T po -c /tmp/1800227_1.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc -fPIC -DPIC -o .libs/sanitizer_platform_limits_p osix.o /tmp/1800227_1.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:326:44: error: 'ARM_VFPREGS_SIZE' was not declared in t his scope unsigned struct_user_vfpregs_struct_sz = ARM_VFPREGS_SIZE; ^~~~~~~~~~~~~~~~ make[4]: *** [sanitizer_platform_limits_posix.lo] Error 1 make[4]: Leaving directory `/tmp/1800227_1.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-linux-gnueabi/gcc3/arm-none-linux-gnueabi/libsanitizer/sanitizer_common' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/tmp/1800227_1.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-linux-gnueabi/gcc3/arm-none-linux-gnueabi/libsanitizer' make[2]: *** [all] Error 2 make[2]: Leaving directory `/tmp/1800227_1.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-linux-gnueabi/gcc3/arm-none-linux-gnueabi/libsanitizer' make[1]: *** [all-target-libsanitizer] Error 2 make[1]: Leaving directory `/tmp/1800227_1.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-linux-gnueabi/gcc3' make: *** [all] Error 2 > > Jakub