From: Bernhard Rosenkränzer <bernhard.rosenkraenzer....@huawei.com>

edk2 doesn't compile with gcc 12 - due to 2 legitimate bugs (trying to
use a file handle as if it were a string) and 2 new warnings in code
using -Werror (they need further investigation to determine if they're
legitimate bugs or false positives; in the mean time we can keep things
building by disabling the warnings for the particular lines triggering
them).

The proper fixes have already been submitted upstream at
https://github.com/tianocore/edk2/pull/2602
Will not submit the workarounds for the warnings upstream for now.

Signed-off-by: Bernhard Rosenkränzer <bernhard.rosenkraenzer....@huawei.com>
---
 ...nfusion-between-file-handle-and-name.patch | 44 +++++++++++++++++++
 ...orkaround-for-gcc-12-build-failure-2.patch | 33 ++++++++++++++
 ...-workaround-for-gcc-12-build-failure.patch | 28 ++++++++++++
 meta/recipes-core/ovmf/ovmf_git.bb            |  3 ++
 4 files changed, 108 insertions(+)
 create mode 100644 
meta/recipes-core/ovmf/ovmf/edk2-fix-confusion-between-file-handle-and-name.patch
 create mode 100644 
meta/recipes-core/ovmf/ovmf/edk2-workaround-for-gcc-12-build-failure-2.patch
 create mode 100644 
meta/recipes-core/ovmf/ovmf/edk2-workaround-for-gcc-12-build-failure.patch

diff --git 
a/meta/recipes-core/ovmf/ovmf/edk2-fix-confusion-between-file-handle-and-name.patch
 
