This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [patch] ada: Fix rashes on gdbarch garbage
- From: Joel Brobecker <brobecker at adacore dot com>
- To: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Mon, 21 Mar 2011 07:47:16 -0700
- Subject: Re: [patch] ada: Fix rashes on gdbarch garbage
- References: <20110320203350.GA30841@host1.jankratochvil.net>
Hi Jan,
Thanks for the investigative work!
> gdb/
> 2011-03-20 Jan Kratochvil <jan.kratochvil@redhat.com>
>
> * ada-lang.c (replace_operator_with_call): Copy also GDBARCH.
This change looks definitely correct to me, so I've checked it in.
It's strange that I am not able to reproduce it, even after I changed
the xmalloc to xzalloc...
To prevent any further fields from being undefined, I have also
checked the following patch in.
gdb/ChangeLog:
* ada-lang.c (replace_operator_with_call): Use xzalloc instead
of xmalloc.
Tested on x86_64-linux.
--
Joel
commit 6cb8c1c196651db26b01653b688547a203089162
Author: Joel Brobecker <brobecker@adacore.com>
Date: Mon Mar 21 07:36:17 2011 -0700
use xzalloc in ada-lang.c:replace_operator_with_call
This is to make sure that we cannot have a field with an undefined
value (currently, we are not setting the gdbarch).
gdb/ChangeLog:
* ada-lang.c (replace_operator_with_call): Use xzalloc instead
of xmalloc.
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 64d8391..d79197e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2012-03-21 Joel Brobecker <brobecker@adacore.com>
+
+ * ada-lang.c (replace_operator_with_call): Use xzalloc instead
+ of xmalloc.
+
2012-03-18 Pedro Alves <pedro@codesourcery.com>
* frame.c (frame_unwind_register): Throw an error if unwinding the
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 3746edc..93711cf 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -3659,7 +3659,7 @@ replace_operator_with_call (struct expression **expp, int pc, int nargs,
/* A new expression, with 6 more elements (3 for funcall, 4 for function
symbol, -oplen for operator being replaced). */
struct expression *newexp = (struct expression *)
- xmalloc (sizeof (struct expression)
+ xzalloc (sizeof (struct expression)
+ EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
struct expression *exp = *expp;