libffi limitation causes bad behavior in JNI on Sparc

Tom Tromey tromey@redhat.com
Fri Jun 15 17:08:00 GMT 2001


>>>>> "Marcus" == Marcus G Daniels <mgd@swarm.org> writes:

Hi Marcus.  Sorry this sat unanswered for so long.

Marcus> On Sparc, libffi doesn't handle integer return types of size 8 or 16.
Marcus> This causes problems for JNI calls like CallBooleanMethod because the
Marcus> return value is in the wrong bits of the returned integer. 

Marcus> For example, a hack that worked for me was to change ffi_call in
Marcus> libffi/src/sparc/ffi.c to check for FFI_TYPE_UINT8 and FFI_TYPE_SINT8
Marcus> and do a *(unsigned *)rvalue << = 24 in that case.  

I'm afraid I don't know enough about libffi or Sparc to comment on
this.  Can somebody who does step up here?  For instance, is this
suggested fix really a hack, or is it a reasonable approach to fixing
the bug?

Tom



More information about the Java mailing list