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

Jack Howarth <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CADtEn-13bHPwQJfQ2KvU4tTiFbZoWHAhirx5bQCEzRKq5aaH-g@mail.gmail.com>
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
<[email protected]> 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 <[email protected]> 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
>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.