Message ID | 20200902025347.2504702-5-keescook@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Warn on orphan section placement | expand |
On Tue, Sep 01, 2020 at 07:53:46PM -0700, Kees Cook wrote: > We don't want to depend on the linker's orphan section placement > heuristics as these can vary between linkers, and may change between > versions. All sections need to be explicitly handled in the linker script. > > Now that all sections are explicitly handled, enable orphan section > warnings. > > Signed-off-by: Kees Cook <keescook@chromium.org> > --- > arch/x86/Makefile | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/arch/x86/Makefile b/arch/x86/Makefile > index 4346ffb2e39f..154259f18b8b 100644 > --- a/arch/x86/Makefile > +++ b/arch/x86/Makefile > @@ -209,6 +209,10 @@ ifdef CONFIG_X86_64 > LDFLAGS_vmlinux += -z max-page-size=0x200000 > endif > > +# We never want expected sections to be placed heuristically by the > +# linker. All sections should be explicitly named in the linker script. > +LDFLAGS_vmlinux += $(call ld-option, --orphan-handling=warn) > + > archscripts: scripts_basic > $(Q)$(MAKE) $(build)=arch/x86/tools relocs > > -- > 2.25.1 > With LLVM=1 and GCOV_KERNEL/GCOV_PROFILE_ALL enabled, there are .eh_frame sections created. I see that KASAN and KCSAN currently discard them. Does GCOV actually need them or should it also discard? Thanks.
On Sat, Sep 05, 2020 at 06:48:35PM -0400, Arvind Sankar wrote: > On Tue, Sep 01, 2020 at 07:53:46PM -0700, Kees Cook wrote: > > We don't want to depend on the linker's orphan section placement > > heuristics as these can vary between linkers, and may change between > > versions. All sections need to be explicitly handled in the linker script. > > > > Now that all sections are explicitly handled, enable orphan section > > warnings. > > > > Signed-off-by: Kees Cook <keescook@chromium.org> > > --- > > arch/x86/Makefile | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/arch/x86/Makefile b/arch/x86/Makefile > > index 4346ffb2e39f..154259f18b8b 100644 > > --- a/arch/x86/Makefile > > +++ b/arch/x86/Makefile > > @@ -209,6 +209,10 @@ ifdef CONFIG_X86_64 > > LDFLAGS_vmlinux += -z max-page-size=0x200000 > > endif > > > > +# We never want expected sections to be placed heuristically by the > > +# linker. All sections should be explicitly named in the linker script. > > +LDFLAGS_vmlinux += $(call ld-option, --orphan-handling=warn) > > + > > archscripts: scripts_basic > > $(Q)$(MAKE) $(build)=arch/x86/tools relocs > > > > -- > > 2.25.1 > > > > With LLVM=1 and GCOV_KERNEL/GCOV_PROFILE_ALL enabled, there are > .eh_frame sections created. I see that KASAN and KCSAN currently discard > them. Does GCOV actually need them or should it also discard? > > Thanks. Also, with LLD 10.0.1 which is going to be the minimum supported version, the relocation sections etc still generate warnings. ld.lld: warning: arch/x86/video/built-in.a(fbdev.o):(.rela.orc_unwind_ip) is being placed in '.rela.orc_unwind_ip' ld.lld: warning: .tmp_vmlinux.kallsyms2.o:(.rela.rodata) is being placed in '.rela.rodata' ld.lld: warning: <internal>:(.bss.rel.ro) is being placed in '.bss.rel.ro' ld.lld: warning: <internal>:(.eh_frame) is being placed in '.eh_frame' ld.lld: warning: <internal>:(.symtab_shndx) is being placed in '.symtab_shndx'
diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 4346ffb2e39f..154259f18b8b 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -209,6 +209,10 @@ ifdef CONFIG_X86_64 LDFLAGS_vmlinux += -z max-page-size=0x200000 endif +# We never want expected sections to be placed heuristically by the +# linker. All sections should be explicitly named in the linker script. +LDFLAGS_vmlinux += $(call ld-option, --orphan-handling=warn) + archscripts: scripts_basic $(Q)$(MAKE) $(build)=arch/x86/tools relocs
We don't want to depend on the linker's orphan section placement heuristics as these can vary between linkers, and may change between versions. All sections need to be explicitly handled in the linker script. Now that all sections are explicitly handled, enable orphan section warnings. Signed-off-by: Kees Cook <keescook@chromium.org> --- arch/x86/Makefile | 4 ++++ 1 file changed, 4 insertions(+)