summaryrefslogtreecommitdiffstats
path: root/fs/cramfs/inode.c
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2023-02-22 00:03:31 +1100
committerMichael Ellerman <mpe@ellerman.id.au>2023-02-28 14:32:34 +1100
commitf8b2336f15f3bc30e37ce5c052cde5b6319bb6df (patch)
tree542e4a4262207e1d770062f064ba745a8b3f86c2 /fs/cramfs/inode.c
parentacd35dbab871d61021284ff06daccdc0ebb51e61 (diff)
downloadlinux-stable-f8b2336f15f3bc30e37ce5c052cde5b6319bb6df.tar.gz
linux-stable-f8b2336f15f3bc30e37ce5c052cde5b6319bb6df.tar.bz2
linux-stable-f8b2336f15f3bc30e37ce5c052cde5b6319bb6df.zip
powerpc: Avoid dead code/data elimination when using recordmcount
Although powerpc now has objtool mcount support, it's not enabled in all configurations due to dependencies. On those configurations, with some linkers (binutils 2.37 at least), it's still possible to hit the dreaded "recordmcount bug", eg. errors such as: CC kernel/kexec_file.o Cannot find symbol for section 10: .text.unlikely. kernel/kexec_file.o: failed make[1]: *** [scripts/Makefile.build:287 : kernel/kexec_file.o] Error 1 Those errors are much more prevalent when building with CONFIG_LD_DEAD_CODE_DATA_ELIMINATION, because it places every function in a separate section. CONFIG_LD_DEAD_CODE_DATA_ELIMINATION is marked experimental and is not enabled in any powerpc defconfigs or by major distros. Although it does have at least some users on 32-bit where kernel size tends to be more important. Avoid the build errors by blocking CONFIG_LD_DEAD_CODE_DATA_ELIMINATION when the build is using recordmcount, rather than objtool. In practice that means for 64-bit big endian builds, or 64-bit clang builds - both because they lack CONFIG_MPROFILE_KERNEL. On 32-bit objtool is always used, so CONFIG_LD_DEAD_CODE_DATA_ELIMINATION is still available there. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20230221130331.2714199-1-mpe@ellerman.id.au
Diffstat (limited to 'fs/cramfs/inode.c')
0 files changed, 0 insertions, 0 deletions