This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug sanitizer/80953] Support libsanitizer on Solaris
- From: "m.ostapenko at samsung dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 07 Jun 2017 18:54:27 +0000
- Subject: [Bug sanitizer/80953] Support libsanitizer on Solaris
- Auto-submitted: auto-generated
- References: <bug-80953-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80953
Maxim Ostapenko <m.ostapenko at samsung dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |m.ostapenko at samsung dot com
--- Comment #6 from Maxim Ostapenko <m.ostapenko at samsung dot com> ---
(In reply to Rainer Orth from comment #5)
> Created attachment 41484 [details]
> Merge libsanitizer from compiler-rt r304722
>
> I've now completed a merge of llvm r304722 into gcc trunk libsanitizer.
> Most of
> it was straightforward, but a couple of issues may save others work:
>
> * Two bugs in sanitizer_common/sanitizer_symbolizer_libbacktrace.cc have
> already
> been reported upstream: https://reviews.llvm.org/D33933
>
> * In libubsan, __ubsan_handle_type_mismatch has been renamed to
> __ubsan_handle_type_mismatch_v1, and likewise for
> __ubsan_handle_type_mismatch_abort__ubsan_handle_type_mismatch_v1_abort
>
> The sanitizer.def and ubsan.c changes reflect this. Worse, however,
> the former uptr Alignment member of ubsan/ubsan_handlers.h was changed to
> unsigned char LogAlignment. This needs a corresponding gcc change to pass
> log2(align) instead of just align.
>
> * Many (all) */float-cast-overflow-*.c tests FAILed initially because of a
> message change:
>
> runtime error: value -133 is outside the range of representable values of
> type 'signed char'
>
> lost the leading "value"
>
> With these gcc side changes, testresults on x86_64-pc-linux-gnu are identical
> to those with current gcc trunk, with the exception of
>
> +FAIL: c-c++-common/asan/pr63888.c -O2 execution test
> +FAIL: c-c++-common/asan/pr63888.c -O2 -flto execution test
> +FAIL: c-c++-common/asan/pr63888.c -O2 -flto -flto-partition=none
> execution t
> est
> +FAIL: c-c++-common/asan/pr63888.c -O3 -g execution test
> +FAIL: c-c++-common/asan/pr63888.c -Os execution test
>
> I get here
>
> =================================================================
> ==4734==ERROR: AddressSanitizer: odr-violation (0x0000004009e0):
> [1] size=12 'CSWTCH.1'
> /vol/gcc/src/hg/trunk/solaris-asan/gcc/testsuite/c-c++-common/asan/pr63888.c:
> 8:3
> [2] size=12 'CSWTCH.3'
> /vol/gcc/src/hg/trunk/solaris-asan/gcc/testsuite/c-c++-common/asan/pr63888.c:
> 21:3
> These globals were registered at these points:
> [1]:
> #0 0x7f2c9c48fb88 in __asan_register_globals
> /vol/gcc/src/hg/trunk/solaris-asan/libsanitizer/asan/asan_globals.cc:356
> #1 0x40097c in __libc_csu_init
> (/var/scratch/gcc/gcc-8.0.0-20170531/4.10.10-gcc-gas-gld-asan/gcc/testsuite/
> gcc17/pr63888.exe+0x40097c)
>
> [2]:
> #0 0x7f2c9c48fb88 in __asan_register_globals
> /vol/gcc/src/hg/trunk/solaris-asan/libsanitizer/asan/asan_globals.cc:356
> #1 0x40097c in __libc_csu_init
> (/var/scratch/gcc/gcc-8.0.0-20170531/4.10.10-gcc-gas-gld-asan/gcc/testsuite/
> gcc17/pr63888.exe+0x40097c)
>
> ==4734==HINT: if you don't care about these errors you may set
> ASAN_OPTIONS=detect_odr_violation=0
> SUMMARY: AddressSanitizer: odr-violation: global 'CSWTCH.1' at
> /vol/gcc/src/hg/trunk/solaris-asan/gcc/testsuite/c-c++-common/asan/pr63888.c:
> 8:3
> ==4734==ABORTING
>
> Someone who knows that code way better needs to look into this.
>
> Rainer
For ODR violation bug we have a local patch in libsanitizer. Could you check
whether you applied all local patches listed in libsanitizer/LOCAL_PATCHES
file?