public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Jordan Justen <jordan.l.justen@intel.com>
To: "Gao, Liming" <liming.gao@intel.com>,
	Andrew Fish <afish@apple.com>,
	Andrew Fish via edk2-devel <edk2-devel@lists.01.org>,
	Mike Kinney <michael.d.kinney@intel.com>,
	Zhichao Gao <zhichao.gao@intel.com>
Cc: Hao Wu <hao.a.wu@intel.com>, edk2-devel <edk2-devel@lists.01.org>,
	Bret Barkelew <Bret.Barkelew@microsoft.com>,
	Michael Turner <Michael.Turner@microsoft.com>,
	Star Zeng <star.zeng@intel.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Laszlo Ersek <lersek@redhat.com>
Subject: Re: [PATCH V2 17/17] MdeModulePkg: Add PEIM and lib to dsc file
Date: Sun, 31 Mar 2019 23:17:12 -0700	[thread overview]
Message-ID: <155409943250.23072.1800190734018760556@jljusten-skl> (raw)
In-Reply-To: <46E887C8-DAAB-4855-BB70-69066F6B45FD@apple.com>

On 2019-03-14 22:54:24, Andrew Fish via edk2-devel wrote:
> I understand the motivation for this change as I've done something
> much less portable that looks a lot like this to save the PEI XIP
> space....
> 
> I seem to remember a long time ago we add a public VA_LIST to an API
> and we ran into an issue due to the marker format being compiler
> specific. You don't tend to see this on VC++ as it mostly uses a
> pointer to the frame, but GCC and clang can use a data structure
> especially not on IA32 (i386) for a VA_LIST (this is part of the
> reason there are so many #ifdefs in the Base.h VA_LIST section).
> 
> In the past to fix this Mike Kinney added BASE_LIST. I seem to
> remember MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode passes
> a BASE_LIST into ReportStatusCode vs. a VA_LIST for this reason. Was
> this VA_LIST portability concern taken into consideration for this
> new API?
> 
> In general VA_LIST is not an issue as long as all the code is
> compiled with the same compiler but if binaries are in play then you
> can have issues. So things like FSB, Option ROMs, OS Loaders, EFI
> Shell, EFI Apps. are when you can see the issue.
> 

I didn't see a reply to Andrew's concern. Was it considered, and
addressed?

I remember having several issues in the past with var-args. I haven't
seen it show up in quite a while.

I know we have to make sure to consistently apply EFIAPI to such
function declarations.

I did think we still considered it forbidden to use var-args across a
binary interface. (PPI, Protocol, Core functions)

I'm not sure if EFIAPI is enough to make it safe as long as all code
is compiled by the same compiler, or if it truely makes it safe for a
binary compiled with one compiler to be called from a binary compiled
with any other compiler.

I'll add Ard and Laszlo to the Cc, as I seem to recall they may have
looked at it before. (Although, I think they've been Cc'd on the
series, so maybe they've already considered this, and don't expect
there is a problem.)

-Jordan


  reply	other threads:[~2019-04-01  6:17 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-15  5:17 [PATCH V2 00/17] Add a new API DebugVPrint for DebugLib Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 01/17] MdePkg/DebugLib.h: Add a new api " Zhichao Gao
2019-03-15  6:15   ` Jordan Justen
2019-03-18  0:14     ` Gao, Zhichao
2019-03-18  6:20       ` Jordan Justen
2019-03-18 15:09         ` Gao, Liming
2019-03-18 18:34           ` Jordan Justen
2019-03-19 14:45             ` Gao, Liming
2019-03-19 15:44               ` stephano
2019-03-15  5:17 ` [PATCH V2 02/17] MdePkg/BaseDebugLibNull: " Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 03/17] MdePkg/BaseDebugLibSerialPort: Add a new api DebugVPrint Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 04/17] MdePkg/UefidebugLibConOut: " Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 05/17] MdePkg/UefiDebugLibStdErr: " Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 06/17] MdePkg/DxeRuntimeDebugLibSerialPort: " Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 07/17] MdePkg/UefiDebuglibDebugPortProtocol: " Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 08/17] ArmPkg/SemiHostingDebugLib: " Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 09/17] OvmfPkg/PlatformDebugLibIoPort: " Zhichao Gao
2019-03-20 16:13   ` Laszlo Ersek
2019-03-15  5:17 ` [PATCH V2 10/17] IntelFsp2Pkg/BaseFspDebugLibSerialPort: " Zhichao Gao
2019-03-15  7:31   ` Chiu, Chasel
2019-03-15  5:17 ` [PATCH V2 11/17] IntelFspPkg/BaseFspDebugLibSerialPort: " Zhichao Gao
2019-03-15  7:32   ` Chiu, Chasel
2019-03-15  5:17 ` [PATCH V2 12/17] IntelFramworkModulePkg/PeiDxeDebugLibReportStatusCode: Add a new api Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 13/17] MdeModulePkg/PeiDxeDebugLibReportStatusCode: " Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 14/17] MdeModulePkg: Add definitions for EDKII DEBUG PPI Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 15/17] MdeModulePkg: Add a PEIM to install Debug PPI Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 16/17] MdeModulePkg/PeiDebugLibDebugPpi: Add PEI debug lib Zhichao Gao
2019-03-15  5:17 ` [PATCH V2 17/17] MdeModulePkg: Add PEIM and lib to dsc file Zhichao Gao
2019-03-15  5:54   ` Andrew Fish
2019-04-01  6:17     ` Jordan Justen [this message]
2019-04-01  6:33       ` Jordan Justen
2019-04-01  6:37         ` Gao, Zhichao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=155409943250.23072.1800190734018760556@jljusten-skl \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox