On 03/22/21 11:01, Steven Rostedt wrote: > On Sun, 21 Mar 2021 19:06:11 +0000 > Qais Yousef <qais.you...@arm.com> wrote: > > > #ifdef CONFIG_DYNAMIC_FTRACE > > struct dyn_arch_ftrace { > > -#ifdef CONFIG_ARM_MODULE_PLTS > > struct module *mod; > > -#endif > > }; > > > > I know you want to reduce the "ifdefery", but please note that the > dyn_arch_ftrace is defined once for every function that can be traced. If > you have 40,000 functions that can be traced, that pointer is created > 40,000 times. Thus, you really only want fields in the struct > dyn_arch_ftrace if you really need them, otherwise, that's a lot of memory > that is wasted.
Yes you're right. I was a bit optimistic on CONFIG_DYNAMIC_FTRACE will imply CONFIG_ARM_MODULE_PLTS is enabled too. It only has an impact on reducing ifdefery when calling ftrace_call_replace_mod(rec->arch.mod, ...) Should be easy to wrap rec->arch.mod with its own accessor that will return NULL if !CONFIG_ARM_MODULE_PLTS or just ifdef the functions. Up to Alexander to pick what he prefers :-) Thanks -- Qais Yousef