Agree that the internal use is questionable.

Reviewed-by: Jaben Carsey <[email protected]>

> -----Original Message-----
> From: Palmer, Thomas [mailto:[email protected]]
> Sent: Monday, January 08, 2018 10:07 AM
> To: Laszlo Ersek <[email protected]>; edk2-devel-01 <edk2-
> [email protected]>
> Cc: Carsey, Jaben <[email protected]>; Gao, Liming
> <[email protected]>; Rebecca Cran <[email protected]>; Ni, Ruiyu
> <[email protected]>
> Subject: RE: [PATCH] ShellPkg/UefiShellLevel2CommandsLib: add missing
> EFIAPI call conv spec
> Importance: High
> 
> Reviewed by [email protected]
> 
> 
> Regards,
> 
> Thomas Palmer
> 
> "I have only made this letter longer because I have not had the time to make
> it shorter" - Blaise Pascal
> 
> -----Original Message-----
> From: Laszlo Ersek [mailto:[email protected]]
> Sent: Saturday, January 6, 2018 2:04 PM
> To: edk2-devel-01 <[email protected]>
> Cc: Jaben Carsey <[email protected]>; Liming Gao
> <[email protected]>; Rebecca Cran <[email protected]>; Ruiyu Ni
> <[email protected]>; Palmer, Thomas <[email protected]>
> Subject: [PATCH] ShellPkg/UefiShellLevel2CommandsLib: add missing EFIAPI
> call conv spec
> 
> UefiShellLevel2CommandsLib (somewhat questionably) calls the BaseLib-
> internal function InternalCharToUpper().
> 
> This function is declared in "MdePkg/Library/BaseLib/BaseLibInternals.h",
> which is not a public library class header. UefiShellLevel2CommandsLib
> therefore duplicates the function declaration, but a mistake was made: the
> EFIAPI calling convention is not spelled out on the duplicated declaration.
> Therefore calls made from UefiShellLevel2CommandsLib will not match the
> actual function definition in "MdePkg/Library/BaseLib/String.c",
> when GCC/X64 toolchains are used.
> 
> One consequence of this is that cross-filesystem copies don't work in the
> UEFI shell (see the StrniCmp() function in "UefiShellLevel2CommandsLib.c").
> From the original report:
> 
> > FS0:\efi\ubuntu\> cp grubx64.efi fs1:\
> >
> > cp: The source and destination are the same.
> 
> Copy the declaration from "BaseLibInternals.h" to
> "UefiShellLevel2CommandsLib.c" verbatim.
> 
> Reported-by: Rebecca Cran <[email protected]>
> Analyzed-by: Thomas Palmer <[email protected]>
> Analyzed-by: Liming Gao <[email protected]>
> Ref: http://mid.mail-archive.com/47cd17d8-f022-6ca5-2f52-
> [email protected]
> Cc: Jaben Carsey <[email protected]>
> Cc: Liming Gao <[email protected]>
> Cc: Rebecca Cran <[email protected]>
> Cc: Ruiyu Ni <[email protected]>
> Cc: Thomas Palmer <[email protected]>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Laszlo Ersek <[email protected]>
> ---
> 
> ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib
> .c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git
> a/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2Commands
> Lib.c
> b/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2Commands
> Lib.c
> index 7948e53cfc46..e9ce63189224 100644
> ---
> a/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2Commands
> Lib.c
> +++
> b/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2Command
> +++ sLib.c
> @@ -268,8 +268,9 @@ VerifyIntermediateDirectories (
>    @return Char as an upper case character.
>  **/
>  CHAR16
> +EFIAPI
>  InternalCharToUpper (
> -  IN CONST CHAR16                    Char
> +  IN      CHAR16                    Char
>    );
> 
>  /**
> --
> 2.14.1.3.gb7cf6e02401b
> 

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to