At a quick glance, the fix should probably be diff --git a/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c b/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c index 4d876bb108..26b785c563 100644 --- a/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c +++ b/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c @@ -216,7 +216,7 @@ GetImageNameFromHandle ( Status = gBS->HandleProtocol ( LoadedImage->DeviceHandle, &gEfiFirmwareVolume2ProtocolGuid, - &Fv2 + (VOID **)&Fv2 ); if (!EFI_ERROR (Status)) { Status = Fv2->ReadSection (
/ Leif On Thu, Aug 10, 2017 at 08:53:11AM +0100, Ard Biesheuvel wrote: > This patch is breaking the GCC build: > > ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c: > In function 'GetImageNameFromHandle': > 220:25: error: passing argument 3 of 'gBS->HandleProtocol' from > incompatible pointer type [-Werror] > 220:25: note: expected 'void **' but argument is of type 'struct > EFI_FIRMWARE_VOLUME2_PROTOCOL **' > > Please fix. > > Regards, > Ard. > > > On 9 August 2017 at 08:49, Ruiyu Ni <ruiyu...@intel.com> wrote: > > From: Huajing Li <huajing...@intel.com> > > > > Contributed-under: TianoCore Contribution Agreement 1.0 > > Signed-off-by: Huajing Li <huajing...@intel.com> > > Reviewed-by: Ruiyu Ni <ruiyu...@intel.com> > > --- > > .../Library/UefiShellDriver1CommandsLib/Drivers.c | 99 > > +++++++++++++++++++++- > > .../UefiShellDriver1CommandsLib.h | 4 + > > .../UefiShellDriver1CommandsLib.uni | 2 +- > > 3 files changed, 100 insertions(+), 5 deletions(-) > > > > diff --git a/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c > > b/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c > > index ffdef04352..f3c1476872 100644 > > --- a/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c > > +++ b/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c > > @@ -2,7 +2,7 @@ > > Main file for Drivers shell Driver1 function. > > > > (C) Copyright 2012-2015 Hewlett-Packard Development Company, L.P.<BR> > > - Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR> > > + Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.<BR> > > This program and the accompanying materials > > are licensed and made available under the terms and conditions of the > > BSD License > > which accompanies this distribution. The full text of the license may > > be found at > > @@ -161,6 +161,92 @@ ReturnDriverVersion( > > } > > > > /** > > + Get image name from Image Handle. > > + > > + @param[in] Handle Image Handle > > + > > + @return A pointer to the image name as a string. > > +**/ > > +CHAR16 * > > +GetImageNameFromHandle ( > > + IN CONST EFI_HANDLE Handle > > + ) > > +{ > > + EFI_STATUS Status; > > + EFI_DRIVER_BINDING_PROTOCOL *DriverBinding; > > + EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; > > + EFI_DEVICE_PATH_PROTOCOL *DevPathNode; > > + EFI_GUID *NameGuid; > > + CHAR16 *ImageName; > > + UINTN BufferSize; > > + UINT32 AuthenticationStatus; > > + EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv2; > > + > > + LoadedImage = NULL; > > + DriverBinding = NULL; > > + ImageName = NULL; > > + > > + Status = gBS->OpenProtocol ( > > + Handle, > > + &gEfiDriverBindingProtocolGuid, > > + (VOID **) &DriverBinding, > > + NULL, > > + NULL, > > + EFI_OPEN_PROTOCOL_GET_PROTOCOL > > + ); > > + if (EFI_ERROR (Status)) { > > + return NULL; > > + } > > + Status = gBS->OpenProtocol ( > > + DriverBinding->ImageHandle, > > + &gEfiLoadedImageProtocolGuid, > > + (VOID**)&LoadedImage, > > + gImageHandle, > > + NULL, > > + EFI_OPEN_PROTOCOL_GET_PROTOCOL > > + ); > > + if (!EFI_ERROR (Status)) { > > + DevPathNode = LoadedImage->FilePath; > > + if (DevPathNode == NULL) { > > + return NULL; > > + } > > + while (!IsDevicePathEnd (DevPathNode)) { > > + NameGuid = EfiGetNameGuidFromFwVolDevicePathNode > > ((MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *)DevPathNode); > > + if (NameGuid != NULL) { > > + Status = gBS->HandleProtocol ( > > + LoadedImage->DeviceHandle, > > + &gEfiFirmwareVolume2ProtocolGuid, > > + &Fv2 > > + ); > > + if (!EFI_ERROR (Status)) { > > + Status = Fv2->ReadSection ( > > + Fv2, > > + NameGuid, > > + EFI_SECTION_USER_INTERFACE, > > + 0, > > + (VOID **)&ImageName, > > + &BufferSize, > > + &AuthenticationStatus > > + ); > > + if (!EFI_ERROR (Status)) { > > + break; > > + } > > + ImageName = NULL; > > + } > > + } > > + // > > + // Next device path node > > + // > > + DevPathNode = NextDevicePathNode (DevPathNode); > > + } > > + if (ImageName == NULL) { > > + ImageName = ConvertDevicePathToText (LoadedImage->FilePath, TRUE, > > TRUE); > > + } > > + } > > + return ImageName; > > +} > > + > > +/** > > Function for 'drivers' command. > > > > @param[in] ImageHandle Handle to the Image (NULL if Internal). > > @@ -186,6 +272,7 @@ ShellCommandRunDrivers ( > > CHAR16 *Temp2; > > CONST CHAR16 *FullDriverName; > > CHAR16 *TruncatedDriverName; > > + CHAR16 *ImageName; > > CHAR16 *FormatString; > > UINT32 DriverVersion; > > BOOLEAN DriverConfig; > > @@ -274,6 +361,7 @@ ShellCommandRunDrivers ( > > DriverConfig = ReturnDriverConfig(*HandleWalker); > > DriverDiag = ReturnDriverDiag (*HandleWalker); > > FullDriverName = GetStringNameFromHandle(*HandleWalker, Language); > > + ImageName = GetImageNameFromHandle (*HandleWalker); > > > > TruncatedDriverName = NULL; > > if (!SfoFlag && (FullDriverName != NULL)) { > > @@ -293,15 +381,18 @@ ShellCommandRunDrivers ( > > DeviceCount, > > ChildCount, > > SfoFlag?FullDriverName:TruncatedDriverName, > > - Temp2==NULL?L"":Temp2 > > - ); > > + SfoFlag ? (Temp2 == NULL ? L"" : Temp2) : (ImageName == NULL ? > > L"" : ImageName) > > + ); > > if (TruncatedDriverName != NULL) { > > FreePool (TruncatedDriverName); > > } > > if (Temp2 != NULL) { > > FreePool(Temp2); > > } > > - > > + if (ImageName != NULL) { > > + FreePool (ImageName); > > + } > > + > > if (ShellGetExecutionBreakFlag ()) { > > ShellStatus = SHELL_ABORTED; > > break; > > diff --git > > a/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.h > > > > b/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.h > > index b061243af7..fa51677aa2 100644 > > --- > > a/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.h > > +++ > > b/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.h > > @@ -24,6 +24,10 @@ > > > > #include <IndustryStandard/Pci.h> > > > > +#include <Pi/PiFirmwareVolume.h> > > +#include <Pi/PiFirmwareFile.h> > > +#include <Protocol/FirmwareVolume2.h> > > + > > #include <Protocol/Shell.h> > > #include <Protocol/ShellParameters.h> > > #include <Protocol/DevicePath.h> > > diff --git > > a/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni > > > > b/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni > > index 7a3e61e5fc..5ca548d9f6 100644 > > --- > > a/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni > > +++ > > b/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni > > @@ -93,7 +93,7 @@ > > " T D\r\n" > > " Y C I\r\n" > > " P F A\r\n" > > -"DRV VERSION E G G #D #C DRIVER NAME IMAGE > > PATH\r\n" > > +"DRV VERSION E G G #D #C DRIVER NAME IMAGE > > NAME\r\n" > > "=== ======== = = = === === =================================== > > ==========\r\n" > > #string STR_DRIVERS_ITEM_LINE #language en-US "%H%3x%N %08x %1c %1c > > %1c %3d %3d %-35s %s\r\n" > > #string STR_DRIVERS_ITEM_LINE_SFO #language en-US > > "DriversInfo,"%x","%x","%c","%c","%c","%d","%d","%s","%s"\r\n" > > -- > > 2.12.2.windows.2 > > > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.01.org > > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel