summaryrefslogtreecommitdiff
path: root/gdb/gdbarch.c
diff options
context:
space:
mode:
authorPeter Bergner <bergner@vnet.ibm.com>2017-03-07 09:49:10 -0600
committerPeter Bergner <bergner@vnet.ibm.com>2017-03-07 09:49:10 -0600
commitf7bb4e3a0d3738e8cce3dcded6ef12c9949cb85f (patch)
tree064700505f6c3b6b01246aa0334996b826863bb4 /gdb/gdbarch.c
parente45ced6c5e06b0092ac9f5497aa580cfad0c953c (diff)
downloadbinutils-gdb-f7bb4e3a0d3738e8cce3dcded6ef12c9949cb85f.tar.gz
GDB: Fix some null pointer dereferences due to disassembler-options patch.
gdb/ * gdbarch.sh (pstring_ptr): New static function. (gdbarch_disassembler_options): Use it. (gdbarch_verify_disassembler_options): Print valid_disassembler_options, not valid_disassembler_option->name. * gdbarch.c: Regenerate.
Diffstat (limited to 'gdb/gdbarch.c')
-rw-r--r--gdb/gdbarch.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c
index f52cf5d698b..87eafb2ab65 100644
--- a/gdb/gdbarch.c
+++ b/gdb/gdbarch.c
@@ -84,6 +84,14 @@ pstring (const char *string)
return string;
}
+static char *
+pstring_ptr (char **string)
+{
+ if (string == NULL || *string == NULL)
+ return "(null)";
+ return *string;
+}
+
/* Helper function to print a list of strings, represented as "const
char *const *". The list is printed comma-separated. */
@@ -880,7 +888,7 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
core_addr_to_string_nz (gdbarch->deprecated_function_start_offset));
fprintf_unfiltered (file,
"gdbarch_dump: disassembler_options = %s\n",
- pstring (*gdbarch->disassembler_options));
+ pstring_ptr (gdbarch->disassembler_options));
fprintf_unfiltered (file,
"gdbarch_dump: gdbarch_displaced_step_copy_insn_p() = %d\n",
gdbarch_displaced_step_copy_insn_p (gdbarch));
@@ -1429,7 +1437,7 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
host_address_to_string (gdbarch->unwind_sp));
fprintf_unfiltered (file,
"gdbarch_dump: valid_disassembler_options = %s\n",
- host_address_to_string (gdbarch->valid_disassembler_options->name));
+ host_address_to_string (gdbarch->valid_disassembler_options));
fprintf_unfiltered (file,
"gdbarch_dump: value_from_register = <%s>\n",
host_address_to_string (gdbarch->value_from_register));