re: long longlong in libffi (powerpc)

Andrew Haley aph@redhat.com
Tue Jan 21 15:09:00 GMT 2003


=?iso-8859-1?Q?Andreas=5FTobler?= writes:
 > 
 > 
 > -- Original Message --
 > 
 > >Please try to figure out if this is returning the wrong answer, and if
 > >so why. It could be s shell bug.
 > 
 > Well, in my first mail with this topic I stated:
 > 
 > My system claims long as 4 byte and longlong as 8 bytes.
 > 
 > >From the config.status of libffi.
 > ${ac_dA}SIZEOF_LONG${ac_dB}SIZEOF_LONG${ac_dC}4${ac_dD}
 > ${ac_dA}SIZEOF_LONG_LONG${ac_dB}SIZEOF_LONG_LONG${ac_dC}8${ac_dD}
 > 
 > from fficonfig.h: (in objdir, the configured one)
 > /* The number of bytes in a long. */
 > #define SIZEOF_LONG 4
 > 
 > /* The number of bytes in a long long. */
 > #define SIZEOF_LONG_LONG 8
 > 
 > So I assume this check should be ok.
 > 
 > What I'm confused about is the fact that I override the definition of ulong
 > 
 > if SIZEOF_LONG == 4
 > 
 > #define UINT32 unsigned long
 > #define SINT32 long
 > #define ffi_type_ulong ffi_type_uint32
 > #define ffi_type_slong ffi_type_sint32
 > 
 > with this one:
 > #if 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
 > 
 > Now ffi_type_ulong is 64bit long?
 > 
 > Anyway, I thought this would be the cause for my failure I'm investigating.
 > But the longer I think the more I have the feeling that it isn't.
 > 
 > On powerpc linux the InvokeReturn passes while on darwin it doesn't. So
 > my 'theory' is no longer valid :(
Looks that way.
I'm a bit baffled that the data output by gcc looks like
LSFDE1:
	.set L$set1,ドルLEFDE1-LASFDE1
	.long L$set1ドル	; FDE Length
LASFDE1:
	.set L$set2,ドルLASFDE1-Lframe1
	.long L$set2ドル	; FDE CIE offset
	.long	LFB3-.	; FDE initial location
	.set L$set3,ドルLFE3-LFB3
	.long L$set3ドル	; FDE address range
	.byte	0x0	; uleb128 0x0; Augmentation size
	.byte	0x4	; DW_CFA_advance_loc4
 ...
whereas yours looks like
LSFDE1:
	.set	L$set1,ドルLEFDE1-LASFDE1
	.long	L$set1ドル	; FDE Length
LASFDE1:
	.set	L$set2,ドルLASFDE1-Lframe1
	.long	L$set2ドル	; FDE CIE offset
	.long	LFB0-.	; FDE initial location
	.set	L$set3,ドルLFE1-LFB0
	.long	L$set3ドル	; FDE address range
	.byte	0x4	; DW_CFA_advance_loc4
 ...
i.e. the Augmentation size is not present. I think it should be there
if the CIE Augmentation has a "z" in it.
Andrew.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /