many -Wincompatible-pointer-types on clang with gdb-7.9
Jack Howarth
howarth.mailing.lists@gmail.com
Fri Feb 27 23:54:00 GMT 2015
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
>
More information about the Gdb
mailing list