b/meta/recipes-core/ovmf/ovmf/edk2-fix-confusion-between-file-handle-and-name.patch
new file mode 100644
index 0000000000..98023f93c2
--- /dev/null
+++ 
b/meta/recipes-core/ovmf/ovmf/edk2-fix-confusion-between-file-handle-and-name.patch
@@ -0,0 +1,44 @@
+From 74e7ad4e400ea3f942805e70df4d3ed6990759f3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bernhard=20Rosenkr=C3=A4nzer?= <b...@lindev.ch>
+Date: Tue, 8 Mar 2022 18:56:23 +0100
+Subject: [PATCH] GenFfs: Don't treat a file handle as a string
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The current code tries to print the file handle as a string on error.
+Do what it is meant to do instead: Print the file name.
+
+Upstream-Status: Submitted [https://github.com/tianocore/edk2/pull/2602]
+Signed-off-by: Bernhard Rosenkränzer <b...@lindev.ch>
+---
+ BaseTools/Source/C/GenFfs/GenFfs.c | 2 +-
+ BaseTools/Source/C/GenSec/GenSec.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/BaseTools/Source/C/GenFfs/GenFfs.c 
b/BaseTools/Source/C/GenFfs/GenFfs.c
+index 949025c33325..06e009e279ce 100644
+--- a/BaseTools/Source/C/GenFfs/GenFfs.c
++++ b/BaseTools/Source/C/GenFfs/GenFfs.c
+@@ -542,7 +542,7 @@ GetAlignmentFromFile(char *InFile, UINT32 *Alignment)
+   PeFileBuffer = (UINT8 *) malloc (PeFileSize);
+   if (PeFileBuffer == NULL) {
+     fclose (InFileHandle);
+-    Error(NULL, 0, 4001, "Resource", "memory cannot be allocated  of %s", 
InFileHandle);
++    Error(NULL, 0, 4001, "Resource", "memory cannot be allocated  of %s", 
InFile);
+     return EFI_OUT_OF_RESOURCES;
+   }
+   fread (PeFileBuffer, sizeof (UINT8), PeFileSize, InFileHandle);
+diff --git a/BaseTools/Source/C/GenSec/GenSec.c 
b/BaseTools/Source/C/GenSec/GenSec.c
+index d54a4f9e0a7d..1ad92de1d50e 100644
+--- a/BaseTools/Source/C/GenSec/GenSec.c
++++ b/BaseTools/Source/C/GenSec/GenSec.c
+@@ -1062,7 +1062,7 @@ GetAlignmentFromFile(char *InFile, UINT32 *Alignment)
+   PeFileBuffer = (UINT8 *) malloc (PeFileSize);
+   if (PeFileBuffer == NULL) {
+     fclose (InFileHandle);
+-    Error(NULL, 0, 4001, "Resource", "memory cannot be allocated  of %s", 
InFileHandle);
++    Error(NULL, 0, 4001, "Resource", "memory cannot be allocated  of %s", 
InFile);
+     return EFI_OUT_OF_RESOURCES;
+   }
+   fread (PeFileBuffer, sizeof (UINT8), PeFileSize, InFileHandle);
diff --git 
a/meta/recipes-core/ovmf/ovmf/edk2-workaround-for-gcc-12-build-failure-2.patch 
b/meta/recipes-core/ovmf/ovmf/edk2-workaround-for-gcc-12-build-failure-2.patch
new file mode 100644
index 0000000000..e7b7269d82
--- /dev/null
+++ 
b/meta/recipes-core/ovmf/ovmf/edk2-workaround-for-gcc-12-build-failure-2.patch
@@ -0,0 +1,33 @@
+From: Bernhard Rosenkränzer <bernhard.rosenkraenzer....@huawei.com>
+Date: Fri, 18 Mar 2022 17:28:47 +0100
+Subject: [PATCH] Disable gcc >= 12 stringop-overflow warning
+
+gcc 12 warns about a stringop-overflow with SetDevicePathEndNode
+potentially copying 4 bytes to an area of 1 byte.
+Since edk2 is built with -Werror, this breaks the build.
+
+It is not immedaitely clear whether this is a false warning or if
+SetDevicePathEndNode is being used incorrectly somewhere, but since
+the code seems to work, ignore the warning for the time being to
+keep things buildable.
+
+This should be investigated properly at some point.
+
+Upstream-Status: Inappropriate [Workaround to keep things going, should be 
fixed properly]
+Signed-off-by: Bernhard Rosenkränzer <bernhard.rosenkraenzer....@huawei.com>
+
+diff --git a/BaseTools/Source/C/DevicePath/DevicePathUtilities.c 
b/BaseTools/Source/C/DevicePath/DevicePathUtilities.c
+index 2ffefa8cee..32c02bdf82 100644
+--- a/BaseTools/Source/C/DevicePath/DevicePathUtilities.c
++++ b/BaseTools/Source/C/DevicePath/DevicePathUtilities.c
+@@ -318,7 +318,10 @@ SetDevicePathEndNode (
+   )
+ {
+   ASSERT (Node != NULL);
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wstringop-overflow"
+   memcpy (Node, &mUefiDevicePathLibEndDevicePath, sizeof 
(mUefiDevicePathLibEndDevicePath));
++#pragma GCC diagnostic pop
+ }
+ 
+ /**
diff --git 
a/meta/recipes-core/ovmf/ovmf/edk2-workaround-for-gcc-12-build-failure.patch 
b/meta/recipes-core/ovmf/ovmf/edk2-workaround-for-gcc-12-build-failure.patch
new file mode 100644
index 0000000000..048112e3fc
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/edk2-workaround-for-gcc-12-build-failure.patch
@@ -0,0 +1,28 @@
+From: Bernhard Rosenkränzer <bernhard.rosenkraenzer....@huawei.com>
+Date: Fri, 18 Mar 2022 17:28:47 +0100
+Subject: [PATCH] Disable gcc >= 12 dangling-pointer warning
+
+gcc 12 warns about a pointer into outStream being preserved after outStream
+goes out of scope. Since edk2 is built with -Werror, this breaks the build.
+
+This exact use happens to work with all compilers currently used,
+so ignore the warning for the time being to keep things buildable.
+
+Upstream-Status: Inappropriate [Workaround to keep things going, should be 
fixed properly]
+Signed-off-by: Bernhard Rosenkränzer <bernhard.rosenkraenzer....@huawei.com>
+
+diff --git a/BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c 
b/BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c
+index 4e9b499f8d..5f0e75eeda 100644
+--- a/BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c
++++ b/BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c
+@@ -2825,7 +2825,10 @@ SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle pp, BoolInt 
reInit,
+ 
+   nowPos64 = p->nowPos64;
+   RangeEnc_Init(&p->rc);
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wdangling-pointer"
+   p->rc.outStream = &outStream.vt;
++#pragma GCC diagnostic pop
+ 
+   if (desiredPackSize == 0)
+     return SZ_ERROR_OUTPUT_EOF;
diff --git a/meta/recipes-core/ovmf/ovmf_git.bb 
b/meta/recipes-core/ovmf/ovmf_git.bb
index b15d40eac8..5f255b46b2 100644
--- a/meta/recipes-core/ovmf/ovmf_git.bb
+++ b/meta/recipes-core/ovmf/ovmf_git.bb
@@ -21,6 +21,9 @@ SRC_URI = 
"gitsm://github.com/tianocore/edk2.git;branch=master;protocol=https \
            file://0003-ovmf-Update-to-latest.patch \
            file://0005-debug-prefix-map.patch \
            file://0006-reproducible.patch \
+           file://edk2-fix-confusion-between-file-handle-and-name.patch \
+           file://edk2-workaround-for-gcc-12-build-failure.patch \
+           file://edk2-workaround-for-gcc-12-build-failure-2.patch
            "
 
 PV = "edk2-stable202202"
-- 
2.35.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#163472): 
https://lists.openembedded.org/g/openembedded-core/message/163472
Mute This Topic: https://lists.openembedded.org/mt/89892121/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

  • [OE-core] [PATCH] re... Bernhard Rosenkränzer via lists . openembedded . org

Reply via email to