From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-x22b.google.com (mail-wr0-x22b.google.com [IPv6:2a00:1450:400c:c0c::22b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 07E532095DE4D for ; Thu, 10 Aug 2017 03:12:20 -0700 (PDT) Received: by mail-wr0-x22b.google.com with SMTP id 33so1240326wrz.4 for ; Thu, 10 Aug 2017 03:14:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=9UN0A2odFQRpVHk/RvJ5yjKEzcTGS/B3J1KAawXgHeA=; b=KybEeuFW8NalSLV6iCbEUSFah5DR3+KZrltJExUVZOtVqmdmjnw1/dvVrFN6taudea Mto1GfB2mKCAc1+K+207bBvizNrK5VWMbQleiX2iun41AK6obBE6AxpGHDd/v8soXH2V aKnaSuVvYgTd8Z62ld5zUOKmChWGwbOuH58Zw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=9UN0A2odFQRpVHk/RvJ5yjKEzcTGS/B3J1KAawXgHeA=; b=Rfo/6f1J9T2JghhwtC6znkrifjREX1xb+HsjPgsC+mapDSgEPftsKGyG1hN8qyegBj lOSmJ+AWPfC6CyCvX7yLUgontbwVULId6kPxSccIx6uKQHYKOyOxNvuSA1HfhIBoQilc F4CO+LBn9kA4RxRikq5fQ3PXcgUoMXDTrrIjzO2ETvr/bxrZVIMF622SS9HcpeU/dQjx BWEkPDIJSWWLYOQgavlUAnHb9jtZd2Ib6mvba1L2k/oaY3ixEAVZfQw4134JPftlwk5J ychTNkcFAOwYvzbSMzFFHzfabLS8PGcdjyaDOzC6HRqEf42i5mruAwtLxNHMOoKT61o0 WyBQ== X-Gm-Message-State: AHYfb5hvti17tiat8ctI6LoKTOnSr+9Dr0r9ZRvP6uGBqwhdvU8YDrG3 2WMy1GqHCLouvhqU X-Received: by 10.223.167.138 with SMTP id j10mr8184702wrc.97.1502360077593; Thu, 10 Aug 2017 03:14:37 -0700 (PDT) Received: from bivouac.eciton.net (bivouac.eciton.net. [2a00:1098:0:86:1000:23:0:2]) by smtp.gmail.com with ESMTPSA id f80sm4754604wmh.4.2017.08.10.03.14.36 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 10 Aug 2017 03:14:36 -0700 (PDT) Date: Thu, 10 Aug 2017 11:14:35 +0100 From: Leif Lindholm To: Ruiyu Ni Cc: "edk2-devel@lists.01.org" , Huajing Li , Ard Biesheuvel Message-ID: <20170810101435.pdgzhakln4vq3vwe@bivouac.eciton.net> References: <20170809074935.230172-1-ruiyu.ni@intel.com> <20170809074935.230172-2-ruiyu.ni@intel.com> MIME-Version: 1.0 In-Reply-To: User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [PATCH 1/2] ShellPkg/driver: Show Image Name in non-SFO mode X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Aug 2017 10:12:20 -0000 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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 wrote: > > From: Huajing Li > > > > Contributed-under: TianoCore Contribution Agreement 1.0 > > Signed-off-by: Huajing Li > > Reviewed-by: Ruiyu Ni > > --- > > .../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.
> > - Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.
> > + Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
> > 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 > > > > +#include > > +#include > > +#include > > + > > #include > > #include > > #include > > 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