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

Reply via email to