public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Gary Lin <glin@suse.com>
To: Laszlo Ersek <lersek@redhat.com>
Cc: edk2-devel@lists.01.org, Jaben Carsey <jaben.carsey@intel.com>,
	Ruiyu Ni <ruiyu.ni@intel.com>
Subject: Re: [PATCH v2 1/2] ShellPkg/UefiShellDebug1CommandsLib: sync Compress() definition with decl.
Date: Thu, 8 Feb 2018 11:25:31 +0800	[thread overview]
Message-ID: <20180208032531.wew44qup62nhdgtd@GaryWorkstation> (raw)
In-Reply-To: <20180207224435.10730-2-lersek@redhat.com>

On Wed, Feb 07, 2018 at 11:44:34PM +0100, Laszlo Ersek wrote:
> "Compress.h" declares the Compress() function as EFIAPI, but the
> definition in "Compress.c" lacks EFIAPI.
> 
> GCC toolchains without LTO do not catch this error because "Compress.c"
> does not include "Compress.h"; i.e. the declaration used by callers such
> as "EfiCompress.c" is not actually matched against the function definition
> at build time.
> 
> With LTO enabled, the mismatch is found -- however, as a warning only, due
> to commit f8d0b9662993 ("BaseTools GCC5: disable warnings-as-errors for
> now", 2016-08-03).
> 
> Include the header in the C file (which turns the issue into a hard build
> error on all GCC toolchains), plus sync the declaration from the header
> file to the C file. Finally, remove EFIAPI from both declaration and
> definition -- this was the original intent of commit c4e74e9b814c
> ("ShellPkg/UefiShellDebug1CommandsLib: Remove unnecessary EFIAPI",
> 2016-10-09), but it missed the header file.
> 
> (Gary meant to address that omission in Oct 2017:
> 
>   [edk2] [PATCH] ShellPkg/UefiShellDebug1CommandsLib: Remove EFIAPI from
>                  Compress()
> 
>   http://mid.mail-archive.com/20171026065329.32311-1-glin@suse.com
> 
> and Ray reviewed the patch, but then the patch was never committed.)
> 
I forgot to track the commit. Thanks for picking it up!

Reviewed-by Gary Lin <glin@suse.com>

> So do the sync and drop EFIAPI now.
> 
> This happens to fix the EFICOMPRESS shell command, when built with GCC for
> X64.
> 
> Cc: Gary Lin <glin@suse.com>
> Cc: Jaben Carsey <jaben.carsey@intel.com>
> Cc: Ruiyu Ni <ruiyu.ni@intel.com>
> Fixes: c4e74e9b814cfb4b51cf832f3bb218cd2aba348b
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Laszlo Ersek <lersek@redhat.com>
> ---
> 
> Notes:
>     v2:
>     - drop EFIAPI based on Gary's earlier patch which I just stumbled upon
>     - do not pick up Jaben's R-b from v1, due to inverted EFIAPI handling
>     - add "Fixes:" tag
> 
>  ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.h |  1 -
>  ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c | 14 ++++++++------
>  2 files changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.h b/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.h
> index 39a997178fb7..7fe844e212a8 100644
> --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.h
> +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.h
> @@ -28,7 +28,6 @@
>    @retval EFI_BUFFER_TOO_SMALL  The buffer was too small.  DstSize is required.
>  **/
>  EFI_STATUS
> -EFIAPI
>  Compress (
>    IN      VOID    *SrcBuffer,
>    IN      UINT64  SrcSize,
> diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c
> index 736d2a35b3ac..cde2c54f1b45 100644
> --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c
> +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c
> @@ -23,6 +23,8 @@
>  #include <Library/DebugLib.h>
>  #include <Library/ShellLib.h>
>  
> +#include "Compress.h"
> +
>  //
>  // Macro Definitions
>  //
> @@ -1307,20 +1309,20 @@ Encode (
>    The compression routine.
>  
>    @param[in]       SrcBuffer     The buffer containing the source data.
> -  @param[in]       SrcSize       The number of bytes in SrcBuffer.
> +  @param[in]       SrcSize       Number of bytes in SrcBuffer.
>    @param[in]       DstBuffer     The buffer to put the compressed image in.
>    @param[in, out]  DstSize       On input the size (in bytes) of DstBuffer, on
> -                                return the number of bytes placed in DstBuffer.
> +                                 return the number of bytes placed in DstBuffer.
>  
>    @retval EFI_SUCCESS           The compression was sucessful.
>    @retval EFI_BUFFER_TOO_SMALL  The buffer was too small.  DstSize is required.
>  **/
>  EFI_STATUS
>  Compress (
> -  IN       VOID   *SrcBuffer,
> -  IN       UINT64 SrcSize,
> -  IN       VOID   *DstBuffer,
> -  IN OUT   UINT64 *DstSize
> +  IN      VOID    *SrcBuffer,
> +  IN      UINT64  SrcSize,
> +  IN      VOID    *DstBuffer,
> +  IN OUT  UINT64  *DstSize
>    )
>  {
>    EFI_STATUS  Status;
> -- 
> 2.14.1.3.gb7cf6e02401b
> 
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
> 


  reply	other threads:[~2018-02-08  3:20 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-07 22:44 [PATCH v2 0/2] sync some function definitions with their declarations Laszlo Ersek
2018-02-07 22:44 ` [PATCH v2 1/2] ShellPkg/UefiShellDebug1CommandsLib: sync Compress() definition with decl Laszlo Ersek
2018-02-08  3:25   ` Gary Lin [this message]
2018-02-07 22:44 ` [PATCH v2 2/2] OvmfPkg/PlatformPei: sync AmdSevInitialize() definition with declaration Laszlo Ersek
2018-02-08 15:14 ` [PATCH v2 0/2] sync some function definitions with their declarations Carsey, Jaben
2018-02-08 17:26   ` Laszlo Ersek

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=20180208032531.wew44qup62nhdgtd@GaryWorkstation \
    --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