diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index 545ec872fd8..06eda102468 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -5713,7 +5713,7 @@ aarch64_process_record (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR insn_addr) { uint32_t rec_no = 0; - uint8_t insn_size = 4; + const uint8_t insn_size = 4; uint32_t ret = 0; gdb_byte buf[insn_size]; aarch64_insn_decode_record aarch64_record; diff --git a/gdb/arc-linux-tdep.c b/gdb/arc-linux-tdep.c index 54406ac5b90..30bd40c8027 100644 --- a/gdb/arc-linux-tdep.c +++ b/gdb/arc-linux-tdep.c @@ -174,6 +174,9 @@ arc_linux_is_sigtramp (const frame_info_ptr &this_frame) 0x22, 0x6f, 0x00, 0x3f /* swi */ }; + constexpr size_t max_insn_sz = std::max (sizeof (insns_be_hs), + sizeof (insns_be_700)); + gdb_byte arc_sigtramp_insns[sizeof (insns_be_700)]; size_t insns_sz; if (arc_mach_is_arcv2 (gdbarch)) @@ -200,7 +203,8 @@ arc_linux_is_sigtramp (const frame_info_ptr &this_frame) std::swap (arc_sigtramp_insns[i], arc_sigtramp_insns[i+1]); } - gdb_byte buf[insns_sz]; + gdb_assert (insns_sz <= max_insn_sz); + gdb_byte buf[max_insn_sz]; /* Read the memory at the PC. Since we are stopped, any breakpoint must have been removed. */