public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Leif Lindholm <leif.lindholm@linaro.org>
To: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	Huajing Li <huajing.li@intel.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: [PATCH 1/2] ShellPkg/driver: Show Image Name in non-SFO mode
Date: Thu, 10 Aug 2017 11:14:35 +0100	[thread overview]
Message-ID: <20170810101435.pdgzhakln4vq3vwe@bivouac.eciton.net> (raw)
In-Reply-To: <CAKv+Gu8_8f60y0cYnOYTax0hbeuu2HOeaag53q6gaFzLxPq9Ug@mail.gmail.com>

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.ni@intel.com> wrote:
> > From: Huajing Li <huajing.li@intel.com>
> >
> > Contributed-under: TianoCore Contribution Agreement 1.0
> > Signed-off-by: Huajing Li <huajing.li@intel.com>
> > Reviewed-by: Ruiyu Ni <ruiyu.ni@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


  reply	other threads:[~2017-08-10 10:12 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20170809074935.230172-1-ruiyu.ni@intel.com>
2017-08-09  7:49 ` [PATCH 1/2] ShellPkg/driver: Show Image Name in non-SFO mode Ruiyu Ni
2017-08-10  7:53   ` Ard Biesheuvel
2017-08-10 10:14     ` Leif Lindholm [this message]
2017-08-09  7:49 ` [PATCH 2/2] ShellPkg/driver: Show "-" " Ruiyu Ni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170810101435.pdgzhakln4vq3vwe@bivouac.eciton.net \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox