1. 03 Jan, 2018 1 commit
  2. 30 Nov, 2017 1 commit
    • re PR sanitizer/81697 (Incorrect ASan global variables alignment on arm) · 1069dc25
      gcc/
      
      2017-11-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
      
      	PR sanitizer/81697
      	* asan.c (asan_protect_global): Add new ignore_decl_rtl_set_p
      	parameter. Return true if ignore_decl_rtl_set_p is true and other
      	conditions are satisfied.
      	* asan.h (asan_protect_global): Add new parameter.
      	* varasm.c (categorize_decl_for_section): Pass true as second parameter
      	to asan_protect_global calls.
      
      gcc/testsuite/
      
      2017-11-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
      
      	PR sanitizer/81697
      	* c-c++-common/asan/pr81697.c: New test.
      
      From-SVN: r255283
      Maxim Ostapenko committed
  3. 06 Jul, 2017 2 commits
    • asan.h (asan_sanitize_allocas_p): Declare. · 5094f7d5
      gcc/
      	* asan.h (asan_sanitize_allocas_p): Declare.
      	* asan.c (asan_sanitize_allocas_p): New function.
      	(handle_builtin_stack_restore): Bail out if !asan_sanitize_allocas_p.
      	(handle_builtin_alloca): Likewise.
      	* cfgexpand.c (expand_used_vars): Do not add allocas unpoisoning stuff
      	if !asan_sanitize_allocas_p.
      	* params.def (asan-instrument-allocas): Add new option.
      	* params.h (ASAN_PROTECT_ALLOCAS): Define.
      	* opts.c (common_handle_option): Disable allocas sanitization for
      	KASan by default.
      
      gcc/testsuite/
      	* c-c++-common/asan/kasan-alloca-1.c: New test.
      	* c-c++-common/asan/kasan-alloca-2.c: Likewise.
      
      From-SVN: r250032
      Maxim Ostapenko committed
    • ASAN: Implement dynamic allocas/VLAs sanitization. · e3174bdf
      gcc/
      	* asan.c: Include gimple-fold.h.
      	(get_last_alloca_addr): New function.
      	(handle_builtin_stackrestore): Likewise.
      	(handle_builtin_alloca): Likewise.
      	(asan_emit_allocas_unpoison): Likewise.
      	(get_mem_refs_of_builtin_call): Add new parameter, remove const
      	quallifier from first paramerer. Handle BUILT_IN_ALLOCA,
      	BUILT_IN_ALLOCA_WITH_ALIGN and BUILT_IN_STACK_RESTORE builtins.
      	(instrument_builtin_call): Pass gimple iterator to
      	get_mem_refs_of_builtin_call.
      	(last_alloca_addr): New global.
      	* asan.h (asan_emit_allocas_unpoison): Declare.
      	* builtins.c (expand_asan_emit_allocas_unpoison): New function.
      	(expand_builtin): Handle BUILT_IN_ASAN_ALLOCAS_UNPOISON.
      	* cfgexpand.c (expand_used_vars): Call asan_emit_allocas_unpoison
      	if function calls alloca.
      	* gimple-fold.c (replace_call_with_value): Remove static keyword.
      	* gimple-fold.h (replace_call_with_value): Declare.
      	* internal-fn.c: Include asan.h.
      	* sanitizer.def (BUILT_IN_ASAN_ALLOCA_POISON,
      	BUILT_IN_ASAN_ALLOCAS_UNPOISON): New builtins.
      
      gcc/testsuite/
      	* c-c++-common/asan/alloca_big_alignment.c: New test.
      	* c-c++-common/asan/alloca_detect_custom_size.c: Likewise.
      	* c-c++-common/asan/alloca_instruments_all_paddings.c: Likewise.
      	* c-c++-common/asan/alloca_loop_unpoisoning.c: Likewise.
      	* c-c++-common/asan/alloca_overflow_partial.c: Likewise.
      	* c-c++-common/asan/alloca_overflow_right.c: Likewise.
      	* c-c++-common/asan/alloca_safe_access.c: Likewise.
      	* c-c++-common/asan/alloca_underflow_left.c: Likewise.
      
      From-SVN: r250031
      Maxim Ostapenko committed
  4. 13 Jun, 2017 1 commit
    • Implement no_sanitize function attribute · 45b2222a
      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.
      
      From-SVN: r249158
      Martin Liska committed
  5. 23 Jan, 2017 2 commits
    • use-after-scope: handle writes to a poisoned variable · f6b9f2ff
      2017-01-23  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/asan/use-after-scope-10.c: New test.
      	* gcc.dg/asan/use-after-scope-11.c: New test.
      	* g++.dg/asan/use-after-scope-5.C: New test.
      2017-01-23  Jakub Jelinek  <jakub@redhat.com>
      	    Martin Liska  <mliska@suse.cz>
      
      	* asan.h: Define ASAN_USE_AFTER_SCOPE_ATTRIBUTE.
      	* asan.c (asan_expand_poison_ifn): Support stores and use
      	appropriate ASAN report function.
      	* internal-fn.c (expand_ASAN_POISON_USE): New function.
      	* internal-fn.def (ASAN_POISON_USE): Declare.
      	* tree-into-ssa.c (maybe_add_asan_poison_write): New function.
      	(maybe_register_def): Create ASAN_POISON_USE when sanitizing.
      	* tree-ssa-dce.c (eliminate_unnecessary_stmts): Remove
      	ASAN_POISON calls w/o LHS.
      	* tree-ssa.c (execute_update_addresses_taken): Create clobber
      	for ASAN_MARK (UNPOISON, &x, ...) in order to prevent usage of a LHS
      	from ASAN_MARK (POISON, &x, ...) coming to a PHI node.
      	* gimplify.c (asan_poison_variables): Add attribute
      	use_after_scope_memory to variables that really needs to live
      	in memory.
      	* tree-ssa.c (is_asan_mark_p): Do not rewrite into SSA when
      	having the attribute.
      
      From-SVN: r244793
      Martin Liska committed
    • Speed up use-after-scope (v2): rewrite into SSA · c7775327
      2017-01-23  Martin Liska  <mliska@suse.cz>
      
      	* asan.c (create_asan_shadow_var): New function.
      	(asan_expand_poison_ifn): Likewise.
      	* asan.h (asan_expand_poison_ifn): New declaration.
      	* internal-fn.c (expand_ASAN_POISON): Likewise.
      	* internal-fn.def (ASAN_POISON): New builtin.
      	* sanopt.c (pass_sanopt::execute): Expand
      	asan_expand_poison_ifn.
      	* tree-inline.c (copy_decl_for_dup_finish): Make function
      	external.
      	* tree-inline.h (copy_decl_for_dup_finish): Likewise.
      	* tree-ssa.c (is_asan_mark_p): New function.
      	(execute_update_addresses_taken): Rewrite local variables
      	(identified just by use-after-scope as addressable) into SSA.
      2017-01-23  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/asan/use-after-scope-3.c: Add additional flags.
      	* gcc.dg/asan/use-after-scope-9.c: Likewise and grep for
      	sanopt optimization for ASAN_POISON.
      
      From-SVN: r244791
      Martin Liska committed
  6. 01 Jan, 2017 1 commit
  7. 13 Dec, 2016 1 commit
    • Add pretty printer for ASAN_MARK and add a helper fn · 56b7aede
      	* asan.c (asan_mark_poison_p): Remove.
      	(asan_mark_p): New function.
      	(transform_statements): Use the function.
      	(asan_expand_mark_ifn): Do not use masked enum.
      	* asan.h (enum asan_mark_flags): Declare it via a macro.
      	* gimple-pretty-print.c (dump_gimple_call_args): Dump first
      	argument of ASAN_MARK.
      	* gimplify.c (build_asan_poison_call_expr): Use new enum values.
      	(asan_poison_variable): Likewise.
      	* gcc.dg/asan/use-after-scope-goto-1.c: Update first argument of
      	scanned pattern ASAN_MARK.
      	* gcc.dg/asan/use-after-scope-goto-2.c: Likewise.
      	* gcc.dg/asan/use-after-scope-switch-1.c: Likewise.
      	* gcc.dg/asan/use-after-scope-switch-2.c: Likewise.
      	* gcc.dg/asan/use-after-scope-switch-3.c: Likewise.
      
      From-SVN: r243597
      Martin Liska committed
  8. 08 Nov, 2016 2 commits
    • asan.h (asan_intercepted_p): Handle BUILT_IN_STRCSPN, BUILT_IN_STRPBRK,… · 0290a292
      asan.h (asan_intercepted_p): Handle BUILT_IN_STRCSPN, BUILT_IN_STRPBRK, BUILT_IN_STRSPN and BUILT_IN_STRSTR.
      
      gcc/
      
      	* asan.h (asan_intercepted_p): Handle BUILT_IN_STRCSPN,
      	BUILT_IN_STRPBRK, BUILT_IN_STRSPN and BUILT_IN_STRSTR.
      
      gcc/testsuite/
      
      	* c-c++-common/asan/default_options.h: New file.
      	* c-c++-common/asan/strcasestr-1.c: New test.
      	* c-c++-common/asan/strcasestr-2.c: Likewise.
      	* c-c++-common/asan/strcspn-1.c: Likewise.
      	* c-c++-common/asan/strcspn-2.c: Likewise.
      	* c-c++-common/asan/strpbrk-1.c: Likewise.
      	* c-c++-common/asan/strpbrk-2.c: Likewise.
      	* c-c++-common/asan/strspn-1.c: Likewise.
      	* c-c++-common/asan/strspn-2.c: Likewise.
      	* c-c++-common/asan/strstr-1.c: Likewise.
      	* c-c++-common/asan/strstr-2.c: Likewise.
      	* c-c++-common/asan/halt_on_error_suppress_equal_pcs-1.c: Likewise.
      
      From-SVN: r241984
      Maxim Ostapenko committed
    • asan.h (ASAN_STACK_MAGIC_PARTIAL): Remove. · fbdb92eb
      gcc/
      
      	* asan.h (ASAN_STACK_MAGIC_PARTIAL): Remove.
      	* asan.c (ASAN_STACK_MAGIC_PARTIAL): Replace with
      	ASAN_STACK_MAGIC_MIDDLE.
      	(asan_global_struct): Increase the size of fields.
      	(asan_add_global): Add new field constructor.
      	* sanitizer.def (__asan_version_mismatch_check_v6): Replace with
      	__asan_version_mismatch_check_v8.
      
      gcc/testsuite/
      
      	* c-c++-common/asan/null-deref-1.c: Adjust testcase.
      
      From-SVN: r241983
      Maxim Ostapenko committed
  9. 07 Nov, 2016 1 commit
    • Introduce -fsanitize-address-use-after-scope · 6dc4a604
      	* c-warn.c (warn_for_unused_label): Save all labels used
      	in goto or in &label.
      	* asan.c (enum asan_check_flags): Move the enum to header file.
      	(asan_init_shadow_ptr_types): Make type creation more generic.
      	(shadow_mem_size): New function.
      	(asan_emit_stack_protection): Use newly added ASAN_SHADOW_GRANULARITY.
      	Rewritten stack unpoisoning code.
      	(build_shadow_mem_access): Add new argument return_address.
      	(instrument_derefs): Instrument local variables if use after scope
      	sanitization is enabled.
      	(asan_store_shadow_bytes): New function.
      	(asan_expand_mark_ifn): Likewise.
      	(asan_sanitize_stack_p): Moved from asan_sanitize_stack_p.
      	* asan.h (enum asan_mark_flags): Moved here from asan.c
      	(asan_protect_stack_decl): Protect all declaration that need
      	to live in memory.
      	(asan_sanitize_use_after_scope): New function.
      	(asan_no_sanitize_address_p): Likewise.
      	* cfgexpand.c (partition_stack_vars): Consider
      	asan_sanitize_use_after_scope in condition.
      	(expand_stack_vars): Likewise.
      	* common.opt (-fsanitize-address-use-after-scope): New option.
      	* doc/invoke.texi (use-after-scope-direct-emission-threshold):
      	Explain the parameter.
      	* flag-types.h (enum sanitize_code): Define SANITIZE_USE_AFTER_SCOPE.
      	* gimplify.c (build_asan_poison_call_expr): New function.
      	(asan_poison_variable): Likewise.
      	(gimplify_bind_expr): Generate poisoning/unpoisoning for local
      	variables that have address taken.
      	(gimplify_decl_expr): Likewise.
      	(gimplify_target_expr): Likewise for C++ temporaries.
      	(sort_by_decl_uid): New function.
      	(gimplify_expr): Unpoison all variables for a label we can jump
      	from outside of a scope.
      	(gimplify_switch_expr): Unpoison variables defined in the switch
      	context.
      	(gimplify_function_tree): Clear asan_poisoned_variables.
      	(asan_poison_variables): New function.
      	(warn_switch_unreachable_r): Handle IFN_ASAN_MARK.
      	* internal-fn.c (expand_ASAN_MARK): New function.
      	* internal-fn.def (ASAN_MARK): Declare.
      	* opts.c (finish_options): Handle -fstack-reuse if
      	-fsanitize-address-use-after-scope is enabled.
      	(common_handle_option): Enable address sanitization if
      	-fsanitize-address-use-after-scope is enabled.
      	* params.def (PARAM_USE_AFTER_SCOPE_DIRECT_EMISSION_THRESHOLD):
      	New parameter.
      	* params.h: Likewise.
      	* sancov.c (pass_sanopt::execute): Handle IFN_ASAN_MARK.
      	* sanitizer.def: Define __asan_poison_stack_memory and
      	__asan_unpoison_stack_memory functions.
      	* asan.c (asan_mark_poison_p): New function.
      	(transform_statements): Handle asan_mark_poison_p calls.
      	* gimple.c (nonfreeing_call_p): Handle IFN_ASAN_MARK.
      
      From-SVN: r241896
      Martin Liska committed
  10. 04 Jan, 2016 1 commit
  11. 17 Apr, 2015 1 commit
    • asan.c (set_sanitized_sections): New function. · 18af8d16
      2015-04-17  Yury Gribov  <y.gribov@samsung.com>
      
      gcc/
      	* asan.c (set_sanitized_sections): New function.
      	(section_sanitized_p): Ditto.
      	(asan_protect_global): Optionally sanitize user-defined
      	sections.
      	* asan.h (set_sanitized_sections): Declare new function.
      	* common.opt (fsanitize-sections): New option.
      	* doc/invoke.texi (-fsanitize-sections): Document new option.
      	* opts-global.c (handle_common_deferred_options): Handle new
      	option.
      
      gcc/testsuite/
      	* c-c++-common/asan/user-section-1.c: New test.
      
      From-SVN: r222168
      Yury Gribov committed
  12. 05 Jan, 2015 1 commit
  13. 04 Nov, 2014 1 commit
    • Makefile.in (OBJS): Add sanopt.o. · 06cefae9
      	* Makefile.in (OBJS): Add sanopt.o.
      	(GTFILES): Add sanopt.c.
      	* asan.h (asan_expand_check_ifn): Declare.
      	* asan.c (asan_expand_check_ifn): No longer static.
      	(class pass_sanopt, pass_sanopt::execute, make_pass_sanopt): Move...
      	* sanopt.c: ...here.  New file.
      testsuite/
      	* c-c++-common/ubsan/align-2.c: Remove dg-output.
      	* c-c++-common/ubsan/align-4.c: Likewise.
      	* g++.dg/ubsan/null-1.C: Likewise.
      	* g++.dg/ubsan/null-2.C: Likewise.
      
      From-SVN: r217099
      Marek Polacek committed
  14. 28 Oct, 2014 2 commits
    • Don't inline GCC memory builtins if ASan is enabled. · bdea98ca
      gcc/
      
      2014-10-28  Max Ostapenko  <m.ostapenko@partner.samsung.com>
      
              * asan.h (asan_intercepted_p): New function.
              * asan.c (asan_mem_ref_hasher::hash): Remove MEM_REF access size from
              hash value construction.  Call iterative_hash_expr instead of explicit
              hash building.
              (asan_mem_ref_hasher::equal): Change condition.
              (has_mem_ref_been_instrumented): Likewise.
              (update_mem_ref_hash_table): Likewise.
              (maybe_update_mem_ref_hash_table): New function.
              (instrument_strlen_call): Removed.
              (get_mem_refs_of_builtin_call): Handle new parameter.
              (instrument_builtin_call): Call maybe_update_mem_ref_hash_table instead
              of instrument_mem_region_access if intercepted_p is true.
              (instrument_mem_region_access): Instrument only base with len instead of
              base and end with 1.
              (build_check_stmt): Remove start_instrumented and end_instrumented
              parameters.
              (enum asan_check_flags): Remove ASAN_CHECK_START_INSTRUMENTED and
              ASAN_CHECK_END_INSTRUMENTED.  Change ASAN_CHECK_LAST.
              (asan_expand_check_ifn): Remove start_instrumented and end_instrumented.
              * builtins.c (expand_builtin): Include asan.h.  Don't expand string/memory
              builtin functions that have interceptors if ASan is enabled.
      
      gcc/testsuite/
      
              * c-c++-common/asan/no-redundant-instrumentation-1.c: Updated test.
              * c-c++-common/asan/no-redundant-instrumentation-4.c: Likewise.
              * c-c++-common/asan/no-redundant-instrumentation-5.c: Likewise.
              * c-c++-common/asan/no-redundant-instrumentation-6.c: Likewise.
              * c-c++-common/asan/no-redundant-instrumentation-7.c: Likewise.
              * c-c++-common/asan/no-redundant-instrumentation-8.c: Likewise.
              * c-c++-common/asan/no-redundant-instrumentation-2.c: Removed.
              * c-c++-common/asan/no-redundant-instrumentation-9.c: Likewise.
              * c-c++-common/asan/no-redundant-instrumentation-10.c: New test.
              * c-c++-common/asan/no-redundant-instrumentation-11.c: Likewise.
              * c-c++-common/asan/no-redundant-instrumentation-12.c: Likewise.
              * c-c++-common/asan/no-redundant-instrumentation-13.c: Likewise.
              * c-c++-common/asan/no-redundant-instrumentation-14.c: Likewise.
              * c-c++-common/asan/no-redundant-instrumentation-15.c: Likewise.
              * c-c++-common/asan/pr63638.c: Likewise.
      
      From-SVN: r216783
      Max Ostapenko committed
    • Allow to override Asan shadow offset. · fd960af2
      2014-10-28  Yury Gribov  <y.gribov@samsung.com>
      
      gcc/
      	* asan.c (set_asan_shadow_offset): New function.
      	(asan_shadow_offset): Likewise.
      	(asan_emit_stack_protection): Call asan_shadow_offset.
      	(build_shadow_mem_access): Likewise.
      	* asan.h (set_asan_shadow_offset): Declare.
      	* common.opt (fasan-shadow-offset): New option.
      	(frandom-seed): Fixed parameter name.
      	* doc/invoke.texi (fasan-shadow-offset): Describe new option.
      	(frandom-seed): Fixed parameter name.
      	* opts-global.c (handle_common_deferred_options): Handle
      	-fasan-shadow-offset.
      	* opts.c (common_handle_option): Likewise.
      
      gcc/testsuite/
      	* c-c++-common/asan/shadow-offset-1.c: New test.
      
      From-SVN: r216773
      Yury Gribov committed
  15. 19 Aug, 2014 1 commit
  16. 02 Jan, 2014 1 commit
  17. 20 Dec, 2013 1 commit
    • ubsan.c: Include tree-ssanames.h, asan.h and gimplify-me.h. · ac0ff9f2
      	* ubsan.c: Include tree-ssanames.h, asan.h and gimplify-me.h.
      	(ubsan_type_descriptor): Handle BOOLEAN_TYPE and ENUMERAL_TYPE
      	like INTEGER_TYPE.
      	(instrument_bool_enum_load): New function.
      	(ubsan_pass): Call it.
      	(gate_ubsan): Also enable for SANITIZE_BOOL or SANITIZE_ENUM.
      	* asan.c (create_cond_insert_point): No longer static.
      	* asan.h (create_cond_insert_point): Declare.
      	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_LOAD_INVALID_VALUE): New
      	built-in.
      	* opts.c (common_handle_option): Handle -fsanitize=bool and
      	-fsanitize=enum.
      	* builtins.c (fold_builtin_memory_op): When sanitizing bool
      	and enum loads, don't use enum or bool types for memcpy folding.
      	* flag-types.h (SANITIZE_BOOL, SANITIZE_ENUM): New.
      	(SANITIZE_UNDEFINED): Or these in.
      
      	* c-c++-common/ubsan/load-bool-enum.c: New test.
      
      From-SVN: r206143
      Jakub Jelinek committed
  18. 28 Nov, 2013 1 commit
    • cfgexpand.c (struct stack_vars_data): Add asan_base and asan_alignb fields. · e361382f
      	* cfgexpand.c (struct stack_vars_data): Add asan_base and asan_alignb
      	fields.
      	(expand_stack_vars): For -fsanitize=address, use (and set initially)
      	data->asan_base as base for vars and update asan_alignb.
      	(expand_used_vars): Initialize data.asan_base and data.asan_alignb.
      	Pass them to asan_emit_stack_protection.
      	* asan.c (asan_detect_stack_use_after_return): New variable.
      	(asan_emit_stack_protection): Add pbase and alignb arguments.
      	Implement use after return sanitization.
      	* asan.h (asan_emit_stack_protection): Adjust prototype.
      	(ASAN_STACK_MAGIC_USE_AFTER_RET, ASAN_STACK_RETIRED_MAGIC): Define.
      
      From-SVN: r205476
      Jakub Jelinek committed
  19. 22 Nov, 2013 1 commit
    • sanitizer.def (BUILT_IN_ASAN_BEFORE_DYNAMIC_INIT, [...]): New. · 59b36ecf
      	* sanitizer.def (BUILT_IN_ASAN_BEFORE_DYNAMIC_INIT,
      	BUILT_IN_ASAN_AFTER_DYNAMIC_INIT): New.
      	* asan.c (instrument_derefs): Handle also VAR_DECL loads/stores.
      	Don't instrument accesses to VAR_DECLs which are known to fit
      	into their bounds and the vars are known to have shadow bytes
      	indicating allowed access.
      	(asan_dynamic_init_call): New function.
      	(asan_add_global): If vnode->dynamically_initialized,
      	set __has_dynamic_init to 1 instead of 0.
      	(initialize_sanitizer_builtins): Add BT_FN_VOID_CONST_PTR var.
      	* asan.h (asan_dynamic_init_call): New prototype.
      	* cgraph.h (varpool_node): Add dynamically_initialized bitfield.
      cp/
      	* decl2.c: Include asan.h.
      	(one_static_initialization_or_destruction): If -fsanitize=address,
      	init is non-NULL and guard is NULL, set
      	vnode->dynamically_initialized.
      	(do_static_initialization_or_destruction): Call
      	__asan_{before,after}_dynamic_init around the static initialization.
      testsuite/
      	* c-c++-common/asan/no-redundant-instrumentation-1.c: Tweak to avoid
      	optimizing away some __asan_report* calls.
      
      From-SVN: r205282
      Jakub Jelinek committed
  20. 04 Nov, 2013 1 commit
  21. 10 Jan, 2013 1 commit
  22. 03 Dec, 2012 1 commit
    • sanitizer.def: Add Address Sanitizer builtins. · 0e668eaf
      	* sanitizer.def: Add Address Sanitizer builtins.
      	Rename BUILT_IN_TSAN_READ_* to BUILT_IN_TSAN_READ* and
      	BUILT_IN_TSAN_WRITE_* to BUILT_IN_TSAN_WRITE*.
      	* Makefile.in (asan.o): Depend on langhooks.h.
      	(tsan.o): Depend on asan.h.
      	* asan.h (initialize_sanitizer_builtins): New prototype.
      	* asan.c: Include langhooks.h.
      	(report_error_func): Use builtin_decl_implicit of corresponding
      	BUILT_IN_ASAN_REPORT_{LOAD,STORE}*.
      	(asan_init_func): Removed.
      	(initialize_sanitizer_builtins): New function.
      	(asan_finish_file): Call it.  Use builtin_decl_implicit
      	on BUILT_IN_ASAN_{INIT,{,UN}REGISTER_GLOBALS}.
      	(asan_instrument): Call initialize_sanitizer_builtins.
      	* builtins.def (DEF_SANITIZER_BUILTIN): Change condition to
      	(flag_asan || flag_tsan).
      	* tsan.c: Include asan.h and tsan.h.
      	(get_memory_access_decl): Rename BUILT_IN_TSAN_{READ,WRITE}_*
      	to BUILT_IN_TSAN_{READ,WRITE}*.
      	(tsan_pass): Call initialize_sanitizer_builtins.
      	(tsan_gate, tsan_gate_O0): Don't check if
      	builtin_decl_implicit_p (BUILT_IN_TSAN_INIT) is true.
      	(tsan_finish_file): Call initialize_sanitizer_builtins.
      	* builtin-types.def (BT_FN_VOID_PTR_PTRMODE): New fn type.
      
      From-SVN: r194103
      Jakub Jelinek committed
  23. 12 Nov, 2012 5 commits
    • Implement protection of global variables · 8240018b
      This patch implements the protection of global variables.  See the
      comments appended to the beginning of the asan.c file.
      
      	* varasm.c: Include asan.h.
      	(assemble_noswitch_variable): Grow size by asan_red_zone_size
      	if decl is asan protected.
      	(place_block_symbol): Likewise.
      	(assemble_variable): If decl is asan protected, increase
      	DECL_ALIGN if needed, and for decls emitted using
      	assemble_variable_contents append padding zeros after it.
      	* Makefile.in (varasm.o): Depend on asan.h.
      	* asan.c: Include output.h.
      	(asan_pp, asan_pp_initialized, asan_ctor_statements): New variables.
      	(asan_pp_initialize, asan_pp_string): New functions.
      	(asan_emit_stack_protection): Use asan_pp{,_initialized}
      	instead of local pp{,_initialized} vars, use asan_pp_initialize
      	and asan_pp_string helpers.
      	(asan_needs_local_alias, asan_protect_global,
      	asan_global_struct, asan_add_global): New functions.
      	(asan_finish_file): Protect global vars that can be protected. Use
      	asan_ctor_statements instead of ctor_statements
      	* asan.h (asan_protect_global): New prototype.
      	(asan_red_zone_size): New inline function.
      
      Co-Authored-By: Wei Mi <wmi@google.com>
      
      From-SVN: r193437
      Jakub Jelinek committed
    • Implement protection of stack variables · f3ddd692
      This patch implements the protection of stack variables.
      
      It lays out stack variables as well as the different red zones,
      emits some prologue code to populate the shadow memory as to poison
      (mark as non-accessible) the regions of the red zones and mark the
      regions of stack variables as accessible, and emit some epilogue code
      to un-poison (mark as accessible) the regions of red zones right
      before the function exits.
      
      	* Makefile.in (asan.o): Depend on $(EXPR_H) $(OPTABS_H).
      	(cfgexpand.o): Depend on asan.h.
      	* asan.c: Include expr.h and optabs.h.
      	(asan_shadow_set): New variable.
      	(asan_shadow_cst, asan_emit_stack_protection): New functions.
      	(asan_init_shadow_ptr_types): Initialize also asan_shadow_set.
      	* cfgexpand.c: Include asan.h.  Define HOST_WIDE_INT heap vector.
      	(partition_stack_vars): If i is large alignment and j small
      	alignment or vice versa, break out of the loop instead of continue,
      	and put the test earlier.  If flag_asan, break out of the loop
      	if for small alignment size is different.
      	(struct stack_vars_data): New type.
      	(expand_stack_vars): Add DATA argument.  Change PRED type to
      	function taking size_t argument instead of tree.  Adjust pred
      	calls.  Fill DATA in and add needed padding in between variables
      	if -faddress-sanitizer.
      	(defer_stack_allocation): Defer everything for flag_asan.
      	(stack_protect_decl_phase_1, stack_protect_decl_phase_2): Take
      	size_t index into stack_vars array instead of the decl directly.
      	(asan_decl_phase_3): New function.
      	(expand_used_vars): Return var destruction sequence.  Adjust
      	expand_stack_vars calls, add another one for flag_asan.  Call
      	asan_emit_stack_protection if expand_stack_vars added anything
      	to the vectors.
      	(expand_gimple_basic_block): Add disable_tail_calls argument.
      	(gimple_expand_cfg): Pass true to it if expand_used_vars returned
      	non-NULL.  Emit the sequence returned by expand_used_vars after
      	return_label.
      	* asan.h (asan_emit_stack_protection): New prototype.
      	(asan_shadow_set): New decl.
      	(ASAN_RED_ZONE_SIZE, ASAN_STACK_MAGIC_LEFT, ASAN_STACK_MAGIC_MIDDLE,
      	ASAN_STACK_MAGIC_RIGHT, ASAN_STACK_FRAME_MAGIC): Define.
      	(asan_protect_stack_decl): New inline.
      	* toplev.c (process_options): Also disable -faddress-sanitizer on
      	!FRAME_GROWS_DOWNWARDS targets.
      
      From-SVN: r193436
      Jakub Jelinek committed
    • Emit GIMPLE directly instead of gimplifying GENERIC. · f6d98484
      This patch cleanups the instrumentation code generation by emitting
      GIMPLE directly, as opposed to emitting GENERIC tree and then
      gimplifying them.  It also does some cleanups here and there
      
      	* Makefile.in (GTFILES): Add $(srcdir)/asan.c.
      	(asan.o): Update the dependencies of asan.o.
      	* asan.c (tm.h, tree.h, tm_p.h, basic-block.h, flags.h
      	function.h, tree-inline.h, tree-dump.h, diagnostic.h, demangle.h,
      	langhooks.h, ggc.h, cgraph.h, gimple.h): Remove these unused but
      	included headers.
      	(shadow_ptr_types): New variable.
      	(report_error_func): Change is_store argument to bool, don't append
      	newline to function name.
      	(PROB_VERY_UNLIKELY, PROB_ALWAYS): Define.
      	(build_check_stmt): Change is_store argument to bool.  Emit GIMPLE
      	directly instead of creating trees and gimplifying them.  Mark
      	the error reporting function as very unlikely.
      	(instrument_derefs): Change is_store argument to bool.  Use
      	int_size_in_bytes to compute size_in_bytes, simplify size check.
      	Use build_fold_addr_expr instead of build_addr.
      	(transform_statements): Adjust instrument_derefs caller.
      	Use gimple_assign_single_p as stmt test.  Don't look at MEM refs
      	in rhs2.
      	(asan_init_shadow_ptr_types): New function.
      	(asan_instrument): Don't push/pop gimplify context.
      	Call asan_init_shadow_ptr_types if not yet initialized.
      	* asan.h (ASAN_SHADOW_SHIFT): Adjust comment.
      
      Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
      Co-Authored-By: Xinliang David Li <davidxl@google.com>
      
      From-SVN: r193434
      Jakub Jelinek committed
    • Initial asan cleanups · dfe06d3e
      This patch defines a new asan_shadow_offset target macro, instead of
      having a mere macro in the asan.c file.  It becomes thus cleaner to
      define the target macro for targets that supports asan, namely x86 for
      now.  The ASAN_SHADOW_SHIFT (which, along with the asan_shadow_offset
      constant, is used to compute the address of the shadow memory byte for
      a given memory address) is defined in asan.h.
      
      gcc/ChangeLog
      
      	* toplev.c (process_options): Warn and turn off
      	-faddress-sanitizer if not supported by target.
      	* asan.c: Include target.h.
      	(asan_scale, asan_offset_log_32, asan_offset_log_64,
      	asan_offset_log): Removed.
      	(build_check_stmt): Use ASAN_SHADOW_SHIFT and
      	targetm.asan_shadow_offset ().
      	(asan_instrument): Don't initialize asan_offset_log.
      	* asan.h (ASAN_SHADOW_SHIFT): Define.
      	* target.def (TARGET_ASAN_SHADOW_OFFSET): New hook.
      	* doc/tm.texi.in (TARGET_ASAN_SHADOW_OFFSET): Add it.
      	* doc/tm.texi: Regenerated.
      	* Makefile.in (asan.o): Depend on $(TARGET_H).
      	* config/i386/i386.c (ix86_asan_shadow_offset): New function.
      	(TARGET_ASAN_SHADOW_OFFSET): Define.
      
      From-SVN: r193433
      Jakub Jelinek committed
    • Initial import of asan from the Google branch · 37d6f666
      This patch imports the initial state of asan as it was in the
      Google branch.
      
      It provides basic infrastructure for asan to instrument memory
      accesses on the heap, at -O3.  Note that it supports neither stack nor
      global variable protection.
      
      The rest of the patches of the set is intended to further improve this
      base.
      
      gcc/ChangeLog
      
      	* Makefile.in: Add asan.c and its dependencies.
      	* common.opt: Add -faddress-sanitizer option.
      	* invoke.texi: Document the new flag.
      	* passes.c: Add the asan pass.
      	* toplev.c (compile_file): Call asan_finish_file.
      	* asan.c: New file.
      	* asan.h: New file.
      	* tree-pass.h: Declare pass_asan.
      
      Co-Authored-By: Diego Novillo <dnovillo@google.com>
      Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
      
      From-SVN: r193432
      Wei Mi committed
  24. 26 Jul, 2007 1 commit
  25. 25 Jun, 2005 1 commit
  26. 01 Jun, 2003 1 commit
    • sdbout.h: Use ISO C90 prototypes. · cef2bd3e
      	* sdbout.h: Use ISO C90 prototypes.
      
      	* sdbout.c (CONTIN): Removed empty macro.
      	(sdbout_one_type): Remove CONTIN usages.
      	Remove ^Ls.
      	(tag_of_ru_type): Remove #if 0'ed function.
      	(sdbout_symbol): Remove #if 0'ed code.
      	(sdbout_one_type): Remove a #if 1.
      	(sdbout_one_type): Remove #if 0'ed code.
      	(sdbout_init): Remove RMS_QUICK_HACK_1 code.
      	Remove PARAMS, use ISO C90 prototypes for all functions.
      
      From-SVN: r67294
      Andreas Jaeger committed
  27. 22 Aug, 2001 1 commit
    • Makefile.in, [...]: replace "GNU CC" with "GCC". · 1322177d
      	* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
      	bitmap.h, builtin-types.def, builtins.c, builtins.def,
      	c-aux-info.c, c-common.c, c-common.def, c-common.h,
      	c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
      	c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
      	c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
      	caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
      	conditions.h, config.gcc, configure.frag, configure.in,
      	conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
      	cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
      	dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
      	doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
      	dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
      	emit-rtl.c, errors.c, errors.h, except.c, except.h,
      	exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
      	fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
      	function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
      	gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
      	gencheck.c, gencodes.c, genconfig.c, genemit.c,
      	genextract.c, genflags.c, gengenrtl.c, genmultilib,
      	genopinit.c, genoutput.c, genpeep.c, genrecog.c,
      	gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
      	ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
      	graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
      	gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
      	gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
      	hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
      	integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
      	libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
      	machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
      	mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
      	mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
      	params.h, predict.c, predict.def, predict.h, prefix.c,
      	prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
      	read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
      	regclass.c, regmove.c, regrename.c, regs.h, reload.c,
      	reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
      	rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
      	sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
      	sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
      	ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
      	stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
      	tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
      	tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
      	unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
      	unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
      	xcoffout.h: replace "GNU CC" with "GCC".
      
      From-SVN: r45105
      Lars Brinkhoff committed
  28. 19 Jul, 2001 1 commit
    • Makefile.in (emit-rtl.o, c-decl.o): Depend on debug.h. · e1772ac0
      	* Makefile.in (emit-rtl.o, c-decl.o): Depend on debug.h.
      	(final.o): Don't depend on xcoffout.h, dbxout.h or sdbout.h.
      	(toplev.o): Don't depend on xcoffout.h.
      	* c-decl.c: Include debug.h
      	(duplicate_decls): Use debug hook.
      	* dbxout.c (dbxout_source_file, dbxout_args): Make static.
      	(dbx_debug_hooks, xcoff_debug_hooks): Update.
      	(dbxout_types): Remove.
      	* dbxout.h (dbxout_source_file, dbxout_types, dbxout_args): Remove.
      	* debug.c (do_nothing_debug_hooks): Update.
      	(debug_true_tree, debug_nothing_rtx): New.
      	* debug.h (struct rtx_def): New.
      	(struct gcc_debug_hooks): New hooks ignore_block,
      	outlining_inline_function and label.
      	(debug_true_tree, debug_nothing_rtx, dwarf2out_frame_init,
      	dwarf2out_frame_finish): New.
      	* dwarf2out.c (dwarf2out_ignore_block, dwarf2out_abstract_function):
      	Make static, update prototype.
      	(dwarf2_debug_hooks): Update.
      	* dwarf2out.h (dwarf2out_ignore_block, dwarf2out_abstract_function,
      	dwarf2out_frame_init, dwarf2out_frame_finish): Remove.
      	* dwarfout.c (dwarf_debug_hooks): Update.
      	* emit-rtl.c: Include debug.h.
      	(remove_unnecessary_notes): Use debug hook.
      	* final.c: Don't include dbxout.h, xcoffout.h or sdbout.h.
      	(final_scan_insn): Use debug hook.
      	* integrate.c (output_inline_function): Use debug hook.
      	* sdbout.c (sdbout_toplevel_data, sdbout_label): Make static.
      	(sdb_debug_hooks): Update.
      	* sdbout.h (sdbout_label, sdbout_toplevel_data): Remove.
      	* toplev.c: Don't include xcoffout.h.
      	(note_outlining_of_inline_function, debug_ignore_block): Remove.
      	* toplev.h (note_outlining_of_inline_function, debug_ignore_block):
      	Remove.
      	* tree.h (dwarf2out_do_frame): Remove.
      
      From-SVN: r44163
      Neil Booth committed
  29. 17 Jul, 2001 1 commit
    • dbxout.c (dbxout_really_begin_function): Rename to dbxout_begin_function. · 653e276c
      	* dbxout.c (dbxout_really_begin_function): Rename to
      	dbxout_begin_function.
      	(dbx_debug_hooks, xcoff_debug_hooks): Update.
      	(dbxout_begin_function): Remove.
      	(dbxout_function): Update.
      	(dbxout_source_line): Update prototype.
      	* dbxout.h (dbxout_begin_function): Remove.
      	* debug.c (do_nothing_debug_hooks): Update.
      	(debug_nothing_tree): Update.
      	(debug_nothing_charstar_rtx): Remove.
      	* debug.h (union tree_node): Declare.
      	(struct rtx_def): Remove.
      	(gcc_debug_hooks): New hooks begin_prologue, end_prologue,
      	begin_function.  Change source_line prototype.
      	(debug_nothing_tree): New.
      	(debug_nothing_charstar_rtx): Delete.
      	(dwarf2out_begin_prologue): Moved from ...
      	* tree.h: ... here.
      	* dwarf2out.c (dwarf2_debug_hooks): Update.
      	(dwarf2out_begin_prologue): Update prototype.  If genuine dwarf2
      	debug info, call dwarf2out_source_line.
      	(dwarf2out_souce_line): Update prototype.
      	* dwarfout.c (dwarfout_begin_function): Rename dwarfout_end_prologue.
      	Change prototype, make static.
      	(dwarfout_source_line): Update prototype.
      	(dwarf_debug_hooks): Update.
      	* dwarfout.h (dwarfout_begin_function): Remove.
      	* final.c (final_start_function, final_scan_insn): Use appropriate
      	debug hooks, update to use notice_source_line.
      	(output_source_line): Rename notice_source_line.  Don't call the
      	source_line debug hook.
      	* sdbout.c (sdbout_begin_function): Rename sdbout_begin_prologue,
      	make static, update prototype.
      	(sdbout_mark_begin_function): Rename sdbout_begin_function, update
      	prototype.
      	(sdbout_end_prologue): New.
      	(sdbout_source_line): Update prototype.
      	(sdbout_debug_hooks): Update.
      	(sdbout_symbol): Remove unused var.
      	* sdbout.h (sdbout_begin_function, sdbout_mark_begin_function):
      	Delete.
      	* varasm.c: Include debug.h.
      	(assemble_start_function): Use begin_function debug_hook.
      	* xcoffout.c (xcoffout_begin_prologue): Rename xcoffout_begin_function,
      	update with prototype.
      	(xcoffout_source_line): Update prototype.
      	* xcoffout.h (xcoffout_begin_prologue): Rename xcoffout_begin_function,
      	update prototype.
      	(xcoffout_source_line): Update prototype.
      
      From-SVN: r44087
      Neil Booth committed
  30. 15 Jul, 2001 1 commit
    • dbxout.c (dbxout_source_line): Make static, update prototype. · e2a12aca
      	* dbxout.c (dbxout_source_line): Make static, update prototype.
      	(dbx_debug_hooks, xcoff_debug_hooks): Add new hooks.
      	(dbxout_init, dbxout_finish, dbxout_source_line,
      	dbxout_begin_block, dbxout_end_block): Update for new prototypes.
      	* dbxout.h (dbxout_source_line): Delete.
      	* debug.c (debug_nothing_file, debug_nothing_file_int,
      	debug_nothing_file_charstar_rtx): New.
      	(do_nothing_debug_hooks): Update.
      	(debug_nothing_void, debug_nothing_charstar_rtx,
      	dwarf2out_end_epilogue): New.
      	(debug_nothing_file_charstar, debug_nothing_file_int_int): Rename.
      	* debug.h (struct rtx_def): Declare.
      	(gcc_debug_hooks): New hooks source_line, end_epilogue
      	and end_function.
      	(debug_nothing_void, debug_nothing_charstar_rtx,
      	dwarf2out_end_epilogue): New.
      	(debug_nothing_file_charstar, debug_nothing_file_int_int): Rename.
      	* dwarf2out.c (dwarf2out_source_line): Make static, update prototype.
      	(dwarf2_debug_hooks): Update.
      	(dwarf2out_init, dwarf2out_finish, dwarf2out_source_line,
      	dwarf2out_begin_block, dwarf2out_end_block): Update for new prototypes.
      	* dwarf2out.h (dwarf2out_source_line): Remove.
      	* dwarfout.c (dwarfout_end_epilogue, dwarfout_end_function):
      	Make static, update prototype.
      	(dwarfout_init, dwarfout_finish, dwarfout_source_line,
      	dwarfout_begin_block, dwarfout_end_block): Update for new prototypes.
      	(dwarf_debug_hooks): Update.
      	* dwarfout.h (dwarfout_end_epilogue, dwarfout_source_line,
      	dwarfout_end_function): Remove.
      	* final.c (profile_function): Use debug hooks for ending functions
      	and epilogues.
      	(output_source_line, final_end_function): Update prototype,
      	use debug hooks.
      	(final_start_function, final_scan_insn): Update.
      	* output.h (sdb_begin_function_line): Remove.
      	(final_end_function): Update prototype.
      	* sdbout.c (sdb_begin_function_line): Make static.
      	(PUT_SDB_EPILOGUE_END): Move to sdbout_end_epilogue.
      	(sdbout_source_line): New.
      	(sdbout_end_epilogue, sdbout_end_function): Make static, update
      	prototypes.
      	(sdb_debug_hooks): Update.
      	(sdbout_init, sdbout_source_line,
      	sdbout_begin_block, sdbout_end_block): Update for new prototypes.
      	* sdbout.h (sdbout_end_epilogue, sdbout_end_function): Remove.
      	* toplev.c (compile_file, rest_of_compilation): Update.
      	* tree.h (dwarf2out_end_epilogue): Move to debug.h.
      	* xcoffout.c (xcoffout_source_line, xcoffout_begin_block,
      	xcoffout_end_block, xcoffout_end_epilogue, xcoffout_end_function):
      	Update for prototype changes.
      	* xcoffout.h (xcoffout_source_line, xcoffout_begin_block,
      	xcoffout_end_block, xcoffout_end_epilogue): Update prototypes.
      
      From-SVN: r44017
      Neil Booth committed
  31. 12 Jul, 2001 1 commit
    • Makefile.in (final.o): Depend on debug.h. · a5a42b92
      	* Makefile.in (final.o): Depend on debug.h.
      	* dbxout.c (dbxout_begin_block, dbxout_end_block): New.
      	(dbx_debug_hooks): Add new hooks.
      	(xcoff_debug_hooks): New.
      	* debug.c (debug_nothing_file_int_int): New.
      	(do_nothing_debug_hooks): Update.
      	* debug.h (gcc_debug_hooks): New hooks begin_block and end_block.
      	(debug_nothing_file_int_int): New.
      	* dwarf2out.c (dwarf2out_begin_block, dwarf2out_end_block): Make
      	static, update prototype.
      	(dwarf2_debug_hooks): Update.
      	* dwarf2out.h (dwarf2out_begin_block, dwarf2out_end_block): Remove.
      	* dwarfout.c (dwarfout_begin_block, dwarfout_end_block): Make
      	static, update prototype.
      	(dwarf_debug_hooks): Update.
      	* dwarfout.h (dwarfout_begin_block, dwarfout_end_block): Remove.
      	* final.c: Include debug.h.
      	(final_scan_insn): Use debug hooks when beginning and ending blocks.
      	* sdbout.c (sdbout_begin_block, sdbout_end_block): Make
      	static, update prototype.
      	(sdb_debug_hooks): Update.
      	* sdbout.h (sdbout_begin_block, sdbout_end_block): Remove.
      	* toplev.c: Distinguish between xcoff and dbx.
      
      	* f/lex.c (ffelex_file_pop_, ffelex_file_push_, ffelex_hash_):
      	Call all debug hooks, not just dwarf ones.
      
      From-SVN: r43959
      Neil Booth committed
  32. 11 Jul, 2001 1 commit
    • Makefile.in (c-lex.o): Wrap long lines. · 7f905405
      	* Makefile.in (c-lex.o): Wrap long lines.  Depend on debug.h.
      	* c-lex.c (cb_file_change, cb_define, cb_undef): Use debug
      	hooks directly.
      	* dbxout.c (dbx_debug_hooks): Add new hooks.
      	(dbxout_start_new_source_file): Rename dbxout_start_source_file,
      	make static.
      	(dbxout_resume_previous_source_file): Rename dbxout_end_source_file,
      	make static.
      	* dbxout.h (dbxout_start_new_source_file,
      	dbxout_resume_previous_source_file): Delete.
      	* debug.c (do_nothing_debug_hooks): Add new hooks.
      	(debug_nothing_init_finish): Rename debug_nothing_file_charstar.
      	(debug_nothing_int_charstar, debug_nothing_int): New.
      	* debug.h (gcc_debug_hooks): New hooks define, undef,
      	start_source_file and end_source_file.
      	(debug_nothing_init_finish): Rename debug_nothing_file_charstar.
      	(debug_nothing_int_charstar, debug_nothing_int): New.
      	* dwarf2out.c (dwarf2_debug_hooks): Add new hooks.
      	(dwarf2out_start_source_file, dwarf2out_end_source_file,
      	dwarf2out_define, dwarf2out_undef): Make static.
      	* dwarf2out.h (dwarf2out_start_source_file, dwarf2out_end_source_file,
      	dwarf2out_define, dwarf2out_undef): Remove.
      	* dwarfout.c (dwarf_debug_hooks): Add new hooks.
      	(dwarfout_start_source_file, dwarfout_end_source_file,
      	dwarfout_define, dwarfout_undef): Make static.
      	(dwarfout_start_source_file_check,
      	dwarfout_end_source_file_check): New.
      	(dwarfout_define, dwarfout_finish): Update.
      	* dwarfout.h (dwarfout_start_new_source_file,
      	dwarfout_resume_previous_source_file, dwarfout_define,
      	dwarfout_undef): Remove.
      	* sdbout.c (sdb_debug_hooks): Add new hooks.
      	(sdbout_start_new_source_file): Rename sdbout_start_source_file,
      	make static.
      	(sdbout_resume_previous_source_file): Rename sdbout_end_source_file,
      	make static, take an arg.
      	* sdbout.h (sdbout_start_new_source_file,
      	sdbout_resume_previous_source_file): Delete.
      	* toplev.c (debug_start_source_file, debug_end_source_file,
      	debug_define, debug_undef): Delete.
      	* toplev.h (debug_start_source_file, debug_end_source_file,
      	debug_define, debug_undef): Delete.
      
      	* java/jcf-parse.c: Include debug.h.
      	(parse_class_file): Update to use debug hooks directly.
      	* java/Make-lang.in (jcf-parse.o): Depend on debug.h.
      
      From-SVN: r43952
      Neil Booth committed