aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYury Gribov <y.gribov@samsung.com>2014-10-03 14:17:28 +0000
committerYury Gribov <ygribov@gcc.gnu.org>2014-10-03 14:17:28 +0000
commitc6d129b0eaf2fb46b289b774057f5f04f23057f0 (patch)
treec5f459b34ea6dc6fe6a3c98986e714d27372b1e4
parent97932329667e6e6e9f0b5232072325aef06b8376 (diff)
downloadgcc-c6d129b0eaf2fb46b289b774057f5f04f23057f0.zip
gcc-c6d129b0eaf2fb46b289b774057f5f04f23057f0.tar.gz
gcc-c6d129b0eaf2fb46b289b774057f5f04f23057f0.tar.bz2
asan.c (asan_finish_file): Disable __asan_init calls for KASan; don't emit empty ctors.
2014-10-03 Yury Gribov <y.gribov@samsung.com> * asan.c (asan_finish_file): Disable __asan_init calls for KASan; don't emit empty ctors. From-SVN: r215851
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/asan.c14
2 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 56add5b..3ed5277 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2014-10-03 Yury Gribov <y.gribov@samsung.com>
+
+ * asan.c (asan_finish_file): Disable __asan_init calls for KASan;
+ don't emit empty ctors.
+
2014-10-03 Eric Botcazou <ebotcazou@adacore.com>
* convert.c (convert_to_integer): Do not introduce useless conversions
diff --git a/gcc/asan.c b/gcc/asan.c
index f520eab..247661a 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -2400,8 +2400,11 @@ asan_finish_file (void)
nor after .LASAN* array. */
flag_sanitize &= ~SANITIZE_ADDRESS;
- tree fn = builtin_decl_implicit (BUILT_IN_ASAN_INIT);
- append_to_statement_list (build_call_expr (fn, 0), &asan_ctor_statements);
+ if (flag_sanitize & SANITIZE_USER_ADDRESS)
+ {
+ tree fn = builtin_decl_implicit (BUILT_IN_ASAN_INIT);
+ append_to_statement_list (build_call_expr (fn, 0), &asan_ctor_statements);
+ }
FOR_EACH_DEFINED_VARIABLE (vnode)
if (TREE_ASM_WRITTEN (vnode->decl)
&& asan_protect_global (vnode->decl))
@@ -2438,7 +2441,7 @@ asan_finish_file (void)
DECL_INITIAL (var) = ctor;
varpool_node::finalize_decl (var);
- fn = builtin_decl_implicit (BUILT_IN_ASAN_REGISTER_GLOBALS);
+ tree fn = builtin_decl_implicit (BUILT_IN_ASAN_REGISTER_GLOBALS);
tree gcount_tree = build_int_cst (pointer_sized_int_node, gcount);
append_to_statement_list (build_call_expr (fn, 2,
build_fold_addr_expr (var),
@@ -2453,8 +2456,9 @@ asan_finish_file (void)
cgraph_build_static_cdtor ('D', dtor_statements,
MAX_RESERVED_INIT_PRIORITY - 1);
}
- cgraph_build_static_cdtor ('I', asan_ctor_statements,
- MAX_RESERVED_INIT_PRIORITY - 1);
+ if (asan_ctor_statements)
+ cgraph_build_static_cdtor ('I', asan_ctor_statements,
+ MAX_RESERVED_INIT_PRIORITY - 1);
flag_sanitize |= SANITIZE_ADDRESS;
}