Message ID | cfcd9d95-8e06-48be-3469-2bfa71310ef1@suse.cz |
---|---|
State | New |
Headers | show |
PING^1 On 12/16/2016 01:04 PM, Martin Liška wrote: > Currently, use-after-scope relies on fact that entry point of gimplify_decl_expr > is gimplify_function_tree. Fixed by checking if asan_poisoned_variables is non-null. > > Patch can bootstrap on ppc64le-redhat-linux and survives regression tests. > > Ready to be installed? > Martin >
On Wed, Jan 04, 2017 at 10:19:28AM +0100, Martin Liška wrote: > PING^1 > > On 12/16/2016 01:04 PM, Martin Liška wrote: > > Currently, use-after-scope relies on fact that entry point of gimplify_decl_expr > > is gimplify_function_tree. Fixed by checking if asan_poisoned_variables is non-null. > > > > Patch can bootstrap on ppc64le-redhat-linux and survives regression tests. > > > > Ready to be installed? Looking at asan_poisoned_variables, my preference would be to guard: asan_poisoned_variables = new hash_set<tree> (); with if (asan_sanitize_use_after_scope () && !asan_no_sanitize_address_p ()) the delete asan_poisoned_variables; with if (asan_poisoned_variables) and all the poisoning stuff in the gimplifier also with if (asan_poisoned_variables) and no need to repeat there the asan_sanitize_use_after_scope () and !asan_no_sanitize_address_p () tests. if (asan_poisoned_variables != NULL && asan_poisoned_variables->contains (t)) is already fine, if (asan_sanitize_use_after_scope () && !asan_no_sanitize_address_p () && !is_vla && TREE_ADDRESSABLE (decl) && !TREE_STATIC (decl) && !DECL_HAS_VALUE_EXPR_P (decl) && dbg_cnt (asan_use_after_scope)) should replace the first 2 conditions with asan_poisoned_variables, if (asan_sanitize_use_after_scope () && asan_used_labels != NULL && asan_used_labels->contains (label)) asan_poison_variables (asan_poisoned_variables, false, pre_p); should replace asan_sanitize_use_after_scope () with asan_poisoned_variables. IMHO no need to add comments, especially not one mentioning omp lowering - the gimplifier is called from lots of various places. Jakub
From 6acf276399b574ced231096eb1eceb32771118e3 Mon Sep 17 00:00:00 2001 From: marxin <mliska@suse.cz> Date: Thu, 15 Dec 2016 18:23:24 +0100 Subject: [PATCH] Do not sanitize in lower_omp_target context (PR sanitizer/78815). gcc/ChangeLog: 2016-12-15 Martin Liska <mliska@suse.cz> PR sanitizer/78815 * gimplify.c (gimplify_decl_expr): Do not sanitize in lower_omp_target context. --- gcc/gimplify.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc/gimplify.c b/gcc/gimplify.c index b738855a637..02c6eea638b 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1619,12 +1619,17 @@ gimplify_decl_expr (tree *stmt_p, gimple_seq *seq_p) is_vla = true; } + /* If gimplify_decl_expr is called from lower_omp_target context, then + asan_poisoned_varibles will be NULL and we do not want to sanitize + in such case. */ + if (asan_sanitize_use_after_scope () && !asan_no_sanitize_address_p () && !is_vla && TREE_ADDRESSABLE (decl) && !TREE_STATIC (decl) && !DECL_HAS_VALUE_EXPR_P (decl) + && asan_poisoned_variables && dbg_cnt (asan_use_after_scope)) { asan_poisoned_variables->add (decl); -- 2.11.0