#endif
#ifdef CONFIG_FTRACE_MCOUNT_RECORD
-#ifdef CC_USING_PATCHABLE_FUNCTION_ENTRY
/*
+ * The ftrace call sites are logged to a section whose name depends on the
+ * compiler option used. A given kernel image will only use one, AKA
+ * FTRACE_CALLSITE_SECTION. We capture all of them here to avoid header
+ * dependencies for FTRACE_CALLSITE_SECTION's definition.
++ *
+ * Need to also make ftrace_stub_graph point to ftrace_stub
+ * so that the same stub location may have different protocols
+ * and not mess up with C verifiers.
*/
#define MCOUNT_REC() . = ALIGN(8); \
__start_mcount_loc = .; \
- KEEP(*(__patchable_function_entries)) \
- __stop_mcount_loc = .; \
- ftrace_stub_graph = ftrace_stub;
-#else
-#define MCOUNT_REC() . = ALIGN(8); \
- __start_mcount_loc = .; \
KEEP(*(__mcount_loc)) \
- __stop_mcount_loc = .;
+ KEEP(*(__patchable_function_entries)) \
-#endif
+ __stop_mcount_loc = .; \
+ ftrace_stub_graph = ftrace_stub;
#else
- #define MCOUNT_REC()
+ # ifdef CONFIG_FUNCTION_TRACER
+ # define MCOUNT_REC() ftrace_stub_graph = ftrace_stub;
+ # else
+ # define MCOUNT_REC()
+ # endif
#endif
#ifdef CONFIG_TRACE_BRANCH_PROFILING