This is the mail archive of the
libffi-discuss@sourceware.org
mailing list for the libffi project.
Re: [PATCH] don't count return value space twice on x86
- From: Dan Witte <dwitte at mozilla dot com>
- To: Timothy Wall <twall at users dot sf dot net>
- Cc: libffi-discuss <libffi-discuss at sourceware dot org>, Anthony Green <green at redhat dot com>
- Date: Wed, 4 Aug 2010 19:51:44 -0700 (PDT)
- Subject: 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>