summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/gdbserver/ChangeLog5
-rw-r--r--gdb/gdbserver/regcache.c10
2 files changed, 11 insertions, 4 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 345abb3e731..d9f80c9cf2a 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,5 +1,10 @@
2017-09-10 Sergio Durigan Junior <sergiodj@redhat.com>
+ * regcache.c (get_thread_regcache): Guard calls to "memset"
+ with "!VEC_empty".
+
+2017-09-10 Sergio Durigan Junior <sergiodj@redhat.com>
+
* linux-low.c (handle_extended_wait): Use
"allocate_target_description" instead of "XNEW".
* linux-x86-low.c (initialize_low_arch): Likewise.
diff --git a/gdb/gdbserver/regcache.c b/gdb/gdbserver/regcache.c
index 43e78a5cf7c..d1a534cc52a 100644
--- a/gdb/gdbserver/regcache.c
+++ b/gdb/gdbserver/regcache.c
@@ -53,8 +53,9 @@ get_thread_regcache (struct thread_info *thread, int fetch)
current_thread = thread;
/* Invalidate all registers, to prevent stale left-overs. */
- memset (regcache->register_status, REG_UNAVAILABLE,
- VEC_length (tdesc_reg_p, regcache->tdesc->reg_defs));
+ if (!VEC_empty (tdesc_reg_p, regcache->tdesc->reg_defs))
+ memset (regcache->register_status, REG_UNAVAILABLE,
+ VEC_length (tdesc_reg_p, regcache->tdesc->reg_defs));
fetch_inferior_registers (regcache, -1);
current_thread = saved_thread;
regcache->registers_valid = 1;
@@ -146,8 +147,9 @@ init_register_cache (struct regcache *regcache,
regcache->registers_owned = 1;
regcache->register_status
= (unsigned char *) xmalloc (VEC_length (tdesc_reg_p, tdesc->reg_defs));
- memset ((void *) regcache->register_status, REG_UNAVAILABLE,
- VEC_length (tdesc_reg_p, tdesc->reg_defs));
+ if (!VEC_empty (tdesc_reg_p, tdesc->reg_defs))
+ memset ((void *) regcache->register_status, REG_UNAVAILABLE,
+ VEC_length (tdesc_reg_p, tdesc->reg_defs));
#else
gdb_assert_not_reached ("can't allocate memory from the heap");
#endif