Implement protection of global variables
commit2257086aced32435e4fd214250761120e6580190
authorJakub Jelinek <jakub@redhat.com>
Wed, 17 Oct 2012 18:43:30 +0000 (17 18:43 +0000)
committerDodji Seketeli <dodji@seketeli.org>
Fri, 9 Nov 2012 17:03:52 +0000 (9 18:03 +0100)
treeceaf4e653f7f059b71084e05ce77944282c80fe2
parentccc165bcc69c92d232f869d633bc401524414059
Implement protection of global variables

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/asan@192541 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog.asan
gcc/Makefile.in
gcc/asan.c
gcc/asan.h
gcc/varasm.c