This is the mail archive of the libffi-discuss@sourceware.org mailing list for the libffi project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] don't count return value space twice on x86


Nope, it's consistent for us. Closure returns an int32_t, building with MSVC on x86 WIN32.

If it's working for you, it's likely that you're tickling (or in this case, not tickling) the platform-#ifdefed code in prep_cif. Maybe you have some custom defines or flags (or we're missing them) that cause that?

If that code is getting compiled in your builds, then I'm stumped... you are building win32.S with ml, right?

Cheers,
Dan.

----- Original Message -----
> I take it this is only under *some* circumstances, since I've used a
> number of different stdcall closures without issue.
> 
> On Aug 4, 2010, at 8:13 PM, Dan Witte wrote:
> 
> > Anthony,
> >
> > There's a bug in stdcall x86 WIN32 closure code where stack space
> > for the return value is counted twice -- which leads to overpopping
> > and a spectacular crash. This adds an X86_ANY define for all x86
> > plats, which simplifies logic and means that stack computation is
> > done consistently in the x86 prep_cif_machdep, rather than
> > double-counted by prep_cif.
> >
> > Look OK?
> >
> > Cheers,
> > Dan.
> > <libffi-patch-X86_ANY.diff>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]