/* Frame unwinder for ia64 frames using the libunwind library.
- Copyright (C) 2003-2017 Free Software Foundation, Inc.
+ Copyright (C) 2003-2018 Free Software Foundation, Inc.
Written by Jeff Johnston, contributed by Red Hat Inc.
#include "ia64-libunwind-tdep.h"
#include "complaints.h"
+#include "common/preprocessor.h"
/* IA-64 is the only target that currently uses ia64-libunwind-tdep.
Note how UNW_TARGET, UNW_OBJ, etc. are compile time constants below.
/* We need to qualify the function names with a platform-specific prefix
to match the names used by the libunwind library. The UNW_OBJ macro is
provided by the libunwind.h header file. */
-#define STRINGIFY2(name) #name
-#define STRINGIFY(name) STRINGIFY2(name)
#ifndef LIBUNWIND_SO
/* Use the stable ABI major version number. `libunwind-ia64.so' is a link time
#define LIBUNWIND_SO_7 "libunwind-" STRINGIFY(UNW_TARGET) ".so.7"
#endif
-static char *get_reg_name = STRINGIFY(UNW_OBJ(get_reg));
-static char *get_fpreg_name = STRINGIFY(UNW_OBJ(get_fpreg));
-static char *get_saveloc_name = STRINGIFY(UNW_OBJ(get_save_loc));
-static char *is_signal_frame_name = STRINGIFY(UNW_OBJ(is_signal_frame));
-static char *step_name = STRINGIFY(UNW_OBJ(step));
-static char *init_remote_name = STRINGIFY(UNW_OBJ(init_remote));
-static char *create_addr_space_name = STRINGIFY(UNW_OBJ(create_addr_space));
-static char *destroy_addr_space_name = STRINGIFY(UNW_OBJ(destroy_addr_space));
-static char *search_unwind_table_name
+static const char *get_reg_name = STRINGIFY(UNW_OBJ(get_reg));
+static const char *get_fpreg_name = STRINGIFY(UNW_OBJ(get_fpreg));
+static const char *get_saveloc_name = STRINGIFY(UNW_OBJ(get_save_loc));
+static const char *is_signal_frame_name = STRINGIFY(UNW_OBJ(is_signal_frame));
+static const char *step_name = STRINGIFY(UNW_OBJ(step));
+static const char *init_remote_name = STRINGIFY(UNW_OBJ(init_remote));
+static const char *create_addr_space_name
+ = STRINGIFY(UNW_OBJ(create_addr_space));
+static const char *destroy_addr_space_name
+ = STRINGIFY(UNW_OBJ(destroy_addr_space));
+static const char *search_unwind_table_name
= STRINGIFY(UNW_OBJ(search_unwind_table));
-static char *find_dyn_list_name = STRINGIFY(UNW_OBJ(find_dyn_list));
+static const char *find_dyn_list_name = STRINGIFY(UNW_OBJ(find_dyn_list));
static struct libunwind_descr *
libunwind_descr (struct gdbarch *gdbarch)
struct libunwind_frame_cache *cache;
struct libunwind_descr *descr;
struct gdbarch *gdbarch = get_frame_arch (this_frame);
- int i, ret;
+ int ret;
if (*this_cache)
return (struct libunwind_frame_cache *) *this_cache;
unw_addr_space_t as;
struct libunwind_descr *descr;
struct gdbarch *gdbarch = get_frame_arch (this_frame);
- int i, ret;
+ int ret;
/* To test for libunwind unwind support, initialize a cursor to
the current frame and try to back up. We use this same method
{
struct libunwind_frame_cache *cache =
libunwind_frame_cache (this_frame, this_cache);
- struct gdbarch *gdbarch = get_frame_arch (this_frame);
- void *ptr;
- unw_cursor_t *c;
unw_save_loc_t sl;
- int i, ret;
+ int ret;
unw_word_t intval;
unw_fpreg_t fpval;
unw_regnum_t uw_regnum;
unw_addr_space_t as;
struct libunwind_descr *descr;
struct gdbarch *gdbarch = get_frame_arch (this_frame);
- int i, ret;
+ int ret;
/* To test for libunwind unwind support, initialize a cursor to the
current frame and try to back up. We use this same method when
are usually located at BOF, this is not always true and only the libunwind
info can decipher where they actually are. */
int
-libunwind_get_reg_special (struct gdbarch *gdbarch, struct regcache *regcache,
+libunwind_get_reg_special (struct gdbarch *gdbarch, readable_regcache *regcache,
int regnum, void *buf)
{
unw_cursor_t cursor;
return libunwind_initialized;
}
-/* Provide a prototype to silence -Wmissing-prototypes. */
-void _initialize_libunwind_frame (void);
-
void
_initialize_libunwind_frame (void)
{