This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Fix invalid implicit conversions from void *


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=bfb0d950a58edc4eb1f102174af38a364f4f43f7

commit bfb0d950a58edc4eb1f102174af38a364f4f43f7
Author: Andreas Schwab <schwab@suse.de>
Date:   Thu May 19 14:43:56 2016 +0200

    Fix invalid implicit conversions from void *
    
    	* ia64-libunwind-tdep.c (libunwind_descr): Add cast from void *.
    	(libunwind_frame_set_descr): Likewise.
    	(libunwind_frame_cache): Likewise.
    	(libunwind_frame_dealloc_cache): Likewise.
    	(libunwind_frame_sniffer): Likewise.
    	(libunwind_search_unwind_table): Likewise.
    	(libunwind_sigtramp_frame_sniffer): Likewise.
    	(libunwind_get_reg_special): Likewise.
    	(libunwind_load): Likewise.
    	* ia64-linux-nat.c (ia64_linux_fetch_register): Likewise.
    	(ia64_linux_store_register): Likewise.
    	(ia64_linux_xfer_partial): Likewise.
    	* ia64-tdep.c (ia64_access_reg): Likewise.
    	(ia64_access_fpreg): Likewise.
    	(ia64_access_rse_reg): Likewise.
    	(ia64_access_rse_fpreg): Likewise.

Diff:
---
 gdb/ChangeLog             | 19 ++++++++++
 gdb/ia64-libunwind-tdep.c | 97 ++++++++++++++++++++++++++++++-----------------
 gdb/ia64-linux-nat.c      |  6 +--
 gdb/ia64-tdep.c           |  8 ++--
 4 files changed, 88 insertions(+), 42 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 92024b6..0968b85 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,22 @@
+2016-05-19  Andreas Schwab  <schwab@suse.de>
+
+	* ia64-libunwind-tdep.c (libunwind_descr): Add cast from void *.
+	(libunwind_frame_set_descr): Likewise.
+	(libunwind_frame_cache): Likewise.
+	(libunwind_frame_dealloc_cache): Likewise.
+	(libunwind_frame_sniffer): Likewise.
+	(libunwind_search_unwind_table): Likewise.
+	(libunwind_sigtramp_frame_sniffer): Likewise.
+	(libunwind_get_reg_special): Likewise.
+	(libunwind_load): Likewise.
+	* ia64-linux-nat.c (ia64_linux_fetch_register): Likewise.
+	(ia64_linux_store_register): Likewise.
+	(ia64_linux_xfer_partial): Likewise.
+	* ia64-tdep.c (ia64_access_reg): Likewise.
+	(ia64_access_fpreg): Likewise.
+	(ia64_access_rse_reg): Likewise.
+	(ia64_access_rse_fpreg): Likewise.
+
 2016-05-18  Tom Tromey  <tom@tromey.com>
 
 	* rust-lang.c (rust_subscript): Initialize "high".
diff --git a/gdb/ia64-libunwind-tdep.c b/gdb/ia64-libunwind-tdep.c
index fa89a0e..30a9283 100644
--- a/gdb/ia64-libunwind-tdep.c
+++ b/gdb/ia64-libunwind-tdep.c
@@ -59,20 +59,33 @@ static int libunwind_initialized;
 static struct gdbarch_data *libunwind_descr_handle;
 
 /* Required function pointers from libunwind.  */
