[PATCH] D54771: [compiler-rt][UBSan] silence_unsigned_overflow: do *NOT* ignore *fatal* unsigned overflows

Phabricator via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 21 12:38:39 PST 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rL347415: [compiler-rt][UBSan] silence_unsigned_overflow: do *NOT* ignore *fatal*… (authored by lebedevri, committed by ).
Herald added a subscriber: delcypher.

Changed prior to commit:
  https://reviews.llvm.org/D54771?vs=174829&id=174967#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D54771

Files:
  compiler-rt/trunk/lib/ubsan/ubsan_flags.inc
  compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc
  compiler-rt/trunk/test/ubsan/TestCases/Integer/no-recover.cpp


Index: compiler-rt/trunk/lib/ubsan/ubsan_flags.inc
===================================================================
--- compiler-rt/trunk/lib/ubsan/ubsan_flags.inc
+++ compiler-rt/trunk/lib/ubsan/ubsan_flags.inc
@@ -25,5 +25,5 @@
 UBSAN_FLAG(bool, report_error_type, false,
         "Print specific error type instead of 'undefined-behavior' in summary.")
 UBSAN_FLAG(bool, silence_unsigned_overflow, false,
-	"Do not print error reports for unsigned integer overflow. "
-	"Used to provide fuzzing signal without blowing up logs.")
+        "Do not print non-fatal error reports for unsigned integer overflow. "
+        "Used to provide fuzzing signal without blowing up logs.")
Index: compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc
===================================================================
--- compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc
+++ compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc
@@ -119,7 +119,9 @@
   if (ignoreReport(Loc, Opts, ET))
     return;
 
-  if (!IsSigned && flags()->silence_unsigned_overflow)
+  // If this is an unsigned overflow in non-fatal mode, potentially ignore it.
+  if (!IsSigned && !Opts.FromUnrecoverableHandler &&
+      flags()->silence_unsigned_overflow)
     return;
 
   ScopedReport R(Opts, Loc, ET);
Index: compiler-rt/trunk/test/ubsan/TestCases/Integer/no-recover.cpp
===================================================================
--- compiler-rt/trunk/test/ubsan/TestCases/Integer/no-recover.cpp
+++ compiler-rt/trunk/test/ubsan/TestCases/Integer/no-recover.cpp
@@ -1,7 +1,9 @@
 // RUN: %clangxx -fsanitize=unsigned-integer-overflow %s -o %t && %run %t 2>&1 | FileCheck %s --check-prefix=RECOVER
 // RUN: %clangxx -fsanitize=unsigned-integer-overflow -fno-sanitize-recover=all -fsanitize-recover=unsigned-integer-overflow %s -o %t && %run %t 2>&1 | FileCheck %s --check-prefix=RECOVER
 // RUN: %env_ubsan_opts=silence_unsigned_overflow=1 %run %t 2>&1 | FileCheck %s --check-prefix=SILENT-RECOVER --allow-empty
-// RUN: %clangxx -fsanitize=unsigned-integer-overflow -fno-sanitize-recover=unsigned-integer-overflow %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefix=ABORT
+// RUN: %clangxx -fsanitize=unsigned-integer-overflow -fno-sanitize-recover=unsigned-integer-overflow %s -o %t
+// RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=ABORT
+// RUN: %env_ubsan_opts=silence_unsigned_overflow=1 not %run %t 2>&1 | FileCheck %s --check-prefix=ABORT
 
 #include <stdint.h>
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D54771.174967.patch
Type: text/x-patch
Size: 2447 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181121/38a5dd4d/attachment.bin>


More information about the llvm-commits mailing list