* [PATCH] Fix invalid implicit conversions from void *
@ 2016-05-19 12:54 Andreas Schwab
2016-05-19 13:07 ` Pedro Alves
0 siblings, 1 reply; 3+ messages in thread
From: Andreas Schwab @ 2016-05-19 12:54 UTC (permalink / raw)
To: gdb-patches
Tested on ia64-suse-linux.
Andreas.
* 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.
---
gdb/ia64-libunwind-tdep.c | 60 ++++++++++++++++++++++++++++++-----------------
gdb/ia64-linux-nat.c | 6 ++---
gdb/ia64-tdep.c | 8 +++----
3 files changed, 46 insertions(+), 28 deletions(-)
diff --git a/gdb/ia64-libunwind-tdep.c b/gdb/ia64-libunwind-tdep.c
index fa89a0e..8ed00d4 100644
--- a/gdb/ia64-libunwind-tdep.c
+++ b/gdb/ia64-libunwind-tdep.c
@@ -114,7 +114,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 +135,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 +167,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 +199,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 +232,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 +265,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 +383,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 +410,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 +455,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 +522,56 @@ 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 = ((int (*) (unw_cursor_t *, unw_regnum_t, unw_word_t *))
+ 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 = ((int (*) (unw_cursor_t *, unw_regnum_t, unw_fpreg_t *))
+ 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 = ((int (*) (unw_cursor_t *, unw_regnum_t,
+ unw_save_loc_t *))
+ 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 = ((int (*) (unw_cursor_t *))
+ 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 = (int (*) (unw_cursor_t *)) dlsym (handle, step_name);
if (unw_step_p == NULL)
return 0;
- unw_init_remote_p = dlsym (handle, init_remote_name);
+ unw_init_remote_p = ((int (*) (unw_cursor_t *, unw_addr_space_t, void *))
+ 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_addr_space_t (*) (unw_accessors_t *, int))
+ 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 = ((void (*) (unw_addr_space_t))
+ 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 = ((int (*) (unw_addr_space_t, unw_word_t,
+ unw_dyn_info_t *, unw_proc_info_t *,
+ int, void *))
+ 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_word_t (*) (unw_addr_space_t, unw_dyn_info_t *,
+ void *))
+ 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);
--
2.8.2
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Fix invalid implicit conversions from void *
2016-05-19 12:54 [PATCH] Fix invalid implicit conversions from void * Andreas Schwab
@ 2016-05-19 13:07 ` Pedro Alves
2016-05-19 13:32 ` Andreas Schwab
0 siblings, 1 reply; 3+ messages in thread
From: Pedro Alves @ 2016-05-19 13:07 UTC (permalink / raw)
To: Andreas Schwab, gdb-patches
On 05/19/2016 01:54 PM, Andreas Schwab wrote:
> Tested on ia64-suse-linux.
Thanks.
>
> * 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.
This is OK. Though ...
> /* Initialize pointers to the dynamic library functions we will use. */
>
> - unw_get_reg_p = dlsym (handle, get_reg_name);
> + unw_get_reg_p = ((int (*) (unw_cursor_t *, unw_regnum_t, unw_word_t *))
> + dlsym (handle, get_reg_name));
... I think would be nicer to use typedefs for these. Something like,
at the top:
-static int (*unw_get_reg_p) (unw_cursor_t *, unw_regnum_t, unw_word_t *);
+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;
etc.
and then:
unw_get_reg_p = (unw_get_reg_p_ftype *) dlsym (handle, get_reg_name);
It's what we've done in other similar cases, like linux-thread-db.c,
for example.
Thanks,
Pedro Alves
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Fix invalid implicit conversions from void *
2016-05-19 13:07 ` Pedro Alves
@ 2016-05-19 13:32 ` Andreas Schwab
0 siblings, 0 replies; 3+ messages in thread
From: Andreas Schwab @ 2016-05-19 13:32 UTC (permalink / raw)
To: Pedro Alves; +Cc: gdb-patches
Pedro Alves <palves@redhat.com> writes:
> On 05/19/2016 01:54 PM, Andreas Schwab wrote:
>> Tested on ia64-suse-linux.
>
> Thanks.
>
>>
>> * 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.
>
> This is OK. Though ...
>
>> /* Initialize pointers to the dynamic library functions we will use. */
>>
>> - unw_get_reg_p = dlsym (handle, get_reg_name);
>> + unw_get_reg_p = ((int (*) (unw_cursor_t *, unw_regnum_t, unw_word_t *))
>> + dlsym (handle, get_reg_name));
>
> ... I think would be nicer to use typedefs for these.
Installed with that change.
Andreas.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-05-19 13:32 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-19 12:54 [PATCH] Fix invalid implicit conversions from void * Andreas Schwab
2016-05-19 13:07 ` Pedro Alves
2016-05-19 13:32 ` Andreas Schwab
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).