mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
x86,objtool: Move the ASM_REACHABLE annotation to objtool.h
Because we need a variant for .S files too. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/Yi9gOW9f1GGwwUD6@hirez.programming.kicks-ass.net
This commit is contained in:
parent
be0075951f
commit
dca5da2abe
5 changed files with 34 additions and 7 deletions
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include <linux/stringify.h>
|
||||
#include <linux/instrumentation.h>
|
||||
#include <linux/objtool.h>
|
||||
|
||||
/*
|
||||
* Despite that some emulators terminate on UD2, we use it for WARN().
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#define _ASM_X86_IRQ_STACK_H
|
||||
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/objtool.h>
|
||||
|
||||
#include <asm/processor.h>
|
||||
|
||||
|
|
|
@ -125,18 +125,11 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val,
|
|||
})
|
||||
#define annotate_unreachable() __annotate_unreachable(__COUNTER__)
|
||||
|
||||
#define ASM_REACHABLE \
|
||||
"998:\n\t" \
|
||||
".pushsection .discard.reachable\n\t" \
|
||||
".long 998b - .\n\t" \
|
||||
".popsection\n\t"
|
||||
|
||||
/* Annotate a C jump table to allow objtool to follow the code flow */
|
||||
#define __annotate_jump_table __section(".rodata..c_jump_table")
|
||||
|
||||
#else
|
||||
#define annotate_unreachable()
|
||||
# define ASM_REACHABLE
|
||||
#define __annotate_jump_table
|
||||
#endif
|
||||
|
||||
|
|
|
@ -83,6 +83,12 @@ struct unwind_hint {
|
|||
_ASM_PTR " 986b\n\t" \
|
||||
".popsection\n\t"
|
||||
|
||||
#define ASM_REACHABLE \
|
||||
"998:\n\t" \
|
||||
".pushsection .discard.reachable\n\t" \
|
||||
".long 998b - .\n\t" \
|
||||
".popsection\n\t"
|
||||
|
||||
#else /* __ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
|
@ -142,6 +148,13 @@ struct unwind_hint {
|
|||
.popsection
|
||||
.endm
|
||||
|
||||
.macro REACHABLE
|
||||
.Lhere_\@:
|
||||
.pushsection .discard.reachable
|
||||
.long .Lhere_\@ - .
|
||||
.popsection
|
||||
.endm
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#else /* !CONFIG_STACK_VALIDATION */
|
||||
|
@ -153,6 +166,7 @@ struct unwind_hint {
|
|||
#define STACK_FRAME_NON_STANDARD(func)
|
||||
#define STACK_FRAME_NON_STANDARD_FP(func)
|
||||
#define ANNOTATE_NOENDBR
|
||||
#define ASM_REACHABLE
|
||||
#else
|
||||
#define ANNOTATE_INTRA_FUNCTION_CALL
|
||||
.macro UNWIND_HINT sp_reg:req sp_offset=0 type:req end=0
|
||||
|
@ -161,6 +175,8 @@ struct unwind_hint {
|
|||
.endm
|
||||
.macro ANNOTATE_NOENDBR
|
||||
.endm
|
||||
.macro REACHABLE
|
||||
.endm
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_STACK_VALIDATION */
|
||||
|
|
|
@ -83,6 +83,12 @@ struct unwind_hint {
|
|||
_ASM_PTR " 986b\n\t" \
|
||||
".popsection\n\t"
|
||||
|
||||
#define ASM_REACHABLE \
|
||||
"998:\n\t" \
|
||||
".pushsection .discard.reachable\n\t" \
|
||||
".long 998b - .\n\t" \
|
||||
".popsection\n\t"
|
||||
|
||||
#else /* __ASSEMBLY__ */
|
||||
|
||||
/*
|
||||
|
@ -142,6 +148,13 @@ struct unwind_hint {
|
|||
.popsection
|
||||
.endm
|
||||
|
||||
.macro REACHABLE
|
||||
.Lhere_\@:
|
||||
.pushsection .discard.reachable
|
||||
.long .Lhere_\@ - .
|
||||
.popsection
|
||||
.endm
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#else /* !CONFIG_STACK_VALIDATION */
|
||||
|
@ -153,6 +166,7 @@ struct unwind_hint {
|
|||
#define STACK_FRAME_NON_STANDARD(func)
|
||||
#define STACK_FRAME_NON_STANDARD_FP(func)
|
||||
#define ANNOTATE_NOENDBR
|
||||
#define ASM_REACHABLE
|
||||
#else
|
||||
#define ANNOTATE_INTRA_FUNCTION_CALL
|
||||
.macro UNWIND_HINT sp_reg:req sp_offset=0 type:req end=0
|
||||
|
@ -161,6 +175,8 @@ struct unwind_hint {
|
|||
.endm
|
||||
.macro ANNOTATE_NOENDBR
|
||||
.endm
|
||||
.macro REACHABLE
|
||||
.endm
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_STACK_VALIDATION */
|
||||
|
|
Loading…
Reference in a new issue