From: Kees Cook <keescook@xxxxxxxxxxxx> Date: Wed, 6 Jan 2021 14:07:07 -0800 > 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? I could take a look and hunt it down. Could you please give some refs on what were the causes and solutions for the mentioned architectures? > Similarly for .gnu.attributes. What is generating that? (Or, more > specifically, why is it both being generated AND discarded?) On my setup, GNU Attributes consist of MIPS FP type (soft) and (if I'm correct) MIPS GNU Hash tables. > -Kees By the way. I've built the kernel with LLVM stack (and found several subjects for more patches) and, besides '.got', also got a fistful of '.data..compoundliteral*' symbols (drivers/mtd/nand/spi/, net/ipv6/ etc). Where should they be placed (rodata, rwdata, ...) or they are anomalies of some kind and should be fixed somehow? >> >> 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 Thanks, Al