On Wed, Jan 6, 2021 at 2:07 PM Kees Cook <keescook@xxxxxxxxxxxx> wrote: > > On Wed, Jan 06, 2021 at 08:08:19PM +0000, Alexander Lobakin wrote: > > Discard GNU attributes at link time as kernel doesn't use it at all. > > Solves a dozen of the following ld warnings (one per every file): > > > > mips-alpine-linux-musl-ld: warning: orphan section `.gnu.attributes' > > from `arch/mips/kernel/head.o' being placed in section > > `.gnu.attributes' > > mips-alpine-linux-musl-ld: warning: orphan section `.gnu.attributes' > > from `init/main.o' being placed in section `.gnu.attributes' > > > > Misc: sort DISCARDS section entries alphabetically. > > Hmm, I wonder what is causing the appearance of .eh_frame? With help I > tracked down all the causes of this on x86, arm, and arm64, so that's > why it's not in the asm-generic DISCARDS section. I suspect this could > be cleaned up for mips too? On x86, 003602ad5516e59940de42e44c8d8033387bb363 "x86/*/Makefile: Use -fno-asynchronous-unwind-tables to suppress .eh_frame sections" noticed that some Makefiles redefined KBUILD_CFLAGS and dropped -fno-asynchronous-unwind-tables. Maybe mips has similar issues. > Similarly for .gnu.attributes. What is generating that? (Or, more > specifically, why is it both being generated AND discarded?) > > -Kees gcc/config/mips/mips.c https://github.com/gcc-mirror/gcc/blob/master/gcc/config/mips/mips.c#L9965 .gnu_attribute 4, 0 does not produce .gnu.attributes (SHT_GNU_ATTRIBUTES) but there are likely code paths that a non-zero value is used... So .gnu_attributes is likely needed to be excluded. > > > > Signed-off-by: Alexander Lobakin <alobakin@xxxxx> > > --- > > arch/mips/kernel/vmlinux.lds.S | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S > > index 83e27a181206..5d6563970ab2 100644 > > --- a/arch/mips/kernel/vmlinux.lds.S > > +++ b/arch/mips/kernel/vmlinux.lds.S > > @@ -221,9 +221,10 @@ SECTIONS > > /* ABI crap starts here */ > > *(.MIPS.abiflags) > > *(.MIPS.options) > > + *(.eh_frame) > > + *(.gnu.attributes) > > *(.options) > > *(.pdr) > > *(.reginfo) > > - *(.eh_frame) > > } > > } > > -- > > 2.30.0 > > > > > > -- > Kees Cook -- 宋方睿