[PATCH] Fix GDB crash with upstream GCC due to memcpy(NULL, ...)
Andreas Arnez
arnez@linux.vnet.ibm.com
Wed Nov 13 16:28:00 GMT 2013
Similar to qsort(), the glibc version of memcpy() also declares its
arguments with __attribute__(__nonnull__(...)). If NULL is passed
anyway, upstream GCC's new pass '-fisolate-erroneous-paths' typically
causes a trap in such cases. I've encountered this with GDB in
chain_candidate() when trying to execute the break.exp test case.
gdb/
2013-11-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
* dwarf2loc.c (chain_candidate): Prevent invoking memcpy with
NULL.
---
gdb/dwarf2loc.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
index 8242dca..d85370f 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -749,8 +749,9 @@ chain_candidate (struct gdbarch *gdbarch, struct call_site_chain **resultp,
* (length - 1));
result->length = length;
result->callers = result->callees = length;
- memcpy (result->call_site, VEC_address (call_sitep, chain),
- sizeof (*result->call_site) * length);
+ if (!VEC_empty (call_sitep, chain))
+ memcpy (result->call_site, VEC_address (call_sitep, chain),
+ sizeof (*result->call_site) * length);
*resultp = result;
if (entry_values_debug)
--
1.7.11.4
More information about the Gdb-patches
mailing list