From nobody Sat May 4 11:50:23 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+55588+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55588+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1583480330; cv=none; d=zohomail.com; s=zohoarc; b=m9RWDuzCBqeYPfpYU7CzThXEK79kKVpofsCOVRH7ndSyLdVRDp0cW8vzhmRI/IJRhe+6pEofmqxkLBNO8mwYy1pslaekJ7SFbsGRvUOLjZPZtm1JiI0Lhp/Gf9DocVscLeuVlsUo4CS3p9OFQvQEw7SJJSQ97zUU8dCSsWA7JNI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583480330; h=Cc:Date:From:List-Id:List-Unsubscribe:Message-ID:Reply-To:Sender:Subject:To; bh=XlhroJjenGLpgiMHFsnuiENlrb7UOWxSp3P0rRzQrP8=; b=iiIy2OphUD9NRCvoroVbG8F09/BJB4cwTA1nB+sfdC485zSE/bLCi2OXLdMCTcL2ixX1lMv9tX5tCjriCm1Flf2aJj93uuPSDn3LzPN/pUztvZVeVK2D1g+cEHmpnx7mQIEr4f1zknfIMyvIO/jUXYbjjx8M5/k4spZp1hvFzLo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+55588+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1583480330024806.7870364955631; Thu, 5 Mar 2020 23:38:50 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 2wl5YY1788612xvfeF8Bn0By; Thu, 05 Mar 2020 23:38:49 -0800 X-Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by mx.groups.io with SMTP id smtpd.web10.9369.1583480328282690605 for ; Thu, 05 Mar 2020 23:38:48 -0800 X-Received: by mail-wr1-f65.google.com with SMTP id n15so1074625wrw.13 for ; Thu, 05 Mar 2020 23:38:48 -0800 (PST) X-Gm-Message-State: Lo2396xBWeQsyryLm6rJxHNsx1787277AA= X-Google-Smtp-Source: ADFU+vseU9JCnNPIcrCEedSjnpgpn+4MQhVW2rFXF9hvkwIg3x+wHDrj4Ih21VfY1P1nYN2XyW6b+g== X-Received: by 2002:adf:ee02:: with SMTP id y2mr2444166wrn.23.1583480326493; Thu, 05 Mar 2020 23:38:46 -0800 (PST) X-Received: from e123331-lin.home ([2a01:cb1d:112:6f00:816e:ff0d:fb69:f613]) by smtp.gmail.com with ESMTPSA id o5sm13182149wmb.8.2020.03.05.23.38.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Mar 2020 23:38:45 -0800 (PST) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: lersek@redhat.com, Ard Biesheuvel , "Feng, Bob C" Subject: [edk2-devel] [PATCH] OvmfPkg/QemuKernelLoaderFsDxe: drop tentative const object definition Date: Fri, 6 Mar 2020 08:38:41 +0100 Message-Id: <20200306073841.13528-1-ard.biesheuvel@linaro.org> Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,ard.biesheuvel@linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1583480329; bh=dEFASV0eJQlbjpvjT3Nts492fJWQ7Ra2oi7YcY7v6KE=; h=Cc:Date:From:Reply-To:Subject:To; b=IN6Oecv8zE3yiKvydLbWW/eHH1OcgUHROl21E9WmdAEr+wgfhwiRLfGl548JiW5gA3a A1O/KBvPHUvNMxL3/jk8w4L2lWhe7EGJN/AZxRmjzok9bVUxIB1pGDh6Ec7CEpMgUm4+b xGZUpSu/ww86zMyalyMA4cukjd+nffjwalk= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Bob reports that VS2017 chokes on a tentative definition of the const object 'mEfiFileProtocolTemplate', with the following error: OvmfPkg\QemuKernelLoaderFsDxe\QemuKernelLoaderFsDxe.c(130): error C2220: warning treated as error - no 'object' file generated OvmfPkg\QemuKernelLoaderFsDxe\QemuKernelLoaderFsDxe.c(130): warning C4132: 'mEfiFileProtocolTemplate': const object should be ini= tialized Let's turn the only function that relies on this tentative definition into a forward declaration itself, and move its definition after the normal definition of the object. That allows us to drop the tentative definition of the const object, and hopefully make VS2017 happy. Cc: "Feng, Bob C" Signed-off-by: Ard Biesheuvel Reviewed-by: Laszlo Ersek --- OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.c | 134 ++++++++++----= ------ 1 file changed, 70 insertions(+), 64 deletions(-) diff --git a/OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.c b/OvmfPk= g/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.c index 869549f164f0..fbcdf019bf56 100644 --- a/OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.c +++ b/OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.c @@ -123,13 +123,6 @@ typedef struct { #define STUB_FILE_FROM_FILE(FilePointer) \ CR (FilePointer, STUB_FILE, File, STUB_FILE_SIG) =20 -// -// Tentative definition of the file protocol template. The initializer -// (external definition) will be provided later. -// -STATIC CONST EFI_FILE_PROTOCOL mEfiFileProtocolTemplate; - - // // Protocol member functions for File. // @@ -181,65 +174,10 @@ StubFileOpen ( IN CHAR16 *FileName, IN UINT64 OpenMode, IN UINT64 Attributes - ) -{ - CONST STUB_FILE *StubFile; - UINTN BlobType; - STUB_FILE *NewStubFile; - + ); // - // We're read-only. + // Forward declaration. // - switch (OpenMode) { - case EFI_FILE_MODE_READ: - break; - - case EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE: - case EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE: - return EFI_WRITE_PROTECTED; - - default: - return EFI_INVALID_PARAMETER; - } - - // - // Only the root directory supports opening files in it. - // - StubFile =3D STUB_FILE_FROM_FILE (This); - if (StubFile->BlobType !=3D KernelBlobTypeMax) { - return EFI_UNSUPPORTED; - } - - // - // Locate the file. - // - for (BlobType =3D 0; BlobType < KernelBlobTypeMax; ++BlobType) { - if (StrCmp (FileName, mKernelBlob[BlobType].Name) =3D=3D 0) { - break; - } - } - if (BlobType =3D=3D KernelBlobTypeMax) { - return EFI_NOT_FOUND; - } - - // - // Found it. - // - NewStubFile =3D AllocatePool (sizeof *NewStubFile); - if (NewStubFile =3D=3D NULL) { - return EFI_OUT_OF_RESOURCES; - } - - NewStubFile->Signature =3D STUB_FILE_SIG; - NewStubFile->BlobType =3D (KERNEL_BLOB_TYPE)BlobType; - NewStubFile->Position =3D 0; - CopyMem (&NewStubFile->File, &mEfiFileProtocolTemplate, - sizeof mEfiFileProtocolTemplate); - *NewHandle =3D &NewStubFile->File; - - return EFI_SUCCESS; -} - =20 /** Closes a specified file handle. @@ -797,6 +735,74 @@ STATIC CONST EFI_FILE_PROTOCOL mEfiFileProtocolTemplat= e =3D { NULL // FlushEx, revision 2 }; =20 +STATIC +EFI_STATUS +EFIAPI +StubFileOpen ( + IN EFI_FILE_PROTOCOL *This, + OUT EFI_FILE_PROTOCOL **NewHandle, + IN CHAR16 *FileName, + IN UINT64 OpenMode, + IN UINT64 Attributes + ) +{ + CONST STUB_FILE *StubFile; + UINTN BlobType; + STUB_FILE *NewStubFile; + + // + // We're read-only. + // + switch (OpenMode) { + case EFI_FILE_MODE_READ: + break; + + case EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE: + case EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE: + return EFI_WRITE_PROTECTED; + + default: + return EFI_INVALID_PARAMETER; + } + + // + // Only the root directory supports opening files in it. + // + StubFile =3D STUB_FILE_FROM_FILE (This); + if (StubFile->BlobType !=3D KernelBlobTypeMax) { + return EFI_UNSUPPORTED; + } + + // + // Locate the file. + // + for (BlobType =3D 0; BlobType < KernelBlobTypeMax; ++BlobType) { + if (StrCmp (FileName, mKernelBlob[BlobType].Name) =3D=3D 0) { + break; + } + } + if (BlobType =3D=3D KernelBlobTypeMax) { + return EFI_NOT_FOUND; + } + + // + // Found it. + // + NewStubFile =3D AllocatePool (sizeof *NewStubFile); + if (NewStubFile =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + + NewStubFile->Signature =3D STUB_FILE_SIG; + NewStubFile->BlobType =3D (KERNEL_BLOB_TYPE)BlobType; + NewStubFile->Position =3D 0; + CopyMem (&NewStubFile->File, &mEfiFileProtocolTemplate, + sizeof mEfiFileProtocolTemplate); + *NewHandle =3D &NewStubFile->File; + + return EFI_SUCCESS; +} + =20 // // Protocol member functions for SimpleFileSystem. --=20 2.17.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55588): https://edk2.groups.io/g/devel/message/55588 Mute This Topic: https://groups.io/mt/71768124/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-