ovmf: avoid linking with gold

Linking with gold fails due to an internal error in gold. The ovmf
linker is gcc, which has a -fuse-ld=bfd option to choose the linker
which (for ovmf) is known to work.

Like the choice of the compilers, this is done in ovmf-native. To keep
that recipe independent of DISTRO_FEATURES, choosing bfd is done
unconditionally.

(From OE-Core rev: 7ee548b9f6f2893caf6b5ade8c892f2968d4ec47)

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Patrick Ohly 2017-03-29 14:52:06 +02:00 committed by Richard Purdie
parent b152870bf4
commit 8e7f76bd8a
1 changed files with 8 additions and 0 deletions

View File

@ -98,6 +98,14 @@ fix_toolchain_append_class-native() {
-e '/^LINKER/a LFLAGS += ${BUILD_LDFLAGS}\nCFLAGS += ${BUILD_CFLAGS}' \
${S}/BaseTools/Source/C/Makefiles/app.makefile \
${S}/BaseTools/Source/C/VfrCompile/GNUmakefile
# Linking with gold fails:
# internal error in do_layout, at ../../gold/object.cc:1821
# make: *** [.../OUTPUT/Facs.acpi] Error 1
# We intentionally hard-code the use of ld.bfd regardless of DISTRO_FEATURES
# to make ovmf-native reusable across distros.
sed -i \
-e 's#^\(DEFINE GCC.*DLINK.*FLAGS *=\)#\1 -fuse-ld=bfd#' \
${S}/BaseTools/Conf/tools_def.template
}
GCC_VER="$(${CC} -v 2>&1 | tail -n1 | awk '{print $3}')"