Re: [RFC][PATCH] ftrace,objtool: PC32 based __mcount_loc

From: Peter Zijlstra
Date: Fri Jun 24 2022 - 03:17:30 EST


On Wed, Jun 22, 2022 at 10:50:18AM -0400, Steven Rostedt wrote:
> On Fri, 17 Jun 2022 13:24:53 +0200
> Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>
> > Hi,
> >
> > I recently noticed that __mcount_loc is 64bit wide, containing absolute
> > addresses. Since __mcount_loc is a permanent section (not one we drop
> > after boot), this bloats the kernel memory usage for no real purpose.
>
> Wait, it's not dropped? Nothing uses it after it is read. It should be
> dropped when init data is dropped.
>
> From include/asm-generic/vmlinux.lds.h
>
> /* init and exit section handling */
> #define INIT_DATA \
> KEEP(*(SORT(___kentry+*))) \
> *(.init.data init.data.*) \
> MEM_DISCARD(init.data*) \
> KERNEL_CTORS() \
> MCOUNT_REC() \ <<----
> *(.init.rodata .init.rodata.*) \
> FTRACE_EVENTS() \
> TRACE_SYSCALLS() \
> KPROBE_BLACKLIST() \
> ERROR_INJECT_WHITELIST() \
> MEM_DISCARD(init.rodata) \
>
>
> So it should be dropped after boot.

Urgh, clearly I got lost somewhere along the line. In that case it
doesn't matter nearly as much.