Re: [PATCH] arm64: vmlinux.lds.S: keep .entry.tramp.text section
From: Kees Cook
Date: Fri Feb 26 2021 - 16:00:02 EST
On Fri, Feb 26, 2021 at 03:03:39PM +0100, Arnd Bergmann wrote:
>
From: Arnd Bergmann <arnd@xxxxxxxx>
>
>
When building with CONFIG_LD_DEAD_CODE_DATA_ELIMINATION,
>
I sometimes see an assertion
>
>
ld.lld: error: Entry trampoline text too big
Heh, "too big" seems a weird report for having it discarded. :)
Any idea on this Fangrui?
( I see this is
https://github.com/ClangBuiltLinux/linux/issues/1311 )
>
>
This happens when any reference to the trampoline is discarded at link
>
time. Marking the section as KEEP() avoids the assertion, but I have
>
not figured out whether this is the correct solution for the underlying
>
problem.
>
>
Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
As a work-around, it seems fine to me.
Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx>
-Kees
>
---
>
arch/arm64/kernel/vmlinux.lds.S | 2 +-
>
1 file changed, 1 insertion(+), 1 deletion(-)
>
>
diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S
>
index 926cdb597a45..c5ee9d5842db 100644
>
--- a/arch/arm64/kernel/vmlinux.lds.S
>
+++ b/arch/arm64/kernel/vmlinux.lds.S
>
@@ -96,7 +96,7 @@ jiffies = jiffies_64;
>
#define TRAMP_TEXT \
>
. = ALIGN(PAGE_SIZE); \
>
__entry_tramp_text_start = .; \
>
- *(.entry.tramp.text) \
>
+ KEEP(*(.entry.tramp.text)) \
>
. = ALIGN(PAGE_SIZE); \
>
__entry_tramp_text_end = .;
>
#else
>
--
>
2.29.2
>
--
Kees Cook