All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-arm][PATCH] optee-os: Refresh GCC 10 patches
@ 2020-05-29 15:32 Joshua Watt
  2020-06-01 22:19 ` Jon Mason
  0 siblings, 1 reply; 2+ messages in thread
From: Joshua Watt @ 2020-05-29 15:32 UTC (permalink / raw)
  To: meta-arm; +Cc: Joshua Watt

The original fix for compiling with GCC 10 had to be reverted because it
failed on older versions. Upstream resolved this and re-instituted the
fix, so backport that patch series

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
---
 ...01-mk-compile.mk-fix-cc-option-macro.patch |  59 +++++++
 ...of-cc-option-in-core-arch-arm-arm.mk.patch | 158 ++++++++++++++++++
 ...able-outline-atomics-when-compiling.patch} |  19 ++-
 ...omp-cflags-sm-from-libgcc-lookup-com.patch |  59 +++++++
 ...of-cc-option-in-core-arch-arm-arm.mk.patch |  33 ++++
 ...w-setting-sysroot-for-libgcc-lookup.patch} |  18 +-
 .../recipes-security/optee/optee-os_git.bb    |   8 +-
 7 files changed, 342 insertions(+), 12 deletions(-)
 create mode 100644 meta-arm/recipes-security/optee/optee-os/0001-mk-compile.mk-fix-cc-option-macro.patch
 create mode 100644 meta-arm/recipes-security/optee/optee-os/0002-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch
 rename meta-arm/recipes-security/optee/optee-os/{0001-arm64-Disable-outline-atomics-when-compiling.patch => 0003-arm64-Disable-outline-atomics-when-compiling.patch} (64%)
 create mode 100644 meta-arm/recipes-security/optee/optee-os/0004-Cleanup-unused-comp-cflags-sm-from-libgcc-lookup-com.patch
 create mode 100644 meta-arm/recipes-security/optee/optee-os/0005-Fixup-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch
 rename meta-arm/recipes-security/optee/optee-os/{0001-allow-setting-sysroot-for-libgcc-lookup.patch => 0006-allow-setting-sysroot-for-libgcc-lookup.patch} (55%)

diff --git a/meta-arm/recipes-security/optee/optee-os/0001-mk-compile.mk-fix-cc-option-macro.patch b/meta-arm/recipes-security/optee/optee-os/0001-mk-compile.mk-fix-cc-option-macro.patch
new file mode 100644
index 0000000..52d8f9b
--- /dev/null
+++ b/meta-arm/recipes-security/optee/optee-os/0001-mk-compile.mk-fix-cc-option-macro.patch
@@ -0,0 +1,59 @@
+From 1ec374238f537eb0e3024d0db45f1fe3b5d471cc Mon Sep 17 00:00:00 2001
+From: Jerome Forissier <jerome@forissier.org>
+Date: Wed, 20 May 2020 10:50:00 +0200
+Subject: [PATCH 1/6] mk/compile.mk: fix cc-option macro
+
+There are (at least) three issues with the cc-option macro:
+
+1. When COMPILER=clang: when presented with a supported but unused
+   option, Clang emits a warning to stderr (and returns a success code
+   of 0). Therefore it is incorrect to check stderr to determine if an
+   option is supported or not; we should rely on the return status
+   instead.
+2. When COMPILER=clang, the compile command $(CC$(sm)) contains an
+   equal sign (e.g., clang --target=arm-linux-gnueabihf). This is not
+   expected in the cc-option macro, currently only flags are allowed to
+   potentially contain an equal sign. This messes with the caching of
+   the test result.
+3. The macro should not cache the return value when an option is not
+   supported. For instance, if we have:
+     A := $(call cc-option,--not-supported,a)
+     B := $(call cc-option,--not-supported,b)
+   ...we expect A to be "a" and B to be "b". The current implementation
+   returns "a" in both cases.
+
+This commit fixes the above problems.
+
+Fixes: 989ac108b0ef ("mk/compile.mk: add cc-option macro")
+Signed-off-by: Jerome Forissier <jerome@forissier.org>
+Upstream-Status: Accepted [https://github.com/OP-TEE/optee_os/pull/3891]
+Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
+---
+ mk/compile.mk | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/mk/compile.mk b/mk/compile.mk
+index ddeb408f..9868ddd1 100644
+--- a/mk/compile.mk
++++ b/mk/compile.mk
+@@ -17,12 +17,12 @@ objs		:=
+ # Disable all builtin rules
+ .SUFFIXES:
+ 
+-__cc-option = $(if $(shell $(CC$(sm)) $(1) -c -x c /dev/null -o /dev/null 2>&1 >/dev/null),$(2),$(1))
+-_cc-opt-cached-var-name = cached-cc-option$(subst =,~,$(strip $(1)))$(subst $(empty) $(empty),,$(CC$(sm)))
++_cc-option-supported = $(if $(shell $(CC$(sm)) $(1) -c -x c /dev/null -o /dev/null 2>/dev/null >/dev/null || echo "Not supported"),,1)
++_cc-opt-cached-var-name = $(subst =,~,$(strip cached-cc-option-$(1)-$(subst $(empty) $(empty),,$(CC$(sm)))))
+ define _cc-option
+-$(eval _cached := $(call _cc-opt-cached-var-name,$1))
+-$(eval $(_cached) := $(if $(filter $(origin $(_cached)),undefined),$(call __cc-option,$(1),$(2)),$($(_cached))))
+-$($(_cached))
++$(eval _var_name := $(call _cc-opt-cached-var-name,$1))
++$(eval $(_var_name) := $(if $(filter $(origin $(_var_name)),undefined),$(call _cc-option-supported,$(1)),$($(_var_name))))
++$(if $($(_var_name)),$(1),$(2))
+ endef
+ cc-option = $(strip $(call _cc-option,$(1),$(2)))
+ 
+-- 
+2.17.1
+
diff --git a/meta-arm/recipes-security/optee/optee-os/0002-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch b/meta-arm/recipes-security/optee/optee-os/0002-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch
new file mode 100644
index 0000000..83cc52c
--- /dev/null
+++ b/meta-arm/recipes-security/optee/optee-os/0002-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch
@@ -0,0 +1,158 @@
+From b45199897c1f956ca9da0f4e8d857a49787f5ff8 Mon Sep 17 00:00:00 2001
+From: Jerome Forissier <jerome@forissier.org>
+Date: Tue, 26 May 2020 15:21:00 +0200
+Subject: [PATCH 2/6] Allow use of cc-option in core/arch/arm/arm.mk
+
+It can be useful to call the cc-option macro when setting flags in
+core/arch/arm/arm.mk. Unfortunately cc-option is defined in
+mk/compile.mk which is too late to be useful (core/arch/arm/arm.mk is
+included by core/core.mk before mk/compile.mk).
+
+This commit addresses the issue by moving the definition of cc-option
+to its own file, mk/cc-option.mk, which is then included by
+core/arch/arm/arm.mk. There is a dependency on the compiler definitions
+(mk/gcc.mk or mk/clang.mk) and on $(arch-bit-$(sm)) so
+core/arch/arm/arm.mk is modified accordingly.
+
+Moving cc-option out of mk/compile.mk means that all non-core
+submodules would lose the definition unless they include
+mk/cc-option.mk; the TA dev kit is modified so that TAs can call
+cc-option from within their sub.mk files. As for other submodules, they
+are internal and do not use cc-options as of now so they are not
+modified.
+
+Signed-off-by: Jerome Forissier <jerome@forissier.org>
+Upstream-Status: Accepted [https://github.com/OP-TEE/optee_os/pull/3891]
+Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
+---
+ core/arch/arm/arm.mk | 14 ++++++++++++--
+ core/core.mk         |  4 ----
+ mk/cc-option.mk      |  9 +++++++++
+ mk/compile.mk        |  9 ---------
+ ta/mk/ta_dev_kit.mk  |  4 +++-
+ ta/ta.mk             |  1 +
+ 6 files changed, 25 insertions(+), 16 deletions(-)
+ create mode 100644 mk/cc-option.mk
+
+diff --git a/core/arch/arm/arm.mk b/core/arch/arm/arm.mk
+index a18eda3b..ad036c91 100644
+--- a/core/arch/arm/arm.mk
++++ b/core/arch/arm/arm.mk
+@@ -1,3 +1,15 @@
++# Setup compiler for this sub module
++# Note this file is included only from core.mk (with $(sm) == core)
++ifeq ($(CFG_ARM64_core),y)
++arch-bits-core := 64
++else
++arch-bits-core := 32
++endif
++COMPILER_core		?= $(COMPILER)
++include mk/$(COMPILER_core).mk
++
++include mk/cc-option.mk
++
+ CFG_LTC_OPTEE_THREAD ?= y
+ # Size of emulated TrustZone protected SRAM, 448 kB.
+ # Only applicable when paging is enabled.
+@@ -148,14 +160,12 @@ core-platform-cflags += -fpie
+ endif
+ 
+ ifeq ($(CFG_ARM64_core),y)
+-arch-bits-core := 64
+ core-platform-cppflags += $(arm64-platform-cppflags)
+ core-platform-cflags += $(arm64-platform-cflags)
+ core-platform-cflags += $(arm64-platform-cflags-generic)
+ core-platform-cflags += $(arm64-platform-cflags-no-hard-float)
+ core-platform-aflags += $(arm64-platform-aflags)
+ else
+-arch-bits-core := 32
+ core-platform-cppflags += $(arm32-platform-cppflags)
+ core-platform-cflags += $(arm32-platform-cflags)
+ core-platform-cflags += $(arm32-platform-cflags-no-hard-float)
+diff --git a/core/core.mk b/core/core.mk
+index 016f1489..1a330457 100644
+--- a/core/core.mk
++++ b/core/core.mk
+@@ -16,10 +16,6 @@ PLATFORM_FLAVOR_$(PLATFORM_FLAVOR) := y
+ $(eval $(call cfg-depends-all,CFG_PAGED_USER_TA,CFG_WITH_PAGER CFG_WITH_USER_TA))
+ include core/crypto.mk
+ 
+-# Setup compiler for this sub module
+-COMPILER_$(sm)		?= $(COMPILER)
+-include mk/$(COMPILER_$(sm)).mk
+-
+ cppflags$(sm)	+= -D__KERNEL__
+ 
+ cppflags$(sm)	+= -Icore/include
+diff --git a/mk/cc-option.mk b/mk/cc-option.mk
+new file mode 100644
+index 00000000..72f9a6f3
+--- /dev/null
++++ b/mk/cc-option.mk
+@@ -0,0 +1,9 @@
++_cc-option-supported = $(if $(shell $(CC$(sm)) $(1) -c -x c /dev/null -o /dev/null 2>/dev/null >/dev/null || echo "Not supported"),,1)
++_cc-opt-cached-var-name = $(subst =,~,$(strip cached-cc-option-$(1)-$(subst $(empty) $(empty),,$(CC$(sm)))))
++define _cc-option
++$(eval _var_name := $(call _cc-opt-cached-var-name,$1))
++$(eval $(_var_name) := $(if $(filter $(origin $(_var_name)),undefined),$(call _cc-option-supported,$(1)),$($(_var_name))))
++$(if $($(_var_name)),$(1),$(2))
++endef
++cc-option = $(strip $(call _cc-option,$(1),$(2)))
++
+diff --git a/mk/compile.mk b/mk/compile.mk
+index 9868ddd1..d2705025 100644
+--- a/mk/compile.mk
++++ b/mk/compile.mk
+@@ -17,15 +17,6 @@ objs		:=
+ # Disable all builtin rules
+ .SUFFIXES:
+ 
+-_cc-option-supported = $(if $(shell $(CC$(sm)) $(1) -c -x c /dev/null -o /dev/null 2>/dev/null >/dev/null || echo "Not supported"),,1)
+-_cc-opt-cached-var-name = $(subst =,~,$(strip cached-cc-option-$(1)-$(subst $(empty) $(empty),,$(CC$(sm)))))
+-define _cc-option
+-$(eval _var_name := $(call _cc-opt-cached-var-name,$1))
+-$(eval $(_var_name) := $(if $(filter $(origin $(_var_name)),undefined),$(call _cc-option-supported,$(1)),$($(_var_name))))
+-$(if $($(_var_name)),$(1),$(2))
+-endef
+-cc-option = $(strip $(call _cc-option,$(1),$(2)))
+-
+ comp-cflags$(sm) = -std=gnu99
+ comp-aflags$(sm) =
+ comp-cppflags$(sm) =
+diff --git a/ta/mk/ta_dev_kit.mk b/ta/mk/ta_dev_kit.mk
+index 90c6a455..596a6961 100644
+--- a/ta/mk/ta_dev_kit.mk
++++ b/ta/mk/ta_dev_kit.mk
+@@ -93,6 +93,9 @@ clean:
+ 	@$(cmd-echo-silent) '  CLEAN   $(O)'
+ 	${q}if [ -d "$(O)" ]; then $(RMDIR) $(O); fi
+ 
++include  $(ta-dev-kit-dir$(sm))/mk/$(COMPILER_$(sm)).mk
++include  $(ta-dev-kit-dir$(sm))/mk/cc-option.mk
++
+ subdirs = .
+ include  $(ta-dev-kit-dir$(sm))/mk/subdir.mk
+ 
+@@ -107,7 +110,6 @@ endif
+ endif
+ 
+ SCRIPTS_DIR := $(ta-dev-kit-dir)/scripts
+-include  $(ta-dev-kit-dir$(sm))/mk/$(COMPILER_$(sm)).mk
+ include  $(ta-dev-kit-dir$(sm))/mk/compile.mk
+ 
+ ifneq ($(user-ta-uuid),)
+diff --git a/ta/ta.mk b/ta/ta.mk
+index b961663a..75b7cfd9 100644
+--- a/ta/ta.mk
++++ b/ta/ta.mk
+@@ -157,6 +157,7 @@ $(foreach f, $(libfiles), \
+ 
+ # Copy .mk files
+ ta-mkfiles = mk/compile.mk mk/subdir.mk mk/gcc.mk mk/clang.mk mk/cleandirs.mk \
++	mk/cc-option.mk \
+ 	ta/arch/$(ARCH)/link.mk ta/arch/$(ARCH)/link_shlib.mk \
+ 	ta/mk/ta_dev_kit.mk
+ 
+-- 
+2.17.1
+
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/0003-arm64-Disable-outline-atomics-when-compiling.patch
similarity index 64%
rename from meta-arm/recipes-security/optee/optee-os/0001-arm64-Disable-outline-atomics-when-compiling.patch
rename to meta-arm/recipes-security/optee/optee-os/0003-arm64-Disable-outline-atomics-when-compiling.patch
index 086d433..71a7e91 100644
--- a/meta-arm/recipes-security/optee/optee-os/0001-arm64-Disable-outline-atomics-when-compiling.patch
+++ b/meta-arm/recipes-security/optee/optee-os/0003-arm64-Disable-outline-atomics-when-compiling.patch
@@ -1,11 +1,12 @@
-From f94d9558d9eae48e92ce8d651539b6cf69eb4394 Mon Sep 17 00:00:00 2001
+From 821cf4e6bd2764ebab8d413eeb1c3dbf673aeb78 Mon Sep 17 00:00:00 2001
 From: Joshua Watt <JPEWhacker@gmail.com>
 Date: Mon, 18 May 2020 20:00:00 -0500
-Subject: [PATCH] arm64: Disable outline-atomics when compiling
+Subject: [PATCH 3/6] 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.
+detection in libgcc using __getauxval(), which OP-TEE does not
+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.
 
@@ -18,21 +19,25 @@ Fixes linker errors like the following when compiling with GCC 10:
     recipe for target 'build/core/all_objs.o' failed
 
 Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
-Upstream-Status: Submitted [https://github.com/OP-TEE/optee_os/pull/3874]
+[jf: s/optee doesn't/OP-TEE does not/, replace ?= by := for immediate
+ evaluation]
+Reviewed-by: Jerome Forissier <jerome@forissier.org>
+Upstream-Status: Accepted [https://github.com/OP-TEE/optee_os/pull/3891]
+Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
 ---
  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
+index ad036c91..d8dd5206 100644
 --- a/core/arch/arm/arm.mk
 +++ b/core/arch/arm/arm.mk
-@@ -115,7 +115,7 @@ arm32-platform-aflags-no-hard-float ?=
+@@ -127,7 +127,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,)
++arm64-platform-cflags-generic := -mstrict-align $(call cc-option,-mno-outline-atomics,)
  
  ifeq ($(DEBUG),1)
  # For backwards compatibility
diff --git a/meta-arm/recipes-security/optee/optee-os/0004-Cleanup-unused-comp-cflags-sm-from-libgcc-lookup-com.patch b/meta-arm/recipes-security/optee/optee-os/0004-Cleanup-unused-comp-cflags-sm-from-libgcc-lookup-com.patch
new file mode 100644
index 0000000..95fd549
--- /dev/null
+++ b/meta-arm/recipes-security/optee/optee-os/0004-Cleanup-unused-comp-cflags-sm-from-libgcc-lookup-com.patch
@@ -0,0 +1,59 @@
+From a5dbec871f2acf01b5701a646584ad55d0ac1db7 Mon Sep 17 00:00:00 2001
+From: Jerome Forissier <jerome@forissier.org>
+Date: Tue, 26 May 2020 11:35:32 +0200
+Subject: [PATCH 4/6] Cleanup unused comp-cflags$(sm) from libgcc lookup
+ commands
+
+The compiler is not expected to need any flag from $(comp-cflags$(sm))
+to locate the compiler runtime libraries, and in fact this variable is
+always undefined at the point it is used. Indeed, comp-cflags$(sm) is
+set in mk/compile.mk, i.e., after mk/gcc.mk (or mk/clang.mk) has
+been included.
+
+Therefore, remove the useless flags.
+
+Signed-off-by: Jerome Forissier <jerome@forissier.org>
+Upstream-Status: Accepted [https://github.com/OP-TEE/optee_os/pull/3891]
+Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
+---
+ mk/clang.mk | 10 +++++++++-
+ mk/gcc.mk   |  2 +-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/mk/clang.mk b/mk/clang.mk
+index 28367e73..34034a9c 100644
+--- a/mk/clang.mk
++++ b/mk/clang.mk
+@@ -45,7 +45,15 @@ nostdinc$(sm)	:= -nostdinc -isystem $(shell $(CC$(sm)) \
+ comp-cflags-warns-clang := -Wno-language-extension-token \
+ 			 -Wno-gnu-zero-variadic-macro-arguments
+ 
+-libgcc$(sm)  	:=
++# Note, use the compiler runtime library (libclang_rt.builtins.*.a) instead of
++# libgcc for clang
++libgcc$(sm)	:= $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \
++			-rtlib=compiler-rt -print-libgcc-file-name 2> /dev/null)
++
++# Core ASLR relies on the executable being ready to run from its preferred load
++# address, because some symbols are used before the MMU is enabled and the
++# relocations are applied.
++ldflag-apply-dynamic-relocs := --apply-dynamic-relocs
+ 
+ # Define these to something to discover accidental use
+ CC		:= false
+diff --git a/mk/gcc.mk b/mk/gcc.mk
+index 1f2c5990..c53a23b1 100644
+--- a/mk/gcc.mk
++++ b/mk/gcc.mk
+@@ -12,7 +12,7 @@ nostdinc$(sm)	:= -nostdinc -isystem $(shell $(CC$(sm)) \
+ 			-print-file-name=include 2> /dev/null)
+ 
+ # Get location of libgcc from gcc
+-libgcc$(sm)  	:= $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) $(comp-cflags$(sm)) \
++libgcc$(sm)  	:= $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \
+ 			-print-libgcc-file-name 2> /dev/null)
+ 
+ # Define these to something to discover accidental use
+-- 
+2.17.1
+
diff --git a/meta-arm/recipes-security/optee/optee-os/0005-Fixup-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch b/meta-arm/recipes-security/optee/optee-os/0005-Fixup-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch
new file mode 100644
index 0000000..7c68cfd
--- /dev/null
+++ b/meta-arm/recipes-security/optee/optee-os/0005-Fixup-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch
@@ -0,0 +1,33 @@
+From 2fd7b1f22d2e03dac423adace92ab2214305b4ac Mon Sep 17 00:00:00 2001
+From: Jerome Forissier <jerome@forissier.org>
+Date: Tue, 26 May 2020 18:16:16 +0200
+Subject: [PATCH 5/6] [Fixup] Allow use of cc-option in core/arch/arm/arm.mk
+
+Fix a build error, let's see if Shippable is happy with this, I
+still do not understand why these lines are needed.
+
+Signed-off-by: Jerome Forissier <jerome@forissier.org>
+Upstream-Status: Accepted [https://github.com/OP-TEE/optee_os/pull/3891]
+Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
+---
+ core/core.mk | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/core/core.mk b/core/core.mk
+index 1a330457..d6af1d51 100644
+--- a/core/core.mk
++++ b/core/core.mk
+@@ -16,6 +16,10 @@ PLATFORM_FLAVOR_$(PLATFORM_FLAVOR) := y
+ $(eval $(call cfg-depends-all,CFG_PAGED_USER_TA,CFG_WITH_PAGER CFG_WITH_USER_TA))
+ include core/crypto.mk
+ 
++# Setup compiler for this sub module
++COMPILER_$(sm)         ?= $(COMPILER)
++include mk/$(COMPILER_$(sm)).mk
++
+ cppflags$(sm)	+= -D__KERNEL__
+ 
+ cppflags$(sm)	+= -Icore/include
+-- 
+2.17.1
+
diff --git a/meta-arm/recipes-security/optee/optee-os/0001-allow-setting-sysroot-for-libgcc-lookup.patch b/meta-arm/recipes-security/optee/optee-os/0006-allow-setting-sysroot-for-libgcc-lookup.patch
similarity index 55%
rename from meta-arm/recipes-security/optee/optee-os/0001-allow-setting-sysroot-for-libgcc-lookup.patch
rename to meta-arm/recipes-security/optee/optee-os/0006-allow-setting-sysroot-for-libgcc-lookup.patch
index 17127d0..d911d80 100644
--- a/meta-arm/recipes-security/optee/optee-os/0001-allow-setting-sysroot-for-libgcc-lookup.patch
+++ b/meta-arm/recipes-security/optee/optee-os/0006-allow-setting-sysroot-for-libgcc-lookup.patch
@@ -1,13 +1,25 @@
+From 030cd84cf0df1c27355ec02e0226317684897a97 Mon Sep 17 00:00:00 2001
+From: Joshua Watt <JPEWhacker@gmail.com>
+Date: Tue, 26 May 2020 14:38:02 -0500
+Subject: [PATCH 6/6] allow setting sysroot for libgcc lookup
+
+---
+ mk/gcc.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
 diff --git a/mk/gcc.mk b/mk/gcc.mk
-index fc38c4d..77b8d74 100644
+index c53a23b1..330b200a 100644
 --- a/mk/gcc.mk
 +++ b/mk/gcc.mk
 @@ -12,7 +12,7 @@ nostdinc$(sm)	:= -nostdinc -isystem $(shell $(CC$(sm)) \
  			-print-file-name=include 2> /dev/null)
  
  # Get location of libgcc from gcc
--libgcc$(sm)  	:= $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) $(comp-cflags$(sm)) \
-+libgcc$(sm)  	:= $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) $(comp-cflags$(sm)) \
+-libgcc$(sm)  	:= $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \
++libgcc$(sm)  	:= $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) \
  			-print-libgcc-file-name 2> /dev/null)
  
  # Define these to something to discover accidental use
+-- 
+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 6036bac..52c1155 100644
--- a/meta-arm/recipes-security/optee/optee-os_git.bb
+++ b/meta-arm/recipes-security/optee/optee-os_git.bb
@@ -15,8 +15,12 @@ DEPENDS = "python3-pycryptodome-native python3-pycryptodomex-native python3-pyel
 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 \
+    file://0001-mk-compile.mk-fix-cc-option-macro.patch \
+    file://0002-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch \
+    file://0003-arm64-Disable-outline-atomics-when-compiling.patch \
+    file://0004-Cleanup-unused-comp-cflags-sm-from-libgcc-lookup-com.patch \
+    file://0005-Fixup-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch \
+    file://0006-allow-setting-sysroot-for-libgcc-lookup.patch \
 "
 
 S = "${WORKDIR}/git"
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [meta-arm][PATCH] optee-os: Refresh GCC 10 patches
  2020-05-29 15:32 [meta-arm][PATCH] optee-os: Refresh GCC 10 patches Joshua Watt
@ 2020-06-01 22:19 ` Jon Mason
  0 siblings, 0 replies; 2+ messages in thread
