[compiler-rt] r225234 - [ubsan] partially enable -fsanitize-coverage=N with ubsan. It will work as usual in most cases but will not dump coverage on error with -fno-sanitize-recover (that'll be a separate fix)

Steven Wu stevenwu at apple.com
Tue Jan 6 09:01:01 PST 2015


Hi Kostya

The test cases you added broke the jenkins: http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA_check/533/consoleFull#19223059818254eaf0-7326-4999-85b0-388101f2d404 <http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA_check/533/consoleFull#19223059818254eaf0-7326-4999-85b0-388101f2d404>
Can you take a look at it? If you can quickly fix it or revert it, it will be great.

Thanks

Steven

> On Jan 5, 2015, at 5:31 PM, Kostya Serebryany <kcc at google.com> wrote:
> 
> Author: kcc
> Date: Mon Jan  5 19:31:23 2015
> New Revision: 225234
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=225234&view=rev
> Log:
> [ubsan] partially enable -fsanitize-coverage=N with ubsan. It will work as usual in most cases but will not dump coverage on error with -fno-sanitize-recover (that'll be a separate fix)
> 
> Added:
>    compiler-rt/trunk/test/ubsan/TestCases/Misc/coverage-levels.cc
> Modified:
>    compiler-rt/trunk/lib/ubsan/ubsan_init.cc
> 
> Modified: compiler-rt/trunk/lib/ubsan/ubsan_init.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/ubsan_init.cc?rev=225234&r1=225233&r2=225234&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/ubsan/ubsan_init.cc (original)
> +++ compiler-rt/trunk/lib/ubsan/ubsan_init.cc Mon Jan  5 19:31:23 2015
> @@ -43,6 +43,7 @@ void __ubsan::InitIfNecessary() {
>   // Initialize UBSan-specific flags.
>   InitializeFlags();
>   SuppressionContext::InitIfNecessary();
> +  InitializeCoverage(common_flags()->coverage, common_flags()->coverage_dir);
>   ubsan_inited = true;
> }
> 
> 
> Added: compiler-rt/trunk/test/ubsan/TestCases/Misc/coverage-levels.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/ubsan/TestCases/Misc/coverage-levels.cc?rev=225234&view=auto
> ==============================================================================
> --- compiler-rt/trunk/test/ubsan/TestCases/Misc/coverage-levels.cc (added)
> +++ compiler-rt/trunk/test/ubsan/TestCases/Misc/coverage-levels.cc Mon Jan  5 19:31:23 2015
> @@ -0,0 +1,36 @@
> +// Test various levels of coverage
> +//
> +// RUN: mkdir -p %T/coverage-levels
> +// RUN: OPT=coverage=1:verbosity=1:coverage_dir=%T/coverage-levels
> +// RUN: %clangxx -fsanitize=shift                        -DGOOD_SHIFT=1 -O1 -fsanitize-coverage=1  %s -o %t
> +// RUN: UBSAN_OPTIONS=$OPT ASAN_OPTIONS=$OPT %run %t 2>&1 | FileCheck %s --check-prefix=CHECK1 --check-prefix=CHECK_NOWARN
> +// RUN: %clangxx -fsanitize=undefined                    -DGOOD_SHIFT=1 -O1 -fsanitize-coverage=1  %s -o %t
> +// RUN: UBSAN_OPTIONS=$OPT ASAN_OPTIONS=$OPT %run %t 2>&1 | FileCheck %s --check-prefix=CHECK1 --check-prefix=CHECK_NOWARN
> +
> +// RUN: %clangxx -fsanitize=shift -O1 -fsanitize-coverage=1  %s -o %t
> +// RUN: UBSAN_OPTIONS=$OPT ASAN_OPTIONS=$OPT %run %t 2>&1 | FileCheck %s --check-prefix=CHECK1 --check-prefix=CHECK_WARN
> +// RUN: %clangxx -fsanitize=shift -O1 -fsanitize-coverage=2  %s -o %t
> +// RUN: UBSAN_OPTIONS=$OPT ASAN_OPTIONS=$OPT %run %t 2>&1 | FileCheck %s --check-prefix=CHECK2 --check-prefix=CHECK_WARN
> +// RUN: %clangxx -fsanitize=shift -O1 -fsanitize-coverage=3  %s -o %t
> +// RUN: UBSAN_OPTIONS=$OPT ASAN_OPTIONS=$OPT %run %t 2>&1 | FileCheck %s --check-prefix=CHECK3 --check-prefix=CHECK_WARN
> +
> +volatile int sink;
> +int main(int argc, char **argv) {
> +  int shift = argc * 32;
> +#if GOOD_SHIFT
> +  shift = 3;
> +#endif
> +  if ((argc << shift) == 16)  // False.
> +    return 1;
> +  return 0;
> +}
> +
> +// CHECK_WARN: shift exponent 32 is too large
> +// CHECK_NOWARN-NOT: ERROR
> +// FIXME: Currently, coverage instrumentation kicks in after ubsan, so we get
> +// more than the minimal number of instrumented blocks.
> +// FIXME: Currently, ubsan with -fno-sanitize-recover and w/o asan will fail
> +// to dump coverage.
> +// CHECK1:  1 PCs written
> +// CHECK2:  3 PCs written
> +// CHECK3:  4 PCs written
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150106/6a9fc726/attachment.html>


More information about the llvm-commits mailing list