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] -=-=-=-=-=-=-=-=-=-=-=-