aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-12-01 08:31:56 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-12-01 08:31:56 +0100
commita5b256615869279b3ec54ee3f58811689a26526c (patch)
tree57373e88c67408c680696c1a59e55f9b7af58c07 /gcc
parent6b4f5050a9a5156eb23b9174ff576a77b1149465 (diff)
downloadgcc-a5b256615869279b3ec54ee3f58811689a26526c.zip
gcc-a5b256615869279b3ec54ee3f58811689a26526c.tar.gz
gcc-a5b256615869279b3ec54ee3f58811689a26526c.tar.bz2
re PR sanitizer/88289 (r266664 causes asan to fail on many/most tests on BE)
PR sanitizer/88289 * asan.c (asan_redzone_buffer::flush_redzone_payload): Fix up an off-by-one for BYTES_BIG_ENDIAN. From-SVN: r266708
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/asan.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b215a9c..c84d6fa 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2018-12-01 Jakub Jelinek <jakub@redhat.com>
+ PR sanitizer/88289
+ * asan.c (asan_redzone_buffer::flush_redzone_payload): Fix up
+ an off-by-one for BYTES_BIG_ENDIAN.
+
PR target/54589
* combine.c (find_split_point): For invalid memory address
nonobj + obj + const, if reg + obj + const is valid addressing
diff --git a/gcc/asan.c b/gcc/asan.c
index 5d1d1de..0530ddd 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -1326,7 +1326,7 @@ asan_redzone_buffer::flush_redzone_payload (void)
for (unsigned i = 0; i < RZ_BUFFER_SIZE; i++)
{
unsigned char v
- = m_shadow_bytes[BYTES_BIG_ENDIAN ? RZ_BUFFER_SIZE - i : i];
+ = m_shadow_bytes[BYTES_BIG_ENDIAN ? RZ_BUFFER_SIZE - i - 1 : i];
val |= (unsigned HOST_WIDE_INT)v << (BITS_PER_UNIT * i);
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "%02x ", v);