Hi, Please drop it, since Peter's patch fixes this problem better way. https://lkml.org/lkml/2018/9/6/403 Thank you, On Sat, 1 Sep 2018 21:38:13 +0900 Masami Hiramatsu <mhiramat@xxxxxxxxxx> wrote: > GCOV kernel embeds counters in the kernel for each line > and a part of that embed in __exit text. So we need to > keep the __exit text if CONFIG_GCOV_KERNEL=y. > > Without this patch, if we discards __exit text (e.g. > disables CONFIG_GENERIC_BUG, CONFIG_JUMP_LABEL and > CONFIG_SMP_ON_UP) but enables CONFIG_GCOV_PROFILE_FTRACE, > ld will error like below on ARM. > > `.text.exit' referenced in section `.ARM.exidx.text.exit' of > kernel/trace/trace_clock.o: defined in discarded section `.text.exit' > of kernel/trace/trace_clock.o > > To fix this issue, we keep __exit when CONFIG_GCOV_KERNEL=y. > > The reason why not depending CONFIG_GCOV_PROFILE_X, is > that the Documentation/dev-tools/gcov.rst says that the > developer can enable gcov profile on a file or a directory > by customizing Makefile, and that will only depend on > CONFIG_GCOV_KERNEL. > > Signed-off-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx> > Reported-by: Arnd Bergmann <arnd@xxxxxxxx> > --- > arch/arm/kernel/vmlinux.lds.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/arm/kernel/vmlinux.lds.h b/arch/arm/kernel/vmlinux.lds.h > index ae5fdff18406..baaacee9f5ce 100644 > --- a/arch/arm/kernel/vmlinux.lds.h > +++ b/arch/arm/kernel/vmlinux.lds.h > @@ -9,7 +9,8 @@ > #endif > > #if (defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK)) || \ > - defined(CONFIG_GENERIC_BUG) || defined(CONFIG_JUMP_LABEL) > + defined(CONFIG_GENERIC_BUG) || defined(CONFIG_JUMP_LABEL) || \ > + defined(CONFIG_GCOV_KERNEL) > #define ARM_EXIT_KEEP(x) x > #define ARM_EXIT_DISCARD(x) > #else > -- Masami Hiramatsu <mhiramat@xxxxxxxxxx>