Make build_check_stmt accept an SSA_NAME for its base
[official-gcc.git] / gcc / ChangeLog.asan
blobc5172198a3de4d6d1fa09be9f1a07d1c1cfbb975
1 2012-10-26  Dodji Seketeli  <dodji@redhat.com>
3         * asan.c (build_check_stmt): Accept the memory access to be
4         represented by an SSA_NAME.
6 2012-10-17  Jakub Jelinek  <jakub@redhat.com>
7             Wei Mi <wmi@google.com>
9         * varasm.c: Include asan.h.
10         (assemble_noswitch_variable): Grow size by asan_red_zone_size
11         if decl is asan protected.
12         (place_block_symbol): Likewise.
13         (assemble_variable): If decl is asan protected, increase
14         DECL_ALIGN if needed, and for decls emitted using
15         assemble_variable_contents append padding zeros after it.
16         * Makefile.in (varasm.o): Depend on asan.h.
17         * asan.c: Include output.h.
18         (asan_pp, asan_pp_initialized, asan_ctor_statements): New variables.
19         (asan_pp_initialize, asan_pp_string): New functions.
20         (asan_emit_stack_protection): Use asan_pp{,_initialized}
21         instead of local pp{,_initialized} vars, use asan_pp_initialize
22         and asan_pp_string helpers.
23         (asan_needs_local_alias, asan_protect_global,
24         asan_global_struct, asan_add_global): New functions.
25         (asan_finish_file): Protect global vars that can be protected. Use
26         asan_ctor_statements instead of ctor_statements
27         * asan.h (asan_protect_global): New prototype.
28         (asan_red_zone_size): New inline function.
30 2012-10-17  Jakub Jelinek  <jakub@redhat.com>
32         * Makefile.in (asan.o): Depend on $(EXPR_H) $(OPTABS_H).
33         (cfgexpand.o): Depend on asan.h.
34         * asan.c: Include expr.h and optabs.h.
35         (asan_shadow_set): New variable.
36         (asan_shadow_cst, asan_emit_stack_protection): New functions.
37         (asan_init_shadow_ptr_types): Initialize also asan_shadow_set.
38         * cfgexpand.c: Include asan.h.  Define HOST_WIDE_INT heap vector.
39         (partition_stack_vars): If i is large alignment and j small
40         alignment or vice versa, break out of the loop instead of continue,
41         and put the test earlier.  If flag_asan, break out of the loop
42         if for small alignment size is different.
43         (struct stack_vars_data): New type.
44         (expand_stack_vars): Add DATA argument.  Change PRED type to
45         function taking size_t argument instead of tree.  Adjust pred
46         calls.  Fill DATA in and add needed padding in between variables
47         if -faddress-sanitizer.
48         (defer_stack_allocation): Defer everything for flag_asan.
49         (stack_protect_decl_phase_1, stack_protect_decl_phase_2): Take
50         size_t index into stack_vars array instead of the decl directly.
51         (asan_decl_phase_3): New function.
52         (expand_used_vars): Return var destruction sequence.  Adjust
53         expand_stack_vars calls, add another one for flag_asan.  Call
54         asan_emit_stack_protection if expand_stack_vars added anything
55         to the vectors.
56         (expand_gimple_basic_block): Add disable_tail_calls argument.
57         (gimple_expand_cfg): Pass true to it if expand_used_vars returned
58         non-NULL.  Emit the sequence returned by expand_used_vars after
59         return_label.
60         * asan.h (asan_emit_stack_protection): New prototype.
61         (asan_shadow_set): New decl.
62         (ASAN_RED_ZONE_SIZE, ASAN_STACK_MAGIC_LEFT, ASAN_STACK_MAGIC_MIDDLE,
63         ASAN_STACK_MAGIC_RIGHT, ASAN_STACK_FRAME_MAGIC): Define.
64         (asan_protect_stack_decl): New inline.
65         * toplev.c (process_options): Also disable -faddress-sanitizer on
66         !FRAME_GROWS_DOWNWARDS targets.
68 2012-10-17  Jakub Jelinek  <jakub@redhat.com>
70         * Makefile.in (asan.o): Depend on $(EXPR_H) $(OPTABS_H).
71         (cfgexpand.o): Depend on asan.h.
72         * asan.c: Include expr.h and optabs.h.
73         (asan_shadow_set): New variable.
74         (asan_shadow_cst, asan_emit_stack_protection): New functions.
75         (asan_init_shadow_ptr_types): Initialize also asan_shadow_set.
76         * cfgexpand.c: Include asan.h.  Define HOST_WIDE_INT heap vector.
77         (partition_stack_vars): If i is large alignment and j small
78         alignment or vice versa, break out of the loop instead of continue,
79         and put the test earlier.  If flag_asan, break out of the loop
80         if for small alignment size is different.
81         (struct stack_vars_data): New type.
82         (expand_stack_vars): Add DATA argument.  Change PRED type to
83         function taking size_t argument instead of tree.  Adjust pred calls.
84         Fill DATA in and add needed padding in between variables if -fasan.
85         (defer_stack_allocation): Defer everything for flag_asan.
86         (stack_protect_decl_phase_1, stack_protect_decl_phase_2): Take
87         size_t index into stack_vars array instead of the decl directly.
88         (asan_decl_phase_3): New function.
89         (expand_used_vars): Return var destruction sequence.  Adjust
90         expand_stack_vars calls, add another one for flag_asan.  Call
91         asan_emit_stack_protection if expand_stack_vars added anything
92         to the vectors.
93         (expand_gimple_basic_block): Add disable_tail_calls argument.
94         (gimple_expand_cfg): Pass true to it if expand_used_vars returned
95         non-NULL.  Emit the sequence returned by expand_used_vars after
96         return_label.
97         * asan.h (asan_emit_stack_protection): New prototype.
98         (asan_shadow_set): New decl.
99         (ASAN_RED_ZONE_SIZE, ASAN_STACK_MAGIC_LEFT, ASAN_STACK_MAGIC_MIDDLE,
100         ASAN_STACK_MAGIC_RIGHT, ASAN_STACK_FRAME_MAGIC): Define.
101         (asan_protect_stack_decl): New inline.
102         * toplev.c (process_options): Also disable -fasan on
103         !FRAME_GROWS_DOWNWARDS targets.
105 2012-10-12  Jakub Jelinek  <jakub@redhat.com>
107         * asan.c (build_check_stmt): Rename join_bb variable to else_bb.
108         (gate_asan_O0): New function.
109         (pass_asan_O0): New variable.
110         * passes.c (init_optimization_passes): Add pass_asan_O0.
111         * tree-pass.h (pass_asan_O0): New declaration.
113 2012-10-11  Jakub Jelinek  <jakub@redhat.com>
114             Xinliang David Li  <davidxl@google.com>
115             Dodji Seketeli <dodji@redhat.com>
117         * Makefile.in (GTFILES): Add $(srcdir)/asan.c.
118         (asan.o): Update the dependencies of asan.o.
119         * asan.c (tm.h, tree.h, tm_p.h, basic-block.h, flags.h
120         function.h, tree-inline.h, tree-dump.h, diagnostic.h, demangle.h,
121         langhooks.h, ggc.h, cgraph.h, gimple.h): Remove these unused but
122         included headers.
123         (shadow_ptr_types): New variable.
124         (report_error_func): Change is_store argument to bool, don't append
125         newline to function name.
126         (PROB_VERY_UNLIKELY, PROB_ALWAYS): Define.
127         (build_check_stmt): Change is_store argument to bool.  Emit GIMPLE
128         directly instead of creating trees and gimplifying them.  Mark
129         the error reporting function as very unlikely.
130         (instrument_derefs): Change is_store argument to bool.  Use
131         int_size_in_bytes to compute size_in_bytes, simplify size check.
132         Use build_fold_addr_expr instead of build_addr.
133         (transform_statements): Adjust instrument_derefs caller.
134         Use gimple_assign_single_p as stmt test.  Don't look at MEM refs
135         in rhs2.
136         (asan_init_shadow_ptr_types): New function.
137         (asan_instrument): Don't push/pop gimplify context.
138         Call asan_init_shadow_ptr_types if not yet initialized.
139         * asan.h (ASAN_SHADOW_SHIFT): Adjust comment.
141 2012-10-11  Jakub Jelinek  <jakub@redhat.com>
142             Dodji Seketeli <dodji@redhat.com>
144         * Makefile.in (GTFILES): Add $(srcdir)/asan.c.
145         (asan.o): Update the dependencies of asan.o.
146         * asan.c (tm.h, tree.h, tm_p.h, basic-block.h, flags.h
147         function.h, tree-inline.h, tree-dump.h, diagnostic.h, demangle.h,
148         langhooks.h, ggc.h, cgraph.h, gimple.h): Remove these unused but
149         included headers.
150         (shadow_ptr_types): New variable.
151         (report_error_func): Change is_store argument to bool, don't append
152         newline to function name.
153         (PROB_VERY_UNLIKELY, PROB_ALWAYS): Define.
154         (build_check_stmt): Change is_store argument to bool.  Emit GIMPLE
155         directly instead of creating trees and gimplifying them.  Mark
156         the error reporting function as very unlikely.
157         (instrument_derefs): Change is_store argument to bool.  Use
158         int_size_in_bytes to compute size_in_bytes, simplify size check.
159         Use build_fold_addr_expr instead of build_addr.
160         (transform_statements): Adjust instrument_derefs caller.
161         Use gimple_assign_single_p as stmt test.  Don't look at MEM refs
162         in rhs2.
163         (asan_init_shadow_ptr_types): New function.
164         (asan_instrument): Don't push/pop gimplify context.
165         Call asan_init_shadow_ptr_types if not yet initialized.
166         * asan.h (ASAN_SHADOW_SHIFT): Adjust comment.
168 2012-10-11  Jakub Jelinek  <jakub@redhat.com>
170         * toplev.c (process_options): Warn and turn off
171         -faddress-sanitizer if not supported by target.
172         * asan.c: Include target.h.
173         (asan_scale, asan_offset_log_32, asan_offset_log_64,
174         asan_offset_log): Removed.
175         (build_check_stmt): Use ASAN_SHADOW_SHIFT and
176         targetm.asan_shadow_offset ().
177         (asan_instrument): Don't initialize asan_offset_log.
178         * asan.h (ASAN_SHADOW_SHIFT): Define.
179         * target.def (TARGET_ASAN_SHADOW_OFFSET): New hook.
180         * doc/tm.texi.in (TARGET_ASAN_SHADOW_OFFSET): Add it.
181         * doc/tm.texi: Regenerated.
182         * Makefile.in (asan.o): Depend on $(TARGET_H).
183         * config/i386/i386.c (ix86_asan_shadow_offset): New function.
184         (TARGET_ASAN_SHADOW_OFFSET): Define.
186 2012-10-10  Wei Mi <wmi@google.com>
187             Diego Novillo <dnovillo@google.com>
188             Dodji Seketeli <dodji@redhat.com>
190         * Makefile.in: Add asan.c and its dependencies.
191         * common.opt: Add -faddress-sanitizer option.
192         * invoke.texi: Document the new flag.
193         * passes.c: Add the asan pass.
194         * toplev.c (compile_file): Call asan_finish_file.
195         * asan.c: New file.
196         * asan.h: New file.
197         * tree-pass.h: Declare pass_asan.