public inbox for libffi-discuss@sourceware.org
 help / color / mirror / Atom feed
* src/alpha/ffitarget.h  - FFI_TRAMPOLINE_SIZE
@ 2015-04-16  3:22 John E. Malmberg
  2015-04-16 10:58 ` Jarkko Hietaniemi
  0 siblings, 1 reply; 2+ messages in thread
From: John E. Malmberg @ 2015-04-16  3:22 UTC (permalink / raw)
  To: libffi-discuss

I do not have a Tru64 system to test this on.

Looking at the code in src/alpha/ffitarget.h and src/alpha/ffi.c, 
something does not look right.

FFI_TRAMPOLINE_SIZE is set to 24 in ffitarget.h

The typedef struct ffi_closure is then set up in ffi.h as:

typedef struct {
   char tramp{FFI_TRAMPOLINE_SIZE];
   ffi_cif * cif;
   void (*fun)...
   void *user_data
} ffi_closure

In ffi.c ffi_prep_closure_loc(), the code then does:

   tramp = (unsigned int *) &closure->tramp[0];
   ....

    *(void **) &tramp[4] = ffi_closure_osf;

But tramp only has 3 longword members per the previous declaration, so 
&tramp[4] is the address of the '*cif' member of the structure which is 
then updated:

    closure->cif = cif;

Am I understanding this correctly?

Regards,
-John




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-04-16 10:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-16  3:22 src/alpha/ffitarget.h - FFI_TRAMPOLINE_SIZE John E. Malmberg
2015-04-16 10:58 ` Jarkko Hietaniemi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).