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