Re: [PATCH] recordmcount: Support empty section from recent binutils
flat view
From: Christophe Leroy <hidden>
Date: 2022-03-30 09:51:38
Also in:
lkml
Le 29/03/2022 à 00:31, Joel Stanley a écrit :
On Mon, 29 Nov 2021 at 22:43, Christophe Leroy [off-list ref] wrote:quoted
Le 29/11/2021 à 18:43, Steven Rostedt a écrit :quoted
On Fri, 26 Nov 2021 08:43:23 +0000 LEROY Christophe [off-list ref] wrote:quoted
Le 24/11/2021 à 15:43, Christophe Leroy a écrit :quoted
Looks like recent binutils (2.36 and over ?) may empty some section, leading to failure like: Cannot find symbol for section 11: .text.unlikely. kernel/kexec_file.o: failed make[1]: *** [scripts/Makefile.build:287: kernel/kexec_file.o] Error 1 In order to avoid that, ensure that the section has a content before returning it's name in has_rel_mcount().This patch doesn't work, on PPC32 I get the following message with this patch applied: [ 0.000000] ftrace: No functions to be traced? Without the patch I get: [ 0.000000] ftrace: allocating 22381 entries in 66 pages [ 0.000000] ftrace: allocated 66 pages with 2 groupsBecause of this report, I have not applied this patch (even though I was about to push it to Linus). I'm pulling it from my queue until this gets resolved.I have no idea on how to fix that for the moment. With GCC 10 (binutils 2.36) an objdump -x on kernel/kexec_file.o gives: 0000000000000000 l d .text.unlikely 0000000000000000 .text.unlikely 0000000000000000 w F .text.unlikely 0000000000000038 .arch_kexec_apply_relocations_add 0000000000000038 w F .text.unlikely 0000000000000038 .arch_kexec_apply_relocations With GCC 11 (binutils 2.37) the same gives: 0000000000000000 w F .text.unlikely 0000000000000038 .arch_kexec_apply_relocations_add 0000000000000038 w F .text.unlikely 0000000000000038 .arch_kexec_apply_relocations The problem is that recordmcount drops weak symbols, and it doesn't find any non-weak symbol in .text.unlikely Explication given at https://elixir.bootlin.com/linux/v5.16-rc2/source/scripts/recordmcount.h#L506 I have no idea on what to do.Did you end up finding a solution for this issue?
Not really, my solution was to switch to the kernel compiler at https://mirrors.edge.kernel.org/pub/tools/crosstool/ which embeds binutils 2.36 But it looks like using objtool instead of recordmcount doesn't exhibit the problem. https://patchwork.ozlabs.org/project/linuxppc-dev/patch/20220318105140.43914-4-sv@linux.ibm.com/ Christophe