-static int (*unw_get_reg_p) (unw_cursor_t *, unw_regnum_t, unw_word_t *);
-static int (*unw_get_fpreg_p) (unw_cursor_t *, unw_regnum_t, unw_fpreg_t *);
-static int (*unw_get_saveloc_p) (unw_cursor_t *, unw_regnum_t,
-				 unw_save_loc_t *);
-static int (*unw_is_signal_frame_p) (unw_cursor_t *);
-static int (*unw_step_p) (unw_cursor_t *);
-static int (*unw_init_remote_p) (unw_cursor_t *, unw_addr_space_t, void *);
-static unw_addr_space_t (*unw_create_addr_space_p) (unw_accessors_t *, int);
-static void (*unw_destroy_addr_space_p) (unw_addr_space_t);
-static int (*unw_search_unwind_table_p) (unw_addr_space_t, unw_word_t,
-					 unw_dyn_info_t *,
-					 unw_proc_info_t *, int, void *);
-static unw_word_t (*unw_find_dyn_list_p) (unw_addr_space_t, unw_dyn_info_t *,
-					  void *);
+typedef int (unw_get_reg_p_ftype) (unw_cursor_t *, unw_regnum_t, unw_word_t *);
+static unw_get_reg_p_ftype *unw_get_reg_p;
+typedef int (unw_get_fpreg_p_ftype) (unw_cursor_t *, unw_regnum_t,
+				     unw_fpreg_t *);
+static unw_get_fpreg_p_ftype *unw_get_fpreg_p;
+typedef int (unw_get_saveloc_p_ftype) (unw_cursor_t *, unw_regnum_t,
+				       unw_save_loc_t *);
+static unw_get_saveloc_p_ftype *unw_get_saveloc_p;
+typedef int (unw_is_signal_frame_p_ftype) (unw_cursor_t *);
+static unw_is_signal_frame_p_ftype *unw_is_signal_frame_p;
+typedef int (unw_step_p_ftype) (unw_cursor_t *);
+static unw_step_p_ftype *unw_step_p;
+typedef int (unw_init_remote_p_ftype) (unw_cursor_t *, unw_addr_space_t,
+				       void *);
+static unw_init_remote_p_ftype *unw_init_remote_p;
+typedef unw_addr_space_t (unw_create_addr_space_p_ftype) (unw_accessors_t *,
+							  int);
+static unw_create_addr_space_p_ftype *unw_create_addr_space_p;
+typedef void (unw_destroy_addr_space_p_ftype) (unw_addr_space_t);
+static unw_destroy_addr_space_p_ftype *unw_destroy_addr_space_p;
+typedef int (unw_search_unwind_table_p_ftype) (unw_addr_space_t, unw_word_t,
+					       unw_dyn_info_t *,
+					       unw_proc_info_t *, int, void *);
+static unw_search_unwind_table_p_ftype *unw_search_unwind_table_p;
+typedef unw_word_t (unw_find_dyn_list_p_ftype) (unw_addr_space_t,
+						unw_dyn_info_t *, void *);
+static unw_find_dyn_list_p_ftype *unw_find_dyn_list_p;
 
 
 struct libunwind_frame_cache
@@ -114,7 +127,8 @@ static char *find_dyn_list_name = STRINGIFY(UNW_OBJ(find_dyn_list));
 static struct libunwind_descr *
 libunwind_descr (struct gdbarch *gdbarch)
 {
-  return gdbarch_data (gdbarch, libunwind_descr_handle);
+  return ((struct libunwind_descr *)
+	  gdbarch_data (gdbarch, libunwind_descr_handle));
 }
 
 static void *
