Fix sol-thread.c compilation on Solaris

Message ID ydd1skifsex.fsf@CeBiTec.Uni-Bielefeld.DE
State New, archived
Headers

Commit Message

Rainer Orth Nov. 28, 2017, 1:23 p.m. UTC
  Building current gdb mainline with gcc 7.1 on Solaris 11.4 fails:

/vol/src/gnu/gdb/gdb/dist/gdb/sol-thread.c: In function ‘void _initialize_sol_thread()’:
/vol/src/gnu/gdb/gdb/dist/gdb/sol-thread.c:1229:66: error: invalid conversion from ‘void (*)(char*, int)’ to ‘void (*)(const char*, int)’ [-fpermissive]
     _("Show info on Solaris user threads."), &maintenanceinfolist);
                                                                  ^
In file included from /vol/src/gnu/gdb/gdb/dist/gdb/completer.h:21:0,
                 from /vol/src/gnu/gdb/gdb/dist/gdb/symtab.h:31,
                 from /vol/src/gnu/gdb/gdb/dist/gdb/language.h:26,
                 from /vol/src/gnu/gdb/gdb/dist/gdb/frame.h:72,
                 from /vol/src/gnu/gdb/gdb/dist/gdb/gdbarch.h:39,
                 from /vol/src/gnu/gdb/gdb/dist/gdb/defs.h:557,
                 from /vol/src/gnu/gdb/gdb/dist/gdb/sol-thread.c:51:
/vol/src/gnu/gdb/gdb/dist/gdb/command.h:140:33: note:   initializing argument 3 of ‘cmd_list_element* add_cmd(const char*, command_class, void (*)(const char*, int), const char*, cmd_list_element**)’
 extern struct cmd_list_element *add_cmd (const char *, enum command_class,
                                 ^~~~~~~

The following patch allows compilation to succeed on i386-pc-solaris2.11
and sparc-sun-solaris2.11.

Ok for mainline?

	Rainer
  

Comments

Pedro Alves Nov. 28, 2017, 2:01 p.m. UTC | #1
On 11/28/2017 01:23 PM, Rainer Orth wrote:
> 
> # HG changeset patch
> # Parent  d3867b61620919242bbc9d875d355487a4e71e96
> Fix sol-thread.c compilation on Solaris
> 
> diff --git a/gdb/sol-thread.c b/gdb/sol-thread.c
> --- a/gdb/sol-thread.c
> +++ b/gdb/sol-thread.c
> @@ -112,7 +112,7 @@ typedef td_err_e (td_ta_get_nthreads_fty
>  typedef td_err_e (td_ta_tsd_iter_ftype)(const td_thragent_t *ta_p,
>  					td_key_iter_f *cb, void *cbdata_p);
>  typedef td_err_e (td_ta_thr_iter_ftype)(const td_thragent_t *ta_p,
> -					td_thr_iter_f *cb, void *cbdata_p,
> +					td_thr_iter_f *cb, const void *cbdata_p,

Pedantically, I'd think it better that this prototype
continues to match the prototype declared in Solaris's
proc_service.h (...)

>  					td_thr_state_e state, int ti_pri,
>  					sigset_t *ti_sigmask_p,
>  					unsigned ti_user_flags);
> @@ -1122,7 +1122,7 @@ info_cb (const td_thrhandle_t *th, void 
>     inferior.  */
>  
>  static void
> -info_solthreads (char *args, int from_tty)
> +info_solthreads (const char *args, int from_tty)
>  {
>    p_td_ta_thr_iter (main_ta, info_cb, args,
>  		    TD_THR_ANY_STATE, TD_THR_LOWEST_PRIORITY,

(...) which I guess means using '(void *) args' here.  WDYT?

Thanks,
Pedro Alves
  
Tom Tromey Nov. 29, 2017, 3:36 p.m. UTC | #2
>>>>> "Rainer" == Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes:

Rainer> /vol/src/gnu/gdb/gdb/dist/gdb/command.h:140:33: note:   initializing argument 3 of ‘cmd_list_element* add_cmd(const char*, command_class, void (*)(const char*, int), const char*, cmd_list_element**)’
Rainer>  extern struct cmd_list_element *add_cmd (const char *, enum command_class,
Rainer>                                  ^~~~~~~

Rainer> The following patch allows compilation to succeed on i386-pc-solaris2.11
Rainer> and sparc-sun-solaris2.11.

Thanks for fixing this.

Tom
  

Patch

# HG changeset patch
# Parent  d3867b61620919242bbc9d875d355487a4e71e96
Fix sol-thread.c compilation on Solaris

diff --git a/gdb/sol-thread.c b/gdb/sol-thread.c
--- a/gdb/sol-thread.c
+++ b/gdb/sol-thread.c
@@ -112,7 +112,7 @@  typedef td_err_e (td_ta_get_nthreads_fty
 typedef td_err_e (td_ta_tsd_iter_ftype)(const td_thragent_t *ta_p,
 					td_key_iter_f *cb, void *cbdata_p);
 typedef td_err_e (td_ta_thr_iter_ftype)(const td_thragent_t *ta_p,
-					td_thr_iter_f *cb, void *cbdata_p,
+					td_thr_iter_f *cb, const void *cbdata_p,
 					td_thr_state_e state, int ti_pri,
 					sigset_t *ti_sigmask_p,
 					unsigned ti_user_flags);
@@ -1122,7 +1122,7 @@  info_cb (const td_thrhandle_t *th, void 
    inferior.  */
 
 static void
-info_solthreads (char *args, int from_tty)
+info_solthreads (const char *args, int from_tty)
 {
   p_td_ta_thr_iter (main_ta, info_cb, args,
 		    TD_THR_ANY_STATE, TD_THR_LOWEST_PRIORITY,