From: Jon Mason @ 2020-06-01 22:19 UTC (permalink / raw)
  To: Joshua Watt; +Cc: meta-arm

On Fri, May 29, 2020 at 10:32:27AM -0500, Joshua Watt wrote:
> The original fix for compiling with GCC 10 had to be reverted because it
> failed on older versions. Upstream resolved this and re-instituted the
> fix, so backport that patch series

I don't have GCC10 to verify, but this compiles on my setup.
So...ship it.  Applied to the master branch.

Thanks,
Jon

> 
> Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> ---
>  ...01-mk-compile.mk-fix-cc-option-macro.patch |  59 +++++++
>  ...of-cc-option-in-core-arch-arm-arm.mk.patch | 158 ++++++++++++++++++
>  ...able-outline-atomics-when-compiling.patch} |  19 ++-
>  ...omp-cflags-sm-from-libgcc-lookup-com.patch |  59 +++++++
>  ...of-cc-option-in-core-arch-arm-arm.mk.patch |  33 ++++
>  ...w-setting-sysroot-for-libgcc-lookup.patch} |  18 +-
>  .../recipes-security/optee/optee-os_git.bb    |   8 +-
>  7 files changed, 342 insertions(+), 12 deletions(-)
>  create mode 100644 meta-arm/recipes-security/optee/optee-os/0001-mk-compile.mk-fix-cc-option-macro.patch
>  create mode 100644 meta-arm/recipes-security/optee/optee-os/0002-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch
>  rename meta-arm/recipes-security/optee/optee-os/{0001-arm64-Disable-outline-atomics-when-compiling.patch => 0003-arm64-Disable-outline-atomics-when-compiling.patch} (64%)
>  create mode 100644 meta-arm/recipes-security/optee/optee-os/0004-Cleanup-unused-comp-cflags-sm-from-libgcc-lookup-com.patch
>  create mode 100644 meta-arm/recipes-security/optee/optee-os/0005-Fixup-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch
>  rename meta-arm/recipes-security/optee/optee-os/{0001-allow-setting-sysroot-for-libgcc-lookup.patch => 0006-allow-setting-sysroot-for-libgcc-lookup.patch} (55%)
> 
> diff --git a/meta-arm/recipes-security/optee/optee-os/0001-mk-compile.mk-fix-cc-option-macro.patch b/meta-arm/recipes-security/optee/optee-os/0001-mk-compile.mk-fix-cc-option-macro.patch
> new file mode 100644
> index 0000000..52d8f9b
> --- /dev/null
> +++ b/meta-arm/recipes-security/optee/optee-os/0001-mk-compile.mk-fix-cc-option-macro.patch
> @@ -0,0 +1,59 @@
> +From 1ec374238f537eb0e3024d0db45f1fe3b5d471cc Mon Sep 17 00:00:00 2001
> +From: Jerome Forissier <jerome@forissier.org>
> +Date: Wed, 20 May 2020 10:50:00 +0200
> +Subject: [PATCH 1/6] mk/compile.mk: fix cc-option macro
> +
> +There are (at least) three issues with the cc-option macro:
> +
> +1. When COMPILER=clang: when presented with a supported but unused
> +   option, Clang emits a warning to stderr (and returns a success code
> +   of 0). Therefore it is incorrect to check stderr to determine if an
> +   option is supported or not; we should rely on the return status
> +   instead.
> +2. When COMPILER=clang, the compile command $(CC$(sm)) contains an
> +   equal sign (e.g., clang --target=arm-linux-gnueabihf). This is not
> +   expected in the cc-option macro, currently only flags are allowed to
> +   potentially contain an equal sign. This messes with the caching of
> +   the test result.
> +3. The macro should not cache the return value when an option is not
> +   supported. For instance, if we have:
> +     A := $(call cc-option,--not-supported,a)
> +     B := $(call cc-option,--not-supported,b)
> +   ...we expect A to be "a" and B to be "b". The current implementation
> +   returns "a" in both cases.
> +
> +This commit fixes the above problems.
> +
> +Fixes: 989ac108b0ef ("mk/compile.mk: add cc-option macro")
> +Signed-off-by: Jerome Forissier <jerome@forissier.org>
> +Upstream-Status: Accepted [https://github.com/OP-TEE/optee_os/pull/3891]
> +Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> +---
> + mk/compile.mk | 10 +++++-----
> + 1 file changed, 5 insertions(+), 5 deletions(-)
> +
> +diff --git a/mk/compile.mk b/mk/compile.mk
> +index ddeb408f..9868ddd1 100644
> +--- a/mk/compile.mk
> ++++ b/mk/compile.mk
> +@@ -17,12 +17,12 @@ objs		:=
> + # Disable all builtin rules
> + .SUFFIXES:
> + 
> +-__cc-option = $(if $(shell $(CC$(sm)) $(1) -c -x c /dev/null -o /dev/null 2>&1 >/dev/null),$(2),$(1))
> +-_cc-opt-cached-var-name = cached-cc-option$(subst =,~,$(strip $(1)))$(subst $(empty) $(empty),,$(CC$(sm)))
> ++_cc-option-supported = $(if $(shell $(CC$(sm)) $(1) -c -x c /dev/null -o /dev/null 2>/dev/null >/dev/null || echo "Not supported"),,1)
> ++_cc-opt-cached-var-name = $(subst =,~,$(strip cached-cc-option-$(1)-$(subst $(empty) $(empty),,$(CC$(sm)))))
> + define _cc-option
> +-$(eval _cached := $(call _cc-opt-cached-var-name,$1))
> +-$(eval $(_cached) := $(if $(filter $(origin $(_cached)),undefined),$(call __cc-option,$(1),$(2)),$($(_cached))))
> +-$($(_cached))
> ++$(eval _var_name := $(call _cc-opt-cached-var-name,$1))
> ++$(eval $(_var_name) := $(if $(filter $(origin $(_var_name)),undefined),$(call _cc-option-supported,$(1)),$($(_var_name))))
> ++$(if $($(_var_name)),$(1),$(2))
> + endef
> + cc-option = $(strip $(call _cc-option,$(1),$(2)))
> + 
> +-- 
> +2.17.1
> +
> diff --git a/meta-arm/recipes-security/optee/optee-os/0002-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch b/meta-arm/recipes-security/optee/optee-os/0002-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch
> new file mode 100644
> index 0000000..83cc52c
> --- /dev/null
> +++ b/meta-arm/recipes-security/optee/optee-os/0002-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch
> @@ -0,0 +1,158 @@
> +From b45199897c1f956ca9da0f4e8d857a49787f5ff8 Mon Sep 17 00:00:00 2001
> +From: Jerome Forissier <jerome@forissier.org>
> +Date: Tue, 26 May 2020 15:21:00 +0200
> +Subject: [PATCH 2/6] Allow use of cc-option in core/arch/arm/arm.mk
> +
> +It can be useful to call the cc-option macro when setting flags in
> +core/arch/arm/arm.mk. Unfortunately cc-option is defined in
> +mk/compile.mk which is too late to be useful (core/arch/arm/arm.mk is
> +included by core/core.mk before mk/compile.mk).
> +
> +This commit addresses the issue by moving the definition of cc-option
> +to its own file, mk/cc-option.mk, which is then included by
> +core/arch/arm/arm.mk. There is a dependency on the compiler definitions
> +(mk/gcc.mk or mk/clang.mk) and on $(arch-bit-$(sm)) so
> +core/arch/arm/arm.mk is modified accordingly.
> +
> +Moving cc-option out of mk/compile.mk means that all non-core
> +submodules would lose the definition unless they include
> +mk/cc-option.mk; the TA dev kit is modified so that TAs can call
> +cc-option from within their sub.mk files. As for other submodules, they
> +are internal and do not use cc-options as of now so they are not
> +modified.
> +
> +Signed-off-by: Jerome Forissier <jerome@forissier.org>
> +Upstream-Status: Accepted [https://github.com/OP-TEE/optee_os/pull/3891]
> +Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> +---
> + core/arch/arm/arm.mk | 14 ++++++++++++--
> + core/core.mk         |  4 ----
> + mk/cc-option.mk      |  9 +++++++++
> + mk/compile.mk        |  9 ---------
> + ta/mk/ta_dev_kit.mk  |  4 +++-
> + ta/ta.mk             |  1 +
> + 6 files changed, 25 insertions(+), 16 deletions(-)
> + create mode 100644 mk/cc-option.mk
> +
> +diff --git a/core/arch/arm/arm.mk b/core/arch/arm/arm.mk
> +index a18eda3b..ad036c91 100644
> +--- a/core/arch/arm/arm.mk
> ++++ b/core/arch/arm/arm.mk
> +@@ -1,3 +1,15 @@
> ++# Setup compiler for this sub module
> ++# Note this file is included only from core.mk (with $(sm) == core)
> ++ifeq ($(CFG_ARM64_core),y)
> ++arch-bits-core := 64
> ++else
> ++arch-bits-core := 32
> ++endif
> ++COMPILER_core		?= $(COMPILER)
> ++include mk/$(COMPILER_core).mk
> ++
> ++include mk/cc-option.mk
> ++
> + CFG_LTC_OPTEE_THREAD ?= y
> + # Size of emulated TrustZone protected SRAM, 448 kB.
> + # Only applicable when paging is enabled.
> +@@ -148,14 +160,12 @@ core-platform-cflags += -fpie
> + endif
> + 
> + ifeq ($(CFG_ARM64_core),y)
> +-arch-bits-core := 64
> + core-platform-cppflags += $(arm64-platform-cppflags)
> + core-platform-cflags += $(arm64-platform-cflags)
> + core-platform-cflags += $(arm64-platform-cflags-generic)
> + core-platform-cflags += $(arm64-platform-cflags-no-hard-float)
> + core-platform-aflags += $(arm64-platform-aflags)
> + else
> +-arch-bits-core := 32
> + core-platform-cppflags += $(arm32-platform-cppflags)
> + core-platform-cflags += $(arm32-platform-cflags)
> + core-platform-cflags += $(arm32-platform-cflags-no-hard-float)
> +diff --git a/core/core.mk b/core/core.mk
> +index 016f1489..1a330457 100644
> +--- a/core/core.mk
> ++++ b/core/core.mk
> +@@ -16,10 +16,6 @@ PLATFORM_FLAVOR_$(PLATFORM_FLAVOR) := y
> + $(eval $(call cfg-depends-all,CFG_PAGED_USER_TA,CFG_WITH_PAGER CFG_WITH_USER_TA))
> + include core/crypto.mk
> + 
> +-# Setup compiler for this sub module
> +-COMPILER_$(sm)		?= $(COMPILER)
> +-include mk/$(COMPILER_$(sm)).mk
> +-
> + cppflags$(sm)	+= -D__KERNEL__
> + 
> + cppflags$(sm)	+= -Icore/include
> +diff --git a/mk/cc-option.mk b/mk/cc-option.mk
> +new file mode 100644
> +index 00000000..72f9a6f3
> +--- /dev/null
> ++++ b/mk/cc-option.mk
> +@@ -0,0 +1,9 @@
> ++_cc-option-supported = $(if $(shell $(CC$(sm)) $(1) -c -x c /dev/null -o /dev/null 2>/dev/null >/dev/null || echo "Not supported"),,1)
> ++_cc-opt-cached-var-name = $(subst =,~,$(strip cached-cc-option-$(1)-$(subst $(empty) $(empty),,$(CC$(sm)))))
> ++define _cc-option
> ++$(eval _var_name := $(call _cc-opt-cached-var-name,$1))
> ++$(eval $(_var_name) := $(if $(filter $(origin $(_var_name)),undefined),$(call _cc-option-supported,$(1)),$($(_var_name))))
> ++$(if $($(_var_name)),$(1),$(2))
> ++endef
> ++cc-option = $(strip $(call _cc-option,$(1),$(2)))
> ++
> +diff --git a/mk/compile.mk b/mk/compile.mk
> +index 9868ddd1..d2705025 100644
> +--- a/mk/compile.mk
> ++++ b/mk/compile.mk
> +@@ -17,15 +17,6 @@ objs		:=
> + # Disable all builtin rules
> + .SUFFIXES:
> + 
> +-_cc-option-supported = $(if $(shell $(CC$(sm)) $(1) -c -x c /dev/null -o /dev/null 2>/dev/null >/dev/null || echo "Not supported"),,1)
> +-_cc-opt-cached-var-name = $(subst =,~,$(strip cached-cc-option-$(1)-$(subst $(empty) $(empty),,$(CC$(sm)))))
> +-define _cc-option
> +-$(eval _var_name := $(call _cc-opt-cached-var-name,$1))
> +-$(eval $(_var_name) := $(if $(filter $(origin $(_var_name)),undefined),$(call _cc-option-supported,$(1)),$($(_var_name))))
> +-$(if $($(_var_name)),$(1),$(2))
> +-endef
> +-cc-option = $(strip $(call _cc-option,$(1),$(2)))
> +-
> + comp-cflags$(sm) = -std=gnu99
> + comp-aflags$(sm) =
> + comp-cppflags$(sm) =
> +diff --git a/ta/mk/ta_dev_kit.mk b/ta/mk/ta_dev_kit.mk
> +index 90c6a455..596a6961 100644
> +--- a/ta/mk/ta_dev_kit.mk
> ++++ b/ta/mk/ta_dev_kit.mk
> +@@ -93,6 +93,9 @@ clean:
> + 	@$(cmd-echo-silent) '  CLEAN   $(O)'
> + 	${q}if [ -d "$(O)" ]; then $(RMDIR) $(O); fi
> + 
> ++include  $(ta-dev-kit-dir$(sm))/mk/$(COMPILER_$(sm)).mk
> ++include  $(ta-dev-kit-dir$(sm))/mk/cc-option.mk
> ++
> + subdirs = .
> + include  $(ta-dev-kit-dir$(sm))/mk/subdir.mk
> + 
> +@@ -107,7 +110,6 @@ endif
> + endif
> + 
> + SCRIPTS_DIR := $(ta-dev-kit-dir)/scripts
> +-include  $(ta-dev-kit-dir$(sm))/mk/$(COMPILER_$(sm)).mk
> + include  $(ta-dev-kit-dir$(sm))/mk/compile.mk
> + 
> + ifneq ($(user-ta-uuid),)
> +diff --git a/ta/ta.mk b/ta/ta.mk
> +index b961663a..75b7cfd9 100644
> +--- a/ta/ta.mk
> ++++ b/ta/ta.mk
> +@@ -157,6 +157,7 @@ $(foreach f, $(libfiles), \
> + 
> + # Copy .mk files
> + ta-mkfiles = mk/compile.mk mk/subdir.mk mk/gcc.mk mk/clang.mk mk/cleandirs.mk \
> ++	mk/cc-option.mk \
> + 	ta/arch/$(ARCH)/link.mk ta/arch/$(ARCH)/link_shlib.mk \
> + 	ta/mk/ta_dev_kit.mk
> + 
> +-- 
> +2.17.1
> +
> 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/0003-arm64-Disable-outline-atomics-when-compiling.patch
> similarity index 64%
> rename from meta-arm/recipes-security/optee/optee-os/0001-arm64-Disable-outline-atomics-when-compiling.patch
> rename to meta-arm/recipes-security/optee/optee-os/0003-arm64-Disable-outline-atomics-when-compiling.patch
> index 086d433..71a7e91 100644
> --- a/meta-arm/recipes-security/optee/optee-os/0001-arm64-Disable-outline-atomics-when-compiling.patch
> +++ b/meta-arm/recipes-security/optee/optee-os/0003-arm64-Disable-outline-atomics-when-compiling.patch
> @@ -1,11 +1,12 @@
> -From f94d9558d9eae48e92ce8d651539b6cf69eb4394 Mon Sep 17 00:00:00 2001
> +From 821cf4e6bd2764ebab8d413eeb1c3dbf673aeb78 Mon Sep 17 00:00:00 2001
>  From: Joshua Watt <JPEWhacker@gmail.com>
>  Date: Mon, 18 May 2020 20:00:00 -0500
> -Subject: [PATCH] arm64: Disable outline-atomics when compiling
> +Subject: [PATCH 3/6] 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.
> +detection in libgcc using __getauxval(), which OP-TEE does not
> +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.
>  
> @@ -18,21 +19,25 @@ Fixes linker errors like the following when compiling with GCC 10:
>      recipe for target 'build/core/all_objs.o' failed
>  
>  Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> -Upstream-Status: Submitted [https://github.com/OP-TEE/optee_os/pull/3874]
> +[jf: s/optee doesn't/OP-TEE does not/, replace ?= by := for immediate
> + evaluation]
> +Reviewed-by: Jerome Forissier <jerome@forissier.org>
> +Upstream-Status: Accepted [https://github.com/OP-TEE/optee_os/pull/3891]
> +Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
>  ---
>   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
> +index ad036c91..d8dd5206 100644
>  --- a/core/arch/arm/arm.mk
>  +++ b/core/arch/arm/arm.mk
> -@@ -115,7 +115,7 @@ arm32-platform-aflags-no-hard-float ?=
> +@@ -127,7 +127,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,)
> ++arm64-platform-cflags-generic := -mstrict-align $(call cc-option,-mno-outline-atomics,)
>   
>   ifeq ($(DEBUG),1)
>   # For backwards compatibility
> diff --git a/meta-arm/recipes-security/optee/optee-os/0004-Cleanup-unused-comp-cflags-sm-from-libgcc-lookup-com.patch b/meta-arm/recipes-security/optee/optee-os/0004-Cleanup-unused-comp-cflags-sm-from-libgcc-lookup-com.patch
> new file mode 100644
> index 0000000..95fd549
> --- /dev/null
> +++ b/meta-arm/recipes-security/optee/optee-os/0004-Cleanup-unused-comp-cflags-sm-from-libgcc-lookup-com.patch
> @@ -0,0 +1,59 @@
> +From a5dbec871f2acf01b5701a646584ad55d0ac1db7 Mon Sep 17 00:00:00 2001
> +From: Jerome Forissier <jerome@forissier.org>
> +Date: Tue, 26 May 2020 11:35:32 +0200
> +Subject: [PATCH 4/6] Cleanup unused comp-cflags$(sm) from libgcc lookup
> + commands
> +
> +The compiler is not expected to need any flag from $(comp-cflags$(sm))
> +to locate the compiler runtime libraries, and in fact this variable is
> +always undefined at the point it is used. Indeed, comp-cflags$(sm) is
> +set in mk/compile.mk, i.e., after mk/gcc.mk (or mk/clang.mk) has
> +been included.
> +
> +Therefore, remove the useless flags.
> +
> +Signed-off-by: Jerome Forissier <jerome@forissier.org>
> +Upstream-Status: Accepted [https://github.com/OP-TEE/optee_os/pull/3891]
> +Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> +---
> + mk/clang.mk | 10 +++++++++-
> + mk/gcc.mk   |  2 +-
> + 2 files changed, 10 insertions(+), 2 deletions(-)
> +
> +diff --git a/mk/clang.mk b/mk/clang.mk
> +index 28367e73..34034a9c 100644
> +--- a/mk/clang.mk
> ++++ b/mk/clang.mk
> +@@ -45,7 +45,15 @@ nostdinc$(sm)	:= -nostdinc -isystem $(shell $(CC$(sm)) \
> + comp-cflags-warns-clang := -Wno-language-extension-token \
> + 			 -Wno-gnu-zero-variadic-macro-arguments
> + 
> +-libgcc$(sm)  	:=
> ++# Note, use the compiler runtime library (libclang_rt.builtins.*.a) instead of
> ++# libgcc for clang
> ++libgcc$(sm)	:= $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \
> ++			-rtlib=compiler-rt -print-libgcc-file-name 2> /dev/null)
> ++
> ++# Core ASLR relies on the executable being ready to run from its preferred load
> ++# address, because some symbols are used before the MMU is enabled and the
> ++# relocations are applied.
> ++ldflag-apply-dynamic-relocs := --apply-dynamic-relocs
> + 
> + # Define these to something to discover accidental use
> + CC		:= false
> +diff --git a/mk/gcc.mk b/mk/gcc.mk
> +index 1f2c5990..c53a23b1 100644
> +--- a/mk/gcc.mk
> ++++ b/mk/gcc.mk
> +@@ -12,7 +12,7 @@ nostdinc$(sm)	:= -nostdinc -isystem $(shell $(CC$(sm)) \
> + 			-print-file-name=include 2> /dev/null)
> + 
> + # Get location of libgcc from gcc
> +-libgcc$(sm)  	:= $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) $(comp-cflags$(sm)) \
> ++libgcc$(sm)  	:= $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \
> + 			-print-libgcc-file-name 2> /dev/null)
> + 
> + # Define these to something to discover accidental use
> +-- 
> +2.17.1
> +
> diff --git a/meta-arm/recipes-security/optee/optee-os/0005-Fixup-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch b/meta-arm/recipes-security/optee/optee-os/0005-Fixup-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch
> new file mode 100644
> index 0000000..7c68cfd
> --- /dev/null
> +++ b/meta-arm/recipes-security/optee/optee-os/0005-Fixup-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch
> @@ -0,0 +1,33 @@
> +From 2fd7b1f22d2e03dac423adace92ab2214305b4ac Mon Sep 17 00:00:00 2001
> +From: Jerome Forissier <jerome@forissier.org>
> +Date: Tue, 26 May 2020 18:16:16 +0200
> +Subject: [PATCH 5/6] [Fixup] Allow use of cc-option in core/arch/arm/arm.mk
> +
> +Fix a build error, let's see if Shippable is happy with this, I
> +still do not understand why these lines are needed.
> +
> +Signed-off-by: Jerome Forissier <jerome@forissier.org>
> +Upstream-Status: Accepted [https://github.com/OP-TEE/optee_os/pull/3891]
> +Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> +---
> + core/core.mk | 4 ++++
> + 1 file changed, 4 insertions(+)
> +
> +diff --git a/core/core.mk b/core/core.mk
> +index 1a330457..d6af1d51 100644
> +--- a/core/core.mk
> ++++ b/core/core.mk
> +@@ -16,6 +16,10 @@ PLATFORM_FLAVOR_$(PLATFORM_FLAVOR) := y
> + $(eval $(call cfg-depends-all,CFG_PAGED_USER_TA,CFG_WITH_PAGER CFG_WITH_USER_TA))
> + include core/crypto.mk
> + 
> ++# Setup compiler for this sub module
> ++COMPILER_$(sm)         ?= $(COMPILER)
> ++include mk/$(COMPILER_$(sm)).mk
> ++
> + cppflags$(sm)	+= -D__KERNEL__
> + 
> + cppflags$(sm)	+= -Icore/include
> +-- 
> +2.17.1
> +
> diff --git a/meta-arm/recipes-security/optee/optee-os/0001-allow-setting-sysroot-for-libgcc-lookup.patch b/meta-arm/recipes-security/optee/optee-os/0006-allow-setting-sysroot-for-libgcc-lookup.patch
> similarity index 55%
> rename from meta-arm/recipes-security/optee/optee-os/0001-allow-setting-sysroot-for-libgcc-lookup.patch
> rename to meta-arm/recipes-security/optee/optee-os/0006-allow-setting-sysroot-for-libgcc-lookup.patch
> index 17127d0..d911d80 100644
> --- a/meta-arm/recipes-security/optee/optee-os/0001-allow-setting-sysroot-for-libgcc-lookup.patch
> +++ b/meta-arm/recipes-security/optee/optee-os/0006-allow-setting-sysroot-for-libgcc-lookup.patch
> @@ -1,13 +1,25 @@
> +From 030cd84cf0df1c27355ec02e0226317684897a97 Mon Sep 17 00:00:00 2001
> +From: Joshua Watt <JPEWhacker@gmail.com>
> +Date: Tue, 26 May 2020 14:38:02 -0500
> +Subject: [PATCH 6/6] allow setting sysroot for libgcc lookup
> +
> +---
> + mk/gcc.mk | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
>  diff --git a/mk/gcc.mk b/mk/gcc.mk
> -index fc38c4d..77b8d74 100644
> +index c53a23b1..330b200a 100644
>  --- a/mk/gcc.mk
>  +++ b/mk/gcc.mk
>  @@ -12,7 +12,7 @@ nostdinc$(sm)	:= -nostdinc -isystem $(shell $(CC$(sm)) \
>   			-print-file-name=include 2> /dev/null)
>   
>   # Get location of libgcc from gcc
> --libgcc$(sm)  	:= $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) $(comp-cflags$(sm)) \
> -+libgcc$(sm)  	:= $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) $(comp-cflags$(sm)) \
> +-libgcc$(sm)  	:= $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \
> ++libgcc$(sm)  	:= $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) \
>   			-print-libgcc-file-name 2> /dev/null)
>   
>   # Define these to something to discover accidental use
> +-- 
> +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 6036bac..52c1155 100644
> --- a/meta-arm/recipes-security/optee/optee-os_git.bb
> +++ b/meta-arm/recipes-security/optee/optee-os_git.bb
> @@ -15,8 +15,12 @@ DEPENDS = "python3-pycryptodome-native python3-pycryptodomex-native python3-pyel
>  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 \
> +    file://0001-mk-compile.mk-fix-cc-option-macro.patch \
> +    file://0002-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch \
> +    file://0003-arm64-Disable-outline-atomics-when-compiling.patch \
> +    file://0004-Cleanup-unused-comp-cflags-sm-from-libgcc-lookup-com.patch \
> +    file://0005-Fixup-Allow-use-of-cc-option-in-core-arch-arm-arm.mk.patch \
> +    file://0006-allow-setting-sysroot-for-libgcc-lookup.patch \
>  "
>  
>  S = "${WORKDIR}/git"
> -- 
> 2.17.1
> 

> 


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-06-01 22:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-05-29 15:32 [meta-arm][PATCH] optee-os: Refresh GCC 10 patches Joshua Watt
2020-06-01 22:19 ` Jon Mason

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.