LLVM stack generates GOT table when building the kernel:

ld.lld: warning: <internal>:(.got) is being placed in '.got'

According to the debug assertions, it's not zero-sized and thus can't
be handled the way it's done for x86.
Also use the ARM64 path here and place it at the end of .text section.

Reported-by: Nathan Chancellor <natechancel...@gmail.com>
Signed-off-by: Alexander Lobakin <aloba...@pm.me>
Reviewed-by: Kees Cook <keesc...@chromium.org>
Reviewed-by: Nathan Chancellor <natechancel...@gmail.com>
---
 arch/mips/kernel/vmlinux.lds.S | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
index 70bba1ff08da..c1c345be04ff 100644
--- a/arch/mips/kernel/vmlinux.lds.S
+++ b/arch/mips/kernel/vmlinux.lds.S
@@ -68,6 +68,8 @@ SECTIONS
                SOFTIRQENTRY_TEXT
                *(.fixup)
                *(.gnu.warning)
+               . = ALIGN(16);
+               *(.got) /* Global offset table */
        } :text = 0
        _etext = .;     /* End of text section */
 
-- 
2.30.0


Reply via email to