]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
kbuild: linker script do not match C names unless LD_DEAD_CODE_DATA_ELIMINATION is...
authorNicholas Piggin <npiggin@gmail.com>
Wed, 26 Jul 2017 12:46:27 +0000 (22:46 +1000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 Aug 2017 08:26:38 +0000 (10:26 +0200)
commit3b278d7e8945ae1e44efc51307692018b7384654
tree4d024e5e59a53a37f29cec8e0e3fc4aed35adce5
parent51f49383a9249e5871241254f64228376a3e0af2
kbuild: linker script do not match C names unless LD_DEAD_CODE_DATA_ELIMINATION is configured

commit cb87481ee89dbd6609e227afbf64900fb4e5c930 upstream.

The .data and .bss sections were modified in the generic linker script to
pull in sections named .data.<C identifier>, which are generated by gcc with
-ffunction-sections and -fdata-sections options.

The problem with this pattern is it can also match section names that Linux
defines explicitly, e.g., .data.unlikely. This can cause Linux sections to
get moved into the wrong place.

The way to avoid this is to use ".." separators for explicit section names
(the dot character is valid in a section name but not a C identifier).
However currently there are sections which don't follow this rule, so for
now just disable the wild card by default.

Example: http://marc.info/?l=linux-arm-kernel&m=150106824024221&w=2

Fixes: b67067f1176df ("kbuild: allow archs to select link dead code/data elimination")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/asm-generic/vmlinux.lds.h