From 216ab1e1d8d74bc722d3e322b2460802e93a5df9 Mon Sep 17 00:00:00 2001 From: Yilun Lin Date: Wed, 12 Dec 2018 19:14:39 +0800 Subject: core/cortex-m: Support prevent chip memory region from GC. We would like to keep a symbol in a chip memory region from GC in link time. However __attribute__((used)) cannot fulfill the requirement in such situation. This CL adds a "name.keep" section to prevent all the symbols in this section in a chip memory region from GC. Also, we would like to support a non-NOLOAD section, which can load default value on runtime. BUG=b:120825336 TEST=make buildall -j BRANCH=none Change-Id: I76cf445f6b4c0b61c20182a1aaf5a44f962049ae Signed-off-by: Yilun Lin Reviewed-on: https://chromium-review.googlesource.com/1373949 Commit-Ready: ChromeOS CL Exonerator Bot Tested-by: Yilun Lin Reviewed-by: Nicolas Boichat --- include/link_defs.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'include/link_defs.h') diff --git a/include/link_defs.h b/include/link_defs.h index 61648baa0f..299cf54b75 100644 --- a/include/link_defs.h +++ b/include/link_defs.h @@ -111,8 +111,11 @@ extern const void *__data_end; /* Helper for special chip-specific memory sections */ #ifdef CONFIG_CHIP_MEMORY_REGIONS #define __SECTION(name) __attribute__((section("." STRINGIFY(name) ".50_auto"))) +#define __SECTION_KEEP(name) \ + __attribute__((section("." STRINGIFY(name) ".keep.50_auto"))) #else #define __SECTION(name) +#define __SECTION_KEEP(name) #endif /* CONFIG_MEMORY_REGIONS */ #ifdef CONFIG_CHIP_UNCACHED_REGION #define __uncached __SECTION(CONFIG_CHIP_UNCACHED_REGION) -- cgit v1.2.1