On Thu, Jan 07, 2021 at 12:33:38PM +0000, Alexander Lobakin wrote:
This series hunts the problems discovered after manual enabling of ARCH_WANT_LD_ORPHAN_WARN. Notably:
- adds the missing PAGE_ALIGNED_DATA() section affecting VDSO placement (marked for stable);
- properly stops .eh_frame section generation.
Compile and runtime tested on MIPS32R2 CPS board with no issues using two different toolkits:
- Binutils 2.35.1, GCC 10.2.0;
- LLVM stack 11.0.0.
Since v3 [2]:
- fix the third patch as GNU stack emits .rel.dyn into VDSO for some reason if .cfi_sections is specified.
Since v2 [1]:
- stop discarding .eh_frame and just prevent it from generating (Kees);
- drop redundant sections assertions (Fangrui);
- place GOT table in .text instead of asserting as it's not empty when building with LLVM (Nathan);
- catch compound literals in generic definitions when building with LD_DEAD_CODE_DATA_ELIMINATION (Kees);
- collect two Reviewed-bys (Kees).
Since v1 [0]:
- catch .got entries too as LLD may produce it (Nathan);
- check for unwanted sections to be zero-sized instead of discarding (Fangrui).
[0] https://lore.kernel.org/linux-mips/20210104121729.46981-1-alobakin@pm.me [1] https://lore.kernel.org/linux-mips/20210106200713.31840-1-alobakin@pm.me [2] https://lore.kernel.org/linux-mips/20210107115120.281008-1-alobakin@pm.me
Alexander Lobakin (7): MIPS: vmlinux.lds.S: add missing PAGE_ALIGNED_DATA() section MIPS: vmlinux.lds.S: add ".gnu.attributes" to DISCARDS MIPS: properly stop .eh_frame generation MIPS: vmlinux.lds.S: catch bad .rel.dyn at link time MIPS: vmlinux.lds.S: explicitly declare .got table vmlinux.lds.h: catch compound literals into data and BSS MIPS: select ARCH_WANT_LD_ORPHAN_WARN
this breaks my builds:
LD vmlinux.o MODPOST vmlinux.symvers MODINFO modules.builtin.modinfo GEN modules.builtin LD .tmp_vmlinux.kallsyms1 mips64-linux-gnu-ld: Unexpected run-time relocations (.rel) detected!
$ mips64-linux-gnu-ld --version GNU ld version 2.27-3.fc24
$ mips64-linux-gnu-gcc --version mips64-linux-gnu-gcc (GCC) 6.1.1 20160621 (Red Hat Cross 6.1.1-2)
Thomas.