|
@@ -187,6 +187,11 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val,
|
|
|
|
|
|
/* Unreachable code */
|
|
/* Unreachable code */
|
|
#ifdef CONFIG_STACK_VALIDATION
|
|
#ifdef CONFIG_STACK_VALIDATION
|
|
|
|
+/*
|
|
|
|
+ * These macros help objtool understand GCC code flow for unreachable code.
|
|
|
|
+ * The __COUNTER__ based labels are a hack to make each instance of the macros
|
|
|
|
+ * unique, to convince GCC not to merge duplicate inline asm statements.
|
|
|
|
+ */
|
|
#define annotate_reachable() ({ \
|
|
#define annotate_reachable() ({ \
|
|
asm("%c0:\n\t" \
|
|
asm("%c0:\n\t" \
|
|
".pushsection .discard.reachable\n\t" \
|
|
".pushsection .discard.reachable\n\t" \
|