[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20191104090339.20941-1-ilie.halip@gmail.com>
Date: Mon, 4 Nov 2019 11:03:38 +0200
From: Ilie Halip <ilie.halip@...il.com>
To: x86@...nel.org
Cc: Nick Desaulniers <ndesaulniers@...gle.com>,
Ilie Halip <ilie.halip@...il.com>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
"H. Peter Anvin" <hpa@...or.com>, linux-kernel@...r.kernel.org,
clang-built-linux@...glegroups.com
Subject: [PATCH] x86/boot: explicitly place .eh_frame after .rodata
When using GCC as compiler and LLVM's lld as linker, linking
setup.elf fails:
LD arch/x86/boot/setup.elf
ld.lld: error: init sections too big!
This happens because ld.lld has different rules for placing
orphan sections (i.e. sections not mentioned in a linker script)
compared to ld.bfd.
Particularly, in this case, the merged .eh_frame section is
placed before __end_init, which triggers an assert in the script.
Explicitly place this section after .rodata, in accordance with
ld.bfd's behavior.
Signed-off-by: Ilie Halip <ilie.halip@...il.com>
Link: https://github.com/ClangBuiltLinux/linux/issues/760
---
arch/x86/boot/setup.ld | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/x86/boot/setup.ld b/arch/x86/boot/setup.ld
index 0149e41d42c2..4e02eab11b59 100644
--- a/arch/x86/boot/setup.ld
+++ b/arch/x86/boot/setup.ld
@@ -25,6 +25,7 @@ SECTIONS
. = ALIGN(16);
.rodata : { *(.rodata*) }
+ .eh_frame : { *(.eh_frame*) }
.videocards : {
video_cards = .;
--
2.17.1
Powered by blists - more mailing lists