aboutsummaryrefslogtreecommitdiff
path: root/gdb/ia64-tdep.c
diff options
context:
space:
mode:
authorSimon Marchi <simark@simark.ca>2018-07-07 11:10:49 -0400
committerSimon Marchi <simon.marchi@ericsson.com>2018-07-16 13:59:39 -0400
commit5d691c8829d0e5c4c4b9cfb147c8a873ce18085b (patch)
tree4730619cc444d424f8fe985e62047a8b69e8c48a /gdb/ia64-tdep.c
parentedb0470b99a9f399ccb5d666173c4315f6cb02c0 (diff)
downloadfsf-binutils-gdb-5d691c8829d0e5c4c4b9cfb147c8a873ce18085b.zip
fsf-binutils-gdb-5d691c8829d0e5c4c4b9cfb147c8a873ce18085b.tar.gz
fsf-binutils-gdb-5d691c8829d0e5c4c4b9cfb147c8a873ce18085b.tar.bz2
Fix compilation error in ia64-tdep.c with libunwind-ia64
Commit 9018be22e022 ("Make target_read_alloc & al return vectors") failed to update the code in ia64-tdep.c, for HAVE_LIBUNWIND_IA64_H. This patch fixes that. gdb/ChangeLog: * ia64-tdep.c (ktab_buf): New global. (getunwind_table): Return a gdb::optional<gdb::byte_vector>. (get_kernel_table): Adjust.
Diffstat (limited to 'gdb/ia64-tdep.c')
-rw-r--r--gdb/ia64-tdep.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c
index 0df62e2..2fab60c 100644
--- a/gdb/ia64-tdep.c
+++ b/gdb/ia64-tdep.c
@@ -69,6 +69,7 @@ struct ia64_table_entry
};
static struct ia64_table_entry *ktab = NULL;
+static gdb::optional<gdb::byte_vector> ktab_buf;
#endif
@@ -2647,11 +2648,9 @@ ia64_access_mem (unw_addr_space_t as,
}
/* Call low-level function to access the kernel unwind table. */
-static LONGEST
-getunwind_table (gdb_byte **buf_p)
+static gdb::optional<gdb::byte_vector>
+getunwind_table ()
{
- LONGEST x;
-
/* FIXME drow/2005-09-10: This code used to call
ia64_linux_xfer_unwind_table directly to fetch the unwind table
for the currently running ia64-linux kernel. That data should
@@ -2660,10 +2659,8 @@ getunwind_table (gdb_byte **buf_p)
we should find a way to override the corefile layer's
xfer_partial method. */
- x = target_read_alloc (current_top_target (), TARGET_OBJECT_UNWIND_TABLE,
- NULL, buf_p);
-
- return x;
+ return target_read_alloc (current_top_target (), TARGET_OBJECT_UNWIND_TABLE,
+ NULL);
}
/* Get the kernel unwind table. */
@@ -2674,15 +2671,12 @@ get_kernel_table (unw_word_t ip, unw_dyn_info_t *di)
if (!ktab)
{
- gdb_byte *ktab_buf;
- LONGEST size;
-
- size = getunwind_table (&ktab_buf);
- if (size <= 0)
+ ktab_buf = getunwind_table ();
+ if (!ktab_buf)
return -UNW_ENOINFO;
- ktab = (struct ia64_table_entry *) ktab_buf;
- ktab_size = size;
+ ktab = (struct ia64_table_entry *) ktab_buf->data ();
+ ktab_size = ktab_buf->size ();
for (etab = ktab; etab->start_offset; ++etab)
etab->info_offset += KERNEL_START;