[compiler-rt] r183645 - tsan: fix old gcc warnings

Alexey Samsonov samsonov at google.com
Tue Jun 11 03:15:31 PDT 2013


compiler-rt mostly uses the same warning as LLVM/Clang.

I vote for adding -Wno-maybe-uninitialized to custom gotsan build script.


On Tue, Jun 11, 2013 at 12:43 AM, David Blaikie <dblaikie at gmail.com> wrote:

> On Mon, Jun 10, 2013 at 4:15 AM, Dmitry Vyukov <dvyukov at google.com> wrote:
> > On Mon, Jun 10, 2013 at 3:14 PM, Dmitry Vyukov <dvyukov at google.com>
> wrote:
> >> It's gcc4.7 and it says:
> >
> > gcc gotsan.cc -S -o tmp.s -I../rtl -I../.. -I../../sanitizer_common
> > -I../../../include -m64 -Wall -Werror -fno-exception
> > s -fno-rtti -DTSAN_GO -DSANITIZER_GO -DTSAN_SHADOW_COUNT=4
> > -Wno-error=attributes -Wno-attributes -DTSAN_DEBUG=0 -O3 -fom
> > it-frame-pointer
> > In file included from ../rtl/tsan_clock.h:17:0,
> >                  from ../rtl/tsan_rtl.h:33,
> >                  from gotsan.cc:14:
> > ../rtl/tsan_vector.h: In function 'void
> > __tsan::ReportRace(__tsan::ThreadState*)':
> > ../rtl/tsan_vector.h:63:5: error: '*((void*)(&
> > hash)+16).__tsan::MD5Hash::hash[1]' may be used uninitialized in this
> > fun
> > ction [-Werror=maybe-uninitialized]
>
> We've disabled this warning in the LLVM/Clang builds (because of false
> positives like this and adding explicit initialization removes the
> ability for dynamic tools (such as msan, valgrind, etc) to detect an
> actual failure to initialize (if the md5 hash function didn't write to
> the whole value, etc)) - is there a reason it's not disabled in
> compiler-rt?
>
> > gotsan.cc:2709:14: note: '*((void*)(&
> > hash)+16).__tsan::MD5Hash::hash[1]' was declared here
> > In file included from ../rtl/tsan_clock.h:17:0,
> >                  from ../rtl/tsan_rtl.h:33,
> >                  from gotsan.cc:14:
> > ../rtl/tsan_vector.h:63:5: error: '*((void*)(&
> > hash)+16).__tsan::MD5Hash::hash[0]' may be used uninitialized in this
> > fun
> > ction [-Werror=maybe-uninitialized]
> > gotsan.cc:2709:14: note: '*((void*)(&
> > hash)+16).__tsan::MD5Hash::hash[0]' was declared here
> > In file included from ../rtl/tsan_clock.h:17:0,
> >                  from ../rtl/tsan_rtl.h:33,
> >                  from gotsan.cc:14:
> > ../rtl/tsan_vector.h:63:5: error: 'hash.__tsan::MD5Hash::hash[1]' may
> > be used uninitialized in this function [-Werror=ma
> > ybe-uninitialized]
> > gotsan.cc:2709:14: note: 'hash.__tsan::MD5Hash::hash[1]' was declared
> here
> > In file included from ../rtl/tsan_clock.h:17:0,
> >                  from ../rtl/tsan_rtl.h:33,
> >                  from gotsan.cc:14:
> > ../rtl/tsan_vector.h:63:5: error: 'hash.__tsan::MD5Hash::hash[0]' may
> > be used uninitialized in this function [-Werror=ma
> > ybe-uninitialized]
> > gotsan.cc:2709:14: note: 'hash.__tsan::MD5Hash::hash[0]' was declared
> here
> > cc1plus.exe: all warnings being treated as errors
> >
> >
> >
> >> On Mon, Jun 10, 2013 at 2:38 PM, Alexey Samsonov <samsonov at google.com>
> wrote:
> >>> I think this change will lead to warnings in the newer compilers. AFAIR
> >>> we've dropped gcc 4.4 support in sanitizers. Is it needed for
> >>> Go-ThreadSanitizer?
> >>>
> >>>
> >>> On Mon, Jun 10, 2013 at 2:30 PM, Dmitry Vyukov <dvyukov at google.com>
> wrote:
> >>>>
> >>>> Author: dvyukov
> >>>> Date: Mon Jun 10 05:30:19 2013
> >>>> New Revision: 183645
> >>>>
> >>>> URL: http://llvm.org/viewvc/llvm-project?rev=183645&view=rev
> >>>> Log:
> >>>> tsan: fix old gcc warnings
> >>>>
> >>>> Modified:
> >>>>     compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_report.cc
> >>>>
> >>>> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_report.cc
> >>>> URL:
> >>>>
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_report.cc?rev=183645&r1=183644&r2=183645&view=diff
> >>>>
> >>>>
> ==============================================================================
> >>>> --- compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_report.cc (original)
> >>>> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_report.cc Mon Jun 10
> 05:30:19
> >>>> 2013
> >>>> @@ -448,7 +448,7 @@ static bool HandleRacyStacks(ThreadState
> >>>>      uptr addr_min, uptr addr_max) {
> >>>>    Context *ctx = CTX();
> >>>>    bool equal_stack = false;
> >>>> -  RacyStacks hash;
> >>>> +  RacyStacks hash = {};
> >>>>    if (flags()->suppress_equal_stacks) {
> >>>>      hash.hash[0] = md5_hash(traces[0].Begin(), traces[0].Size() *
> >>>> sizeof(uptr));
> >>>>      hash.hash[1] = md5_hash(traces[1].Begin(), traces[1].Size() *
> >>>> sizeof(uptr));
> >>>> @@ -488,7 +488,7 @@ static void AddRacyStacks(ThreadState *t
> >>>>      uptr addr_min, uptr addr_max) {
> >>>>    Context *ctx = CTX();
> >>>>    if (flags()->suppress_equal_stacks) {
> >>>> -    RacyStacks hash;
> >>>> +    RacyStacks hash = {};
> >>>>      hash.hash[0] = md5_hash(traces[0].Begin(), traces[0].Size() *
> >>>> sizeof(uptr));
> >>>>      hash.hash[1] = md5_hash(traces[1].Begin(), traces[1].Size() *
> >>>> sizeof(uptr));
> >>>>      ctx->racy_stacks.PushBack(hash);
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> llvm-commits mailing list
> >>>> llvm-commits at cs.uiuc.edu
> >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>> Alexey Samsonov, MSK
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>



-- 
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130611/47260c10/attachment.html>


More information about the llvm-commits mailing list