On Thu, 2015-07-23 at 12:31 +0200, Laszlo Ersek wrote: > > I'm slightly confused. Why does it *only* matter for varargs functions? > > I thought that on some platforms, the difference between the ELF ABI > > and the MS ABI extended to putting arguments in *completely* different > > registers? Why doesn't that bite us? > > It does not bite us because the calling convention is part of the > function's prototype (the declaration in the header file),
Right, thanks. Sorry, I'd actually worked this out before I sent my
email but forgot to remove the question.
The problem is *solely* about choosing the right conventions for
va_list handling, according to the ABI. It's *all* about GCC PR#50818.
>
> > > Any particular reason for disliking these hunks of
> > > "EDKII_openssl-1.0.2d.patch" (over the other hunks)?
> >
> > Oh, I dislike lots of other bits of that too. I'm just working through
> > them all separately. Are you on the openssl-dev mailing list? :)
>
> Nope. :)
Lucky you :)
> In any case, if there was such a gcc PR, we'd still have to stick with
> the compatibility cruft in edk2, for old gcc versions' sake.
Right. So what are the options?
1. Push a patch into OpenSSL upstream that marks ERR_add_error_data()
and any other varargs functions with EFIAPI. (Ick, no. I can't
imagine them accepting that requirement.)
2. Maintain the same patch for ourselves in perpetuity. (Ick, we
really don't *want* to be carrying patches, especially like that
one.)
3. Switch to -mabi=ms across the board (can we ditch GCC 4.4?)
4. Fix PR#50818. (Doesn't help until we can require a fixed GCC, in
which case we might as well just go with option #3).
5. Add -UNO_BUILTIN_VA_FUNCS to OpenSSL build flags or otherwise
tweak OpenSslSupport.h to avoid tripping up on it. (As with option
#1 and #2, this might work for OpenSSL but I'd rather have a fix
for the *general* case of non-explicitly-EFIAPI varargs functions.
Those are currently broken on x86_64 ELF builds *anywhere* in
Tianocore, right? Like in the PrintString function in
DuetPkg/DxeIpl/Debug.c, found with a very quick grep...)
Anything I missed?
I'm leaning towards a combination of #3 and #5. Switch to -mabi=ms
where we can, so the whole mess can go away in time. And the minimal
tweak to fix it for OpenSSL builds, although there *are* still issues
elsewhere in the tree.
--
David Woodhouse Open Source Technology Centre
[email protected] Intel Corporation
smime.p7s
Description: S/MIME cryptographic signature
------------------------------------------------------------------------------
_______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
