Messages in this thread | | | From | Nick Desaulniers <> | Date | Tue, 26 Nov 2019 09:16:08 -0800 | Subject | Re: [PATCH v3] x86/boot: discard .eh_frame sections |
| |
On Tue, Nov 26, 2019 at 6:46 AM Ilie Halip <ilie.halip@gmail.com> wrote: > > 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 GCC generates .eh_frame sections for most > of the files in that directory, then ld.lld places the merged > section before __end_init, triggering an assert in the linker > script. > > Fix this by discarding the .eh_frame sections, as suggested by > Boris. The kernel proper linker script discards them too. > > Signed-off-by: Ilie Halip <ilie.halip@gmail.com> > Link: https://lore.kernel.org/lkml/20191118175223.GM6363@zn.tnic/ > Link: https://github.com/ClangBuiltLinux/linux/issues/760 > Suggested-by: Borislav Petkov <bp@alien8.de>
Ilie, thanks for following up with a v3. Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
> --- > > Changes in V3: > * discard .eh_frame instead of placing it after .rodata > > Changes in V2: > * removed wildcard for input sections (.eh_frame* -> .eh_frame) > > arch/x86/boot/setup.ld | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/boot/setup.ld b/arch/x86/boot/setup.ld > index 0149e41d42c2..3da1c37c6dd5 100644 > --- a/arch/x86/boot/setup.ld > +++ b/arch/x86/boot/setup.ld > @@ -51,7 +51,10 @@ SECTIONS > . = ALIGN(16); > _end = .; > > - /DISCARD/ : { *(.note*) } > + /DISCARD/ : { > + *(.eh_frame) > + *(.note*) > + } > > /* > * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility: > -- > 2.17.1 >
-- Thanks, ~Nick Desaulniers
| |