]> code.ossystems Code Review - openembedded-core.git/commitdiff
ovmf: Disable lto to aid reproducibility
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 12 May 2021 21:28:23 +0000 (22:28 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 13 May 2021 10:33:47 +0000 (11:33 +0100)
lto tends to break reproducibility and makes ovmf near impossible to debug
reproducibility issues in. Disable it and supress the warnings that then
generates from Werror.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-core/ovmf/ovmf_git.bb

index 1fe01146d6b8dac666d1fbd86ba8aade478d87ed..ef5545bf7057e6b3330a9c1daa0755f9604b7a94 100644 (file)
@@ -102,15 +102,22 @@ fix_toolchain_append_class-native() {
     # to make ovmf-native reusable across distros.
     sed -i \
         -e 's#^\(DEFINE GCC.*DLINK.*FLAGS  *=\)#\1 -fuse-ld=bfd#' \
+        -e 's#-flto#-fno-lto#g' \
+        -e 's#-DUSING_LTO##g' \
         ${S}/BaseTools/Conf/tools_def.template
 }
 
+# We disable lto above since the results are not reproducible and make it hard to compare
+# binary build aretfacts to debug reproducibility problems.
+# Surprisingly, if you disable lto, you see compiler warnings which are fatal. We therefore
+# have to hack warnings overrides into GCC_PREFIX_MAP to allow it to build.
+
 # We want to pass ${DEBUG_PREFIX_MAP} to gcc commands and also pass in
 # --debug-prefix-map to nasm (we carry a patch to nasm for this). The
 # tools definitions are built by ovmf-native so we need to pass this in
 # at target build time when we know the right values.
 export NASM_PREFIX_MAP = "--debug-prefix-map=${WORKDIR}=/usr/src/debug/ovmf/${EXTENDPE}${PV}-${PR}"
-export GCC_PREFIX_MAP = "${DEBUG_PREFIX_MAP}"
+export GCC_PREFIX_MAP = "${DEBUG_PREFIX_MAP} -Wno-stringop-overflow -Wno-maybe-uninitialized"
 
 GCC_VER="$(${CC} -v 2>&1 | tail -n1 | awk '{print $3}')"