On 2020-06-22, Kees Cook wrote:
For vmlinux linking, no architecture uses the .gnu.version* section, so remove it via the common DISCARDS macro in preparation for adding --orphan-handling=warn more widely. Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> --- include/asm-generic/vmlinux.lds.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index db600ef218d7..6fbe9ed10cdb 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -934,6 +934,7 @@ *(.discard) \ *(.discard.*) \ *(.modinfo) \ + *(.gnu.version*) \ } /** -- 2.25.1
I wonder what lead to .gnu.version{,_d,_r} sections in the kernel. tools/lib/bpf/libbpf_internal.h uses `.symver` directive and -Wl,--version-script, which may lead to .gnu.version{,_d}, but this only applies to the userspace libbpf.so libperf.so has a similar -Wl,--version-script. Linking vmlinux does not appear to use any symbol versioning.