re PR sanitizer/58543 (Invalid unpoisoning of stack redzones on ARM)
authorRichard Sandiford <rsandifo@linux.vnet.ibm.com>
Thu, 31 Oct 2013 12:10:01 +0000 (12:10 +0000)
committerYury Gribov <ygribov@gcc.gnu.org>
Thu, 31 Oct 2013 12:10:01 +0000 (12:10 +0000)
2013-10-31  Richard Sandiford  <rsandifo@linux.vnet.ibm.com>
    Yury Gribov  <y.gribov@samsung.com>

PR sanitizer/58543
* asan.c (asan_clear_shadow): Allocate a new vreg for temporary
shadow pointer to avoid clobbering the main one.

Co-Authored-By: Yury Gribov <y.gribov@samsung.com>
From-SVN: r204251

gcc/ChangeLog
gcc/asan.c

index fab5bc5c0eadf61710dbfbf802ab38a34dbf62d9..6efde54b2e6a8794b36d54e503066e340165aad5 100644 (file)
@@ -1,3 +1,10 @@
+2013-10-31  Richard Sandiford  <rsandifo@linux.vnet.ibm.com>
+           Yury Gribov  <y.gribov@samsung.com>
+
+       PR sanitizer/58543
+       * asan.c (asan_clear_shadow): Allocate a new vreg for temporary
+       shadow pointer to avoid clobbering the main one.
+
 2013-10-31  Zhenqiang Chen  <zhenqiang.chen@linaro.org>
 
        * lower-subreg.c (resolve_simple_move): Copy REG_INC note.
index f2934b0490ddc19fcf44419fcdd57d12b9ac0998..81397198f6054d7149a7075908b16b767e077f14 100644 (file)
@@ -898,7 +898,7 @@ asan_clear_shadow (rtx shadow_mem, HOST_WIDE_INT len)
 
   gcc_assert ((len & 3) == 0);
   top_label = gen_label_rtx ();
-  addr = force_reg (Pmode, XEXP (shadow_mem, 0));
+  addr = copy_to_mode_reg (Pmode, XEXP (shadow_mem, 0));
   shadow_mem = adjust_automodify_address (shadow_mem, SImode, addr, 0);
   end = force_reg (Pmode, plus_constant (Pmode, addr, len));
   emit_label (top_label);