2015-01-07 08:38:00 +08:00
|
|
|
//===-- ubsan_flags.inc -----------------------------------------*- C++ -*-===//
|
|
|
|
//
|
2019-01-19 16:50:56 +08:00
|
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
2015-01-07 08:38:00 +08:00
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//
|
|
|
|
// UBSan runtime flags.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef UBSAN_FLAG
|
|
|
|
# error "Define UBSAN_FLAG prior to including this file!"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
// UBSAN_FLAG(Type, Name, DefaultValue, Description)
|
|
|
|
// See COMMON_FLAG in sanitizer_flags.inc for more details.
|
|
|
|
|
|
|
|
UBSAN_FLAG(bool, halt_on_error, false,
|
|
|
|
"Crash the program after printing the first error report")
|
|
|
|
UBSAN_FLAG(bool, print_stacktrace, false,
|
|
|
|
"Include full stacktrace into an error report")
|
2015-02-21 01:41:59 +08:00
|
|
|
UBSAN_FLAG(const char *, suppressions, "", "Suppressions file name.")
|
2015-08-25 07:18:49 +08:00
|
|
|
UBSAN_FLAG(bool, report_error_type, false,
|
|
|
|
"Print specific error type instead of 'undefined-behavior' in summary.")
|
2018-06-28 02:24:46 +08:00
|
|
|
UBSAN_FLAG(bool, silence_unsigned_overflow, false,
|
[compiler-rt][UBSan] silence_unsigned_overflow: do *NOT* ignore *fatal* unsigned overflows
Summary:
D48660 / rL335762 added a `silence_unsigned_overflow` env flag for [[ https://github.com/google/oss-fuzz/pull/1717 | oss-fuzz needs ]],
that allows to silence the reports from unsigned overflows.
It makes sense, it is there because `-fsanitize=integer` sanitizer is not enabled on oss-fuzz,
so this allows to still use it as an interestingness signal, without getting the actual reports.
However there is a slight problem here.
All types of unsigned overflows are ignored.
Even if `-fno-sanitize-recover=unsigned` was used (which means the program will die after the report)
there will still be no report, the program will just silently die.
At the moment there are just two projects on oss-fuzz that care:
* [[ https://github.com/google/oss-fuzz/blob/8eeffa627f937040aaf8ba1b7d93f43f77d74fb9/projects/llvm_libcxx/build.sh#L18-L20 | libc++ ]]
* [[ https://github.com/google/oss-fuzz/blob/8eeffa627f937040aaf8ba1b7d93f43f77d74fb9/projects/librawspeed/build.sh | RawSpeed ]] (me)
I suppose this could be overridden there ^, but i really don't think this is intended behavior in any case..
Reviewers: kcc, Dor1s, #sanitizers, filcab, vsk, kubamracek
Reviewed By: Dor1s
Subscribers: dberris, mclow.lists, llvm-commits
Tags: #sanitizers
Differential Revision: https://reviews.llvm.org/D54771
llvm-svn: 347415
2018-11-22 04:35:43 +08:00
|
|
|
"Do not print non-fatal error reports for unsigned integer overflow. "
|
|
|
|
"Used to provide fuzzing signal without blowing up logs.")
|