From f4206ef4d475e8ef87ba41ee02a3f1bff73bbe82 Mon Sep 17 00:00:00 2001 From: Joshua Watt Date: Tue, 19 May 2020 09:51:15 -0500 Subject: [PATCH] optee-os: Fix compile with GCC 10 Adds a patch to fix compiles with GCC 10 due to the way that libgcc detects LSE support using __getauxval(). V2: Incorporate patch changes suggested by upstream Signed-off-by: Joshua Watt Signed-off-by: Jon Mason --- ...sable-outline-atomics-when-compiling.patch | 41 +++++++++++++++++++ .../recipes-security/optee/optee-os_git.bb | 1 + 2 files changed, 42 insertions(+) create mode 100644 meta-arm/recipes-security/optee/optee-os/0001-arm64-Disable-outline-atomics-when-compiling.patch diff --git a/meta-arm/recipes-security/optee/optee-os/0001-arm64-Disable-outline-atomics-when-compiling.patch b/meta-arm/recipes-security/optee/optee-os/0001-arm64-Disable-outline-atomics-when-compiling.patch new file mode 100644 index 00000000..086d4333 --- /dev/null +++ b/meta-arm/recipes-security/optee/optee-os/0001-arm64-Disable-outline-atomics-when-compiling.patch @@ -0,0 +1,41 @@ +From f94d9558d9eae48e92ce8d651539b6cf69eb4394 Mon Sep 17 00:00:00 2001 +From: Joshua Watt +Date: Mon, 18 May 2020 20:00:00 -0500 +Subject: [PATCH] arm64: Disable outline-atomics when compiling + +Disables the automatic detection of LSE (Large System Extension) +instructions when compiling AArch64 code. GCC 10 implements this +detection in libgcc using __getauxval(), which optee doesn't implement. +This requires that the proper -mcpu is passed to GCC so that the code +can be correctly compiled to use either LSE or load-store-exclusive. + +Fixes linker errors like the following when compiling with GCC 10: + + aarch64-linux-ld.bfd: libgcc.a(lse-init.o): + in function `init_have_lse_atomics': + lse-init.c:44: undefined reference to `__getauxval' + core/arch/arm/kernel/link.mk:38: + recipe for target 'build/core/all_objs.o' failed + +Signed-off-by: Joshua Watt +Upstream-Status: Submitted [https://github.com/OP-TEE/optee_os/pull/3874] +--- + core/arch/arm/arm.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/core/arch/arm/arm.mk b/core/arch/arm/arm.mk +index a18eda3b..07069c66 100644 +--- a/core/arch/arm/arm.mk ++++ b/core/arch/arm/arm.mk +@@ -115,7 +115,7 @@ arm32-platform-aflags-no-hard-float ?= + + arm64-platform-cflags-no-hard-float ?= -mgeneral-regs-only + arm64-platform-cflags-hard-float ?= +-arm64-platform-cflags-generic ?= -mstrict-align ++arm64-platform-cflags-generic ?= -mstrict-align $(call cc-option,-mno-outline-atomics,) + + ifeq ($(DEBUG),1) + # For backwards compatibility +-- +2.17.1 + diff --git a/meta-arm/recipes-security/optee/optee-os_git.bb b/meta-arm/recipes-security/optee/optee-os_git.bb index c9847b57..eced3622 100644 --- a/meta-arm/recipes-security/optee/optee-os_git.bb +++ b/meta-arm/recipes-security/optee/optee-os_git.bb @@ -16,6 +16,7 @@ SRCREV = "023e33656e2c9557ce50ad63a98b2e2c9b51c118" SRC_URI = " \ git://github.com/OP-TEE/optee_os.git \ file://0001-allow-setting-sysroot-for-libgcc-lookup.patch \ + file://0001-arm64-Disable-outline-atomics-when-compiling.patch \ " S = "${WORKDIR}/git"