diff mbox

[16/17] Disable __asan_init calls for KASan

Message ID 543F84F4.6020406@samsung.com
State New
Headers show

Commit Message

Yury Gribov Oct. 16, 2014, 8:42 a.m. UTC
Same as mainline.

Comments

Jakub Jelinek Oct. 16, 2014, 8:54 a.m. UTC | #1
On Thu, Oct 16, 2014 at 12:42:28PM +0400, Yury Gribov wrote:
> Same as mainline.

> 2014-10-15  Yury Gribov  <y.gribov@samsung.com>
> 
> 	Backport from mainline
> 	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.

Ok.

	Jakub
diff mbox

Patch

2014-10-15  Yury Gribov  <y.gribov@samsung.com>

	Backport from mainline
	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.

diff --git a/gcc/asan.c b/gcc/asan.c
index 5c6d1c5..b8fbed3 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -2384,8 +2384,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))
@@ -2422,7 +2425,7 @@  asan_finish_file (void)
       DECL_INITIAL (var) = ctor;
       varpool_assemble_decl (varpool_node_for_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),
@@ -2437,8 +2440,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;
 }