aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAjit Kumar Agarwal <ajitkum@xilinx.com>2014-10-10 18:07:06 +0100
committerPedro Alves <palves@redhat.com>2014-10-10 18:07:06 +0100
commitcc3afae25a4e37ed7a864a8f4eea1dc11b20d5fb (patch)
tree0a3a2fe7074877b0a957b587ad973e926adfe653
parentcdfa0b0ac16739350360b29b05223655d3b9b740 (diff)
downloadgdb-cc3afae25a4e37ed7a864a8f4eea1dc11b20d5fb.zip
gdb-cc3afae25a4e37ed7a864a8f4eea1dc11b20d5fb.tar.gz
gdb-cc3afae25a4e37ed7a864a8f4eea1dc11b20d5fb.tar.bz2
Microblaze: Reject invalid target descriptions
We currently validate the target description, but then forget to reject it if found invalid. Tested that incorrect descriptions are rejected and GDB warns about them. Tested the Microblaze Design with and without stack-protect registers. The gdb command "info registers" displayed the register correctly. If a stack protect design is not selected, only core registers are displayed. When the stack-protect registers are selected in the design, the core registers along with stack-protect registers are displayed. gdb/ 2014-10-10 Ajit Agarwal <ajitkum@xilinx.com> * microblaze-tdep.c (microblaze_gdbarch_init): If the description isn't valid, release the tdesc arch data and return NULL.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/microblaze-tdep.c8
2 files changed, 12 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f64bcc9..047413c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2014-10-10 Ajit Agarwal <ajitkum@xilinx.com>
+
+ * microblaze-tdep.c (microblaze_gdbarch_init): If the description
+ isn't valid, release the tdesc arch data and return NULL.
+
2014-10-10 Pedro Alves <palves@redhat.com>
* linux-tdep.c: Include observer.h.
diff --git a/gdb/microblaze-tdep.c b/gdb/microblaze-tdep.c
index 6a9f11f..f257b96 100644
--- a/gdb/microblaze-tdep.c
+++ b/gdb/microblaze-tdep.c
@@ -722,7 +722,13 @@ microblaze_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
MICROBLAZE_SHR_REGNUM,
"rshr");
}
- }
+
+ if (!valid_p)
+ {
+ tdesc_data_cleanup (tdesc_data);
+ return NULL;
+ }
+ }
/* Allocate space for the new architecture. */
tdep = XNEW (struct gdbarch_tdep);