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

