This is the mail archive of the gdb@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]

Re: many -Wincompatible-pointer-types on clang with gdb-7.9


The proposed patch doesn't eliminate the warnings...

./guile/scm-arch.c:498:40: warning: incompatible pointer types
initializing 'scm_t_subr' (aka 'void (*)()') with an expression of
type 'SCM (SCM)'
      [-Wincompatible-pointer-types]
  { "arch?", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_p),
                                       ^~~~~~~~~~~~~
./guile/guile-internal.h:93:31: note: expanded from macro 'as_a_scm_t_subr'
#define as_a_scm_t_subr(func) func
                              ^

On Fri, Feb 27, 2015 at 6:23 PM, Jack Howarth
<howarth.mailing.lists@gmail.com> wrote:
> Pedro,
>      I see...
>
> #ifdef BUILDING_LIBGUILE
> typedef SCM (* scm_t_subr) ();
> #else
> typedef void (*scm_t_subr)();
> #endif
>
> for the current guile 2.0.11 release.
>
> On Fri, Feb 27, 2015 at 4:07 PM, Pedro Alves <palves@redhat.com> wrote:
>> On 02/27/2015 06:55 PM, Jack Howarth wrote:
>>> On gdb-7.9, we are seeing a large number of warnings from
>>> -Wincompatible-pointer-types with clang...
>>>
>>> ./guile/guile.c:474:25: warning: incompatible pointer types
>>> initializing 'scm_t_subr' (aka 'void (*)()') with an expression of
>>> type 'SCM (SCM, SCM)'
>>>       [-Wincompatible-pointer-types]
>>>   { "execute", 1, 0, 1, gdbscm_execute_gdb_command,
>>>                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
>>> ./guile/guile.c:487:32: warning: incompatible pointer types
>>> initializing 'scm_t_subr' (aka 'void (*)()') with an expression of
>>> type 'SCM (void)'
>>>       [-Wincompatible-pointer-types]
>>>   { "data-directory", 0, 0, 0, gdbscm_data_directory,
>>>                                ^~~~~~~~~~~~~~~~~~~~~
>>> ./guile/guile.c:491:38: warning: incompatible pointer types
>>> initializing 'scm_t_subr' (aka 'void (*)()') with an expression of
>>> type 'SCM (void)'
>>>       [-Wincompatible-pointer-types]
>>>   { "guile-data-directory", 0, 0, 0, gdbscm_guile_data_directory,
>>>                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>
>>> These all are associated with the guile/scm-*.c files.
>>>            Jack
>>>
>>
>> Curious.  I see that on C++ mode too.
>>
>> I've attached my current patch to address this.  I think you'll
>> just need to do something like this on top:
>>
>>  #else
>>
>>  /* In C, just do an implicit conversion.  */
>>  -#define as_a_scm_t_subr(func) func
>>  +#define as_a_scm_t_subr(func) (scm_t_subr) func
>>
>>  #endif
>>
>>
>> Did guile change the type of scm_t_subr again?
>> Here it says 'void (*)()' :
>>
>>> initializing 'scm_t_subr' (aka 'void (*)()') with an expression of
>>> type 'SCM (SCM, SCM)'
>>
>> On my copy (guile 2.0, Fedora 20), in
>> /usr/include/guile/2.0/libguile/__scm.h, I see:
>>
>> #ifdef BUILDING_LIBGUILE
>> typedef SCM (* scm_t_subr) ();
>> #else
>> typedef void *scm_t_subr;
>> #endif
>>
>> Thanks,
>> Pedro Alves
>>


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