@@ -134,12 +148,13 @@ libunwind_frame_set_descr (struct gdbarch *gdbarch,
 
   gdb_assert (gdbarch != NULL);
 
-  arch_descr = gdbarch_data (gdbarch, libunwind_descr_handle);
+  arch_descr = ((struct libunwind_descr *)
+		gdbarch_data (gdbarch, libunwind_descr_handle));
 
   if (arch_descr == NULL)
     {
       /* First time here.  Must initialize data area.  */
-      arch_descr = libunwind_descr_init (gdbarch);
+      arch_descr = (struct libunwind_descr *) libunwind_descr_init (gdbarch);
       deprecated_set_gdbarch_data (gdbarch,
 				   libunwind_descr_handle, arch_descr);
     }
@@ -165,7 +180,7 @@ libunwind_frame_cache (struct frame_info *this_frame, void **this_cache)
   int i, ret;
 
   if (*this_cache)
-    return *this_cache;
+    return (struct libunwind_frame_cache *) *this_cache;
 
   /* Allocate a new cache.  */
   cache = FRAME_OBSTACK_ZALLOC (struct libunwind_frame_cache);
@@ -197,7 +212,7 @@ libunwind_frame_cache (struct frame_info *this_frame, void **this_cache)
      use this cursor to find previous registers via the unw_get_reg
      interface which will invoke libunwind's special logic.  */
   descr = libunwind_descr (gdbarch);
-  acc = descr->accessors;
+  acc = (unw_accessors_t *) descr->accessors;
   as =  unw_create_addr_space_p (acc,
 				 gdbarch_byte_order (gdbarch)
 				 == BFD_ENDIAN_BIG
@@ -230,7 +245,8 @@ libunwind_frame_cache (struct frame_info *this_frame, void **this_cache)
 void
 libunwind_frame_dealloc_cache (struct frame_info *self, void *this_cache)
 {
-  struct libunwind_frame_cache *cache = this_cache;
+  struct libunwind_frame_cache *cache
+    = (struct libunwind_frame_cache *) this_cache;
 
   if (cache->as)
     unw_destroy_addr_space_p (cache->as);
@@ -262,7 +278,7 @@ libunwind_frame_sniffer (const struct frame_unwind *self,
      it has found sufficient libunwind unwinding information to do so.  */
 
   descr = libunwind_descr (gdbarch);
-  acc = descr->accessors;
+  acc = (unw_accessors_t *) descr->accessors;
   as =  unw_create_addr_space_p (acc,
 				 gdbarch_byte_order (gdbarch)
 				 == BFD_ENDIAN_BIG
@@ -380,8 +396,10 @@ int
 libunwind_search_unwind_table (void *as, long ip, void *di,
 			       void *pi, int need_unwind_info, void *args)
 {
-  return unw_search_unwind_table_p (*(unw_addr_space_t *)as, (unw_word_t )ip, 
-				    di, pi, need_unwind_info, args);
+  return unw_search_unwind_table_p (*(unw_addr_space_t *) as, (unw_word_t) ip,
+				    (unw_dyn_info_t *) di,
+				    (unw_proc_info_t *) pi, need_unwind_info,
+				    args);
 }
 
 /* Verify if we are in a sigtramp frame and we can use libunwind to unwind.  */
@@ -405,7 +423,7 @@ libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self,
      so.  */
 
   descr = libunwind_descr (gdbarch);
-  acc = descr->accessors;
+  acc = (unw_accessors_t *) descr->accessors;
   as =  unw_create_addr_space_p (acc,
 				 gdbarch_byte_order (gdbarch)
 				 == BFD_ENDIAN_BIG
@@ -450,7 +468,7 @@ libunwind_get_reg_special (struct gdbarch *gdbarch, struct regcache *regcache,
 
 
   descr = libunwind_descr (gdbarch);
-  acc = descr->special_accessors;
+  acc = (unw_accessors_t *) descr->special_accessors;
   as =  unw_create_addr_space_p (acc,
 				 gdbarch_byte_order (gdbarch)
 				 == BFD_ENDIAN_BIG
@@ -517,43 +535,52 @@ libunwind_load (void)
 
   /* Initialize pointers to the dynamic library functions we will use.  */
 
-  unw_get_reg_p = dlsym (handle, get_reg_name);
+  unw_get_reg_p = (unw_get_reg_p_ftype *) dlsym (handle, get_reg_name);
   if (unw_get_reg_p == NULL)
     return 0;
 
-  unw_get_fpreg_p = dlsym (handle, get_fpreg_name);
+  unw_get_fpreg_p = (unw_get_fpreg_p_ftype *) dlsym (handle, get_fpreg_name);
   if (unw_get_fpreg_p == NULL)
     return 0;
 
-  unw_get_saveloc_p = dlsym (handle, get_saveloc_name);
+  unw_get_saveloc_p
+    = (unw_get_saveloc_p_ftype *) dlsym (handle, get_saveloc_name);
   if (unw_get_saveloc_p == NULL)
     return 0;
 
-  unw_is_signal_frame_p = dlsym (handle, is_signal_frame_name);
+  unw_is_signal_frame_p
+    = (unw_is_signal_frame_p_ftype *) dlsym (handle, is_signal_frame_name);
   if (unw_is_signal_frame_p == NULL)
     return 0;
 
-  unw_step_p = dlsym (handle, step_name);
+  unw_step_p = (unw_step_p_ftype *) dlsym (handle, step_name);
   if (unw_step_p == NULL)
     return 0;
 
-  unw_init_remote_p = dlsym (handle, init_remote_name);
+  unw_init_remote_p
+    = (unw_init_remote_p_ftype *) dlsym (handle, init_remote_name);
   if (unw_init_remote_p == NULL)
     return 0;
 
-  unw_create_addr_space_p = dlsym (handle, create_addr_space_name);
+  unw_create_addr_space_p
+    = (unw_create_addr_space_p_ftype *) dlsym (handle, create_addr_space_name);
   if (unw_create_addr_space_p == NULL)
     return 0;
 
-  unw_destroy_addr_space_p = dlsym (handle, destroy_addr_space_name);
+  unw_destroy_addr_space_p
+    = (unw_destroy_addr_space_p_ftype *) dlsym (handle,
+						destroy_addr_space_name);
   if (unw_destroy_addr_space_p == NULL)
     return 0;
 
-  unw_search_unwind_table_p = dlsym (handle, search_unwind_table_name);
+  unw_search_unwind_table_p
+    = (unw_search_unwind_table_p_ftype *) dlsym (handle,
+						 search_unwind_table_name);
   if (unw_search_unwind_table_p == NULL)
     return 0;
 
-  unw_find_dyn_list_p = dlsym (handle, find_dyn_list_name);
+  unw_find_dyn_list_p
+    = (unw_find_dyn_list_p_ftype *) dlsym (handle, find_dyn_list_name);
   if (unw_find_dyn_list_p == NULL)
     return 0;
    
diff --git a/gdb/ia64-linux-nat.c b/gdb/ia64-linux-nat.c
index cd52d2e..a401fdd 100644
--- a/gdb/ia64-linux-nat.c
+++ b/gdb/ia64-linux-nat.c
@@ -746,7 +746,7 @@ ia64_linux_fetch_register (struct regcache *regcache, int regnum)
   size = register_size (gdbarch, regnum);
 
   gdb_assert ((size % sizeof (PTRACE_TYPE_RET)) == 0);
-  buf = alloca (size);
+  buf = (PTRACE_TYPE_RET *) alloca (size);
 
   /* Read the register contents from the inferior a chunk at a time.  */
   for (i = 0; i < size / sizeof (PTRACE_TYPE_RET); i++)
@@ -804,7 +804,7 @@ ia64_linux_store_register (const struct regcache *regcache, int regnum)
   size = register_size (gdbarch, regnum);
 
   gdb_assert ((size % sizeof (PTRACE_TYPE_RET)) == 0);
-  buf = alloca (size);
+  buf = (PTRACE_TYPE_RET *) alloca (size);
 
   /* Write the register contents into the inferior a chunk at a time.  */
   regcache_raw_collect (regcache, regnum, buf);
@@ -865,7 +865,7 @@ ia64_linux_xfer_partial (struct target_ops *ops,
       if (offset >= gate_table_size)
 	return TARGET_XFER_EOF;
 
-      tmp_buf = alloca (gate_table_size);
+      tmp_buf = (gdb_byte *) alloca (gate_table_size);
       res = syscall (__NR_getunwind, tmp_buf, gate_table_size);
       if (res < 0)
 	return TARGET_XFER_E_IO;
diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c
index 681c560..5a14409 100644
--- a/gdb/ia64-tdep.c
+++ b/gdb/ia64-tdep.c
@@ -2485,7 +2485,7 @@ ia64_access_reg (unw_addr_space_t as, unw_regnum_t uw_regnum, unw_word_t *val,
 {
   int regnum = ia64_uw2gdb_regnum (uw_regnum);
   unw_word_t bsp, sof, sol, cfm, psr, ip;
-  struct frame_info *this_frame = arg;
+  struct frame_info *this_frame = (struct frame_info *) arg;
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   long new_sof, old_sof;
@@ -2548,7 +2548,7 @@ ia64_access_fpreg (unw_addr_space_t as, unw_regnum_t uw_regnum,
 		   unw_fpreg_t *val, int write, void *arg)
 {
   int regnum = ia64_uw2gdb_regnum (uw_regnum);
-  struct frame_info *this_frame = arg;
+  struct frame_info *this_frame = (struct frame_info *) arg;
   
   /* We never call any libunwind routines that need to write registers.  */
   gdb_assert (!write);
@@ -2565,7 +2565,7 @@ ia64_access_rse_reg (unw_addr_space_t as, unw_regnum_t uw_regnum,
 {
   int regnum = ia64_uw2gdb_regnum (uw_regnum);
   unw_word_t bsp, sof, sol, cfm, psr, ip;
-  struct regcache *regcache = arg;
+  struct regcache *regcache = (struct regcache *) arg;
   struct gdbarch *gdbarch = get_regcache_arch (regcache);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   long new_sof, old_sof;
@@ -2629,7 +2629,7 @@ ia64_access_rse_fpreg (unw_addr_space_t as, unw_regnum_t uw_regnum,
 		       unw_fpreg_t *val, int write, void *arg)
 {
   int regnum = ia64_uw2gdb_regnum (uw_regnum);
-  struct regcache *regcache = arg;
+  struct regcache *regcache = (struct regcache *) arg;
   
   /* We never call any libunwind routines that need to write registers.  */
   gdb_assert (!write);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]