aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2023-08-03 09:00:05 +0930
committerAlan Modra <amodra@gmail.com>2023-08-03 21:19:57 +0930
commitb43e801e28550653ecef2b7e6b15125516ab1a58 (patch)
tree4bab9cb8bf63ccb949abe75ce167973e43e6297c
parentebfd369c3e9c18318c46d4ddc3ad016905d975ea (diff)
downloadgdb-b43e801e28550653ecef2b7e6b15125516ab1a58.zip
gdb-b43e801e28550653ecef2b7e6b15125516ab1a58.tar.gz
gdb-b43e801e28550653ecef2b7e6b15125516ab1a58.tar.bz2
arm: sanitizer stringop-overflow
In function 'memset', inlined from 'create_unwind_entry' at /home/alan/src/binutils-gdb/gas/config/tc-arm.c:27881:3: /usr/include/bits/string_fortified.h:59:10: error: '__builtin_memset' specified size between 2147483652 and 4294967295 exceeds maximum object size 2147483647 [-Werror=stringop-overflow=] 59 | return __builtin___memset_chk (__dest, __ch, __len, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 | __glibc_objsize0 (__dest)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~ * config/tc-arm.c (create_unwind_entry): Return after bad size, and bad opcode count.
-rw-r--r--gas/config/tc-arm.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index c0f6215..f912fb2 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -27828,7 +27828,10 @@ create_unwind_entry (int have_data)
if (unwind.personality_index == 0)
{
if (unwind.opcode_count > 3)
- as_bad (_("too many unwind opcodes for personality routine 0"));
+ {
+ as_bad (_("too many unwind opcodes for personality routine 0"));
+ return 1;
+ }
if (!have_data)
{
@@ -27869,7 +27872,10 @@ create_unwind_entry (int have_data)
size = (size + 3) >> 2;
if (size > 0xff)
- as_bad (_("too many unwind opcodes"));
+ {
+ as_bad (_("too many unwind opcodes"));
+ return 1;
+ }
frag_align (2, 0, 0);
record_alignment (now_seg, 2);