Please could you submit this as an upstream report at http://gcc.gnu.org/bugzilla/enter_bug.cgi and then give the upstream PR number here on the Debian report?
Andreas Rottmann writes: > Andreas Rottmann <[EMAIL PROTECTED]> writes: > > > As you can easily see, the two pointers refer to the same object, which > > means fficonfig.h #defines ffi_type_ulong to ffi_type_uint64, which is > > plain wrong on a 32bit platform. > > > s/fficonfig.h/ffi.h/ > > The way ffi.h #defines the ffi_type_XX equivalents to the standard c > types seems fucked up - they have them along with the #defines of the > fixed-bit types (e.g. UINT32), but the two issues are orthogonal. I > have attached a patch that should fix this, and furthermore adds > #defines for 'long long' and 'unsigned long long'. Hope something like > this can go upstream. > > --- /usr/include/ffi.h 2003-10-17 13:13:15.000000000 +0200 > +++ /home/andy/include/g-wrap/ffi.h 2003-10-25 18:41:41.000000000 +0200 > @@ -79,76 +79,99 @@ > #define SINT8 signed char > > +/* 16 bit types */ > #if SIZEOF_INT == 2 > > #define UINT16 unsigned int > #define SINT16 int > -#define ffi_type_uint ffi_type_uint16 > -#define ffi_type_sint ffi_type_sint16 > > -#else > -#if SIZEOF_SHORT == 2 > +#elif SIZEOF_SHORT == 2 > > #define UINT16 unsigned short > #define SINT16 short > -#define ffi_type_ushort ffi_type_uint16 > -#define ffi_type_sshort ffi_type_sint16 > > #endif > -#endif > > +/* 32bit types */ > #if SIZEOF_INT == 4 > > #define UINT32 unsigned int > #define SINT32 int > -#define ffi_type_uint ffi_type_uint32 > -#define ffi_type_sint ffi_type_sint32 > > -#else > -#if SIZEOF_SHORT == 4 > +#elif SIZEOF_SHORT == 4 > > #define UINT32 unsigned short > #define SINT32 short > -#define ffi_type_ushort ffi_type_uint32 > -#define ffi_type_sshort ffi_type_sint32 > > -#else > -#if SIZEOF_LONG == 4 > +#elif SIZEOF_LONG == 4 > > #define UINT32 unsigned long > #define SINT32 long > -#define ffi_type_ulong ffi_type_uint32 > -#define ffi_type_slong ffi_type_sint32 > > #endif > -#endif > -#endif > > + > +/* 64 bit types */ > #if SIZEOF_INT == 8 > > #define UINT64 unsigned int > #define SINT64 int > -#define ffi_type_uint ffi_type_uint64 > -#define ffi_type_sint ffi_type_sint64 > > -#else > -#if SIZEOF_LONG == 8 > +#elif SIZEOF_LONG == 8 > > #define UINT64 unsigned long > #define SINT64 long > -#define ffi_type_ulong ffi_type_uint64 > -#define ffi_type_slong ffi_type_sint64 > > -#else > -#if SIZEOF_LONG_LONG == 8 > +#elif SIZEOF_LONG_LONG == 8 > > #define UINT64 unsigned long long > #define SINT64 long long > -#define ffi_type_ulong ffi_type_uint64 > -#define ffi_type_slong ffi_type_sint64 > > #endif > + > +#if SIZEOF_INT == 2 > + > +#define ffi_type_uint ffi_type_uint16 > +#define ffi_type_sint ffi_type_sint16 > + > +#elif SIZEOF_INT == 4 > + > +#define ffi_type_uint ffi_type_uint32 > +#define ffi_type_sint ffi_type_sint32 > + > +#elif SIZEOF_INT == 8 > + > +#define ffi_type_uint ffi_type_uint64 > +#define ffi_type_sint ffi_type_sint64 > + > #endif > + > +#if SIZEOF_SHORT == 2 > + > +#define ffi_type_ushort ffi_type_uint16 > +#define ffi_type_sshort ffi_type_sint16 > + > +#elif SIZEOF_SHORT == 4 > + > +#define ffi_type_ushort ffi_type_uint32 > +#define ffi_type_sshort ffi_type_sint32 > + > +#endif /* guess there are no 64bit shorts anywhere? */ > + > +#if SIZEOF_LONG == 4 > + > +#define ffi_type_ulong ffi_type_uint32 > +#define ffi_type_slong ffi_type_sint32 > + > +#elif SIZEOF_LONG == 8 > + > +#define ffi_type_ulong ffi_type_uint64 > +#define ffi_type_slong ffi_type_sint64 > + > #endif > > +/* any machines with 128bit long longs yet? */ > +#define ffi_type_ulong_long ffi_type_uint64 > +#define ffi_type_slong_long ffi_type_sint64 > + > /* ---- System specific configurations ----------------------------------- */ > > > Cheers, Andi > -- > Andreas Rottmann | [EMAIL PROTECTED] | [EMAIL PROTECTED] | > [EMAIL PROTECTED] > http://www.8ung.at/rotty | GnuPG Key: http://www.8ung.at/rotty/gpg.asc > Fingerprint | DFB4 4EB4 78A4 5EEE 6219 F228 F92F CFC5 01FD 5B62 > > Python is executable pseudocode, Perl is executable line-noise.