http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60275

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Wed Apr 23 08:20:12 2014
New Revision: 209672

URL: http://gcc.gnu.org/viewcvs?rev=209672&root=gcc&view=rev
Log:
    PR sanitizer/60275
    * common.opt (fsanitize-recover, fsanitize-undefined-trap-on-error):
    New options.
    * gcc.c (sanitize_spec_function): Don't return "" for "undefined"
    if flag_sanitize_undefined_trap_on_error.
    * sanitizer.def (BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW_ABORT,
    BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS_ABORT,
    BUILT_IN_UBSAN_HANDLE_VLA_BOUND_NOT_POSITIVE_ABORT,
    BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT,
    BUILT_IN_UBSAN_HANDLE_ADD_OVERFLOW_ABORT,
    BUILT_IN_UBSAN_HANDLE_SUB_OVERFLOW_ABORT,
    BUILT_IN_UBSAN_HANDLE_MUL_OVERFLOW_ABORT,
    BUILT_IN_UBSAN_HANDLE_NEGATE_OVERFLOW_ABORT,
    BUILT_IN_UBSAN_HANDLE_LOAD_INVALID_VALUE_ABORT): New builtins.
    * ubsan.c (ubsan_instrument_unreachable): Return
    __builtin_trap () if flag_sanitize_undefined_trap_on_error.
    (ubsan_expand_null_ifn): Emit __builtin_trap ()
    if flag_sanitize_undefined_trap_on_error and
    __ubsan_handle_type_mismatch_abort if !flag_sanitize_recover.
    (ubsan_expand_null_ifn, ubsan_build_overflow_builtin,
    instrument_bool_enum_load): Emit __builtin_trap () if
    flag_sanitize_undefined_trap_on_error and
    __builtin_handle_*_abort () if !flag_sanitize_recover.
    * doc/invoke.texi (-fsanitize-recover,
    -fsanitize-undefined-trap-on-error): Document.
c-family/
    * c-ubsan.c (ubsan_instrument_return): Return __builtin_trap ()
    if flag_sanitize_undefined_trap_on_error.
    (ubsan_instrument_division, ubsan_instrument_shift,
    ubsan_instrument_vla): Likewise.  Use __ubsan_handle_*_abort ()
    if !flag_sanitize_recover.
testsuite/
    * g++.dg/ubsan/return-2.C: Revert 2014-03-24 changes, add
    -fno-sanitize-recover to dg-options.
    * g++.dg/ubsan/cxx11-shift-1.C: Remove c++11 target restriction,
    add -std=c++11 to dg-options.
    * g++.dg/ubsan/cxx11-shift-2.C: Likewise.
    * g++.dg/ubsan/cxx1y-vla.C: Remove c++1y target restriction,
    add -std=c++1y to dg-options.
    * c-c++-common/ubsan/undefined-1.c: Revert 2014-03-24 changes, add
    -fno-sanitize-recover to dg-options.
    * c-c++-common/ubsan/overflow-sub-1.c: Likewise.
    * c-c++-common/ubsan/vla-4.c: Likewise.
    * c-c++-common/ubsan/pr59503.c: Likewise.
    * c-c++-common/ubsan/vla-3.c: Likewise.
    * c-c++-common/ubsan/save-expr-1.c: Likewise.
    * c-c++-common/ubsan/overflow-add-1.c: Likewise.
    * c-c++-common/ubsan/shift-3.c: Likewise.
    * c-c++-common/ubsan/overflow-1.c: Likewise.
    * c-c++-common/ubsan/overflow-negate-2.c: Likewise.
    * c-c++-common/ubsan/vla-2.c: Likewise.
    * c-c++-common/ubsan/overflow-mul-1.c: Likewise.
    * c-c++-common/ubsan/pr60613-1.c: Likewise.
    * c-c++-common/ubsan/shift-6.c: Likewise.
    * c-c++-common/ubsan/overflow-mul-3.c: Likewise.
    * c-c++-common/ubsan/overflow-add-3.c: New test.
    * c-c++-common/ubsan/overflow-add-4.c: New test.
    * c-c++-common/ubsan/div-by-zero-6.c: New test.
    * c-c++-common/ubsan/div-by-zero-7.c: New test.

Added:
    trunk/gcc/testsuite/c-c++-common/ubsan/div-by-zero-6.c
    trunk/gcc/testsuite/c-c++-common/ubsan/div-by-zero-7.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-add-3.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-add-4.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/c-family/ChangeLog
    trunk/gcc/c-family/c-ubsan.c
    trunk/gcc/common.opt
    trunk/gcc/doc/invoke.texi
    trunk/gcc/gcc.c
    trunk/gcc/sanitizer.def
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-mul-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-mul-3.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-negate-2.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-sub-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/pr59503.c
    trunk/gcc/testsuite/c-c++-common/ubsan/pr60613-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/save-expr-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/shift-3.c
    trunk/gcc/testsuite/c-c++-common/ubsan/shift-6.c
    trunk/gcc/testsuite/c-c++-common/ubsan/undefined-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/vla-2.c
    trunk/gcc/testsuite/c-c++-common/ubsan/vla-3.c
    trunk/gcc/testsuite/c-c++-common/ubsan/vla-4.c
    trunk/gcc/testsuite/g++.dg/ubsan/cxx11-shift-1.C
    trunk/gcc/testsuite/g++.dg/ubsan/cxx11-shift-2.C
    trunk/gcc/testsuite/g++.dg/ubsan/cxx1y-vla.C
    trunk/gcc/testsuite/g++.dg/ubsan/return-2.C
    trunk/gcc/ubsan.c

Reply via email to