[Bug sanitizer/78204] ‘no_sanitize’ attribute directive ignored [-Wattributes]

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jun 13 14:01:00 GMT 2017


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78204

--- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> ---
Author: marxin
Date: Tue Jun 13 13:59:05 2017
New Revision: 249158

URL: https://gcc.gnu.org/viewcvs?rev=249158&root=gcc&view=rev
Log:
Implement no_sanitize function attribute

2017-06-13  Martin Liska  <mliska@suse.cz>

        PR sanitize/78204
        * c-c++-common/ubsan/attrib-2.c (float_cast2): Enhance the
        test by adding no_sanitize attribute.
        * gcc.dg/asan/use-after-scope-4.c: Likewise.
2017-06-13  Martin Liska  <mliska@suse.cz>

        PR sanitize/78204
        * c-attribs.c (add_no_sanitize_value): New function.
        (handle_no_sanitize_attribute): Likewise.
        (handle_no_sanitize_address_attribute): Use the function.
        (handle_no_sanitize_thread_attribute): New function.
        (handle_no_address_safety_analysis_attribute): Use
        add_no_sanitize_value.
        (handle_no_sanitize_undefined_attribute): Likewise.
        * c-common.h: Declare new functions.
        * c-ubsan.c (ubsan_instrument_division): Use sanitize_flags_p.
        (ubsan_instrument_shift): Likewise.
        (ubsan_instrument_bounds): Likewise.
        (ubsan_maybe_instrument_array_ref): Likewise.
        (ubsan_maybe_instrument_reference_or_call): Likewise.
2017-06-13  Martin Liska  <mliska@suse.cz>

        PR sanitize/78204
        * asan.c (asan_sanitize_stack_p): Use sanitize_flags_p.
        (gate_asan): Likewise.
        * asan.h (asan_no_sanitize_address_p): Remove the function.
        (sanitize_flags_p): New function.
        * builtins.def: Fix coding style.
        * common.opt: Use renamed enum value.
        * convert.c (convert_to_integer_1): Use sanitize_flags_p.
        * doc/extend.texi: Document no_sanitize attribute.
        * flag-types.h (enum sanitize_code): Rename SANITIZE_NONDEFAULT
        to SANITIZE_UNDEFINED_NONDEFAULT.
        * gcc.c (sanitize_spec_function): Use the renamed enum value.
        * gimple-fold.c (optimize_atomic_compare_exchange_p):
        Use sanitize_flags_p.
        * gimplify.c (gimplify_function_tree): Likewise.
        * ipa-inline.c (sanitize_attrs_match_for_inline_p): Likewise.
        * opts.c (parse_no_sanitize_attribute): New function.
        (common_handle_option): Use renamed enum value.
        * opts.h (parse_no_sanitize_attribute): Declare.
        * tree.c (sanitize_flags_p): New function.
        * tree.h: Declared here.
        * tsan.c: Use sanitize_flags_p.
        * ubsan.c (ubsan_expand_null_ifn): Likewise.
        (instrument_mem_ref): Likewise.
        (instrument_bool_enum_load): Likewise.
        (do_ubsan_in_current_function): Remove the function.
        (pass_ubsan::execute): Use sanitize_flags_p.
        * ubsan.h: Remove do_ubsan_in_current_function
        * tree-cfg.c (print_no_sanitize_attr_value): New function.
        (dump_function_to_file): Use it here.
2017-06-13  Martin Liska  <mliska@suse.cz>

        PR sanitize/78204
        * class.c (build_base_path): Use sanitize_flags_p.
        * cp-gimplify.c (cp_genericize_r): Likewise.
        (cp_genericize_tree): Likewise.
        (cp_genericize): Likewise.
        * cp-ubsan.c (cp_ubsan_instrument_vptr_p): Likewise.
        * decl.c (compute_array_index_type): Likewise.
        (start_preparsed_function): Likewise.
        * decl2.c (one_static_initialization_or_destruction): Likewise.
        * init.c (finish_length_check): Likewise.
        * lambda.c (maybe_add_lambda_conv_op): Likewise.
        * typeck.c (cp_build_binary_op): Likewise.
        (build_static_cast_1): Likewise.
2017-06-13  Martin Liska  <mliska@suse.cz>

        PR sanitize/78204
        * c-convert.c (convert): Use sanitize_flags_p.
        * c-decl.c (grokdeclarator): Likewise.
        * c-typeck.c (convert_for_assignment): Likewise.
        (c_finish_return): Likewise.
        (build_binary_op): Likewise.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/asan.c
    trunk/gcc/asan.h
    trunk/gcc/builtins.def
    trunk/gcc/c-family/ChangeLog
    trunk/gcc/c-family/c-attribs.c
    trunk/gcc/c-family/c-common.h
    trunk/gcc/c-family/c-ubsan.c
    trunk/gcc/c-family/c-ubsan.h
    trunk/gcc/c/ChangeLog
    trunk/gcc/c/c-convert.c
    trunk/gcc/c/c-decl.c
    trunk/gcc/c/c-typeck.c
    trunk/gcc/common.opt
    trunk/gcc/convert.c
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/class.c
    trunk/gcc/cp/cp-gimplify.c
    trunk/gcc/cp/cp-ubsan.c
    trunk/gcc/cp/decl.c
    trunk/gcc/cp/decl2.c
    trunk/gcc/cp/init.c
    trunk/gcc/cp/lambda.c
    trunk/gcc/cp/typeck.c
    trunk/gcc/doc/extend.texi
    trunk/gcc/flag-types.h
    trunk/gcc/gcc.c
    trunk/gcc/gimple-fold.c
    trunk/gcc/gimplify.c
    trunk/gcc/ipa-inline.c
    trunk/gcc/opts.c
    trunk/gcc/opts.h
    trunk/gcc/sanopt.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/c-c++-common/ubsan/attrib-2.c
    trunk/gcc/testsuite/gcc.dg/asan/use-after-scope-4.c
    trunk/gcc/tree-cfg.c
    trunk/gcc/tsan.c
    trunk/gcc/ubsan.c
    trunk/gcc/ubsan.h


More information about the Gcc-bugs mailing list