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
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include <linux/stringify.h>
|
#include <linux/stringify.h>
|
||||||
#include <linux/instrumentation.h>
|
#include <linux/instrumentation.h>
|
||||||
|
#include <linux/objtool.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Despite that some emulators terminate on UD2, we use it for WARN().
|
* Despite that some emulators terminate on UD2, we use it for WARN().
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#define _ASM_X86_IRQ_STACK_H
|
#define _ASM_X86_IRQ_STACK_H
|
||||||
|
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
|
#include <linux/objtool.h>
|
||||||
|
|
||||||
#include <asm/processor.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 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 */
|
/* Annotate a C jump table to allow objtool to follow the code flow */
|
||||||
#define __annotate_jump_table __section(".rodata..c_jump_table")
|
#define __annotate_jump_table __section(".rodata..c_jump_table")
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define annotate_unreachable()
|
#define annotate_unreachable()
|
||||||
# define ASM_REACHABLE
|
|
||||||
#define __annotate_jump_table
|
#define __annotate_jump_table
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -83,6 +83,12 @@ struct unwind_hint {
|
|||||||
_ASM_PTR " 986b\n\t" \
|
_ASM_PTR " 986b\n\t" \
|
||||||
".popsection\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__ */
|
#else /* __ASSEMBLY__ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -142,6 +148,13 @@ struct unwind_hint {
|
|||||||
.popsection
|
.popsection
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro REACHABLE
|
||||||
|
.Lhere_\@:
|
||||||
|
.pushsection .discard.reachable
|
||||||
|
.long .Lhere_\@ - .
|
||||||
|
.popsection
|
||||||
|
.endm
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
#else /* !CONFIG_STACK_VALIDATION */
|
#else /* !CONFIG_STACK_VALIDATION */
|
||||||
@ -153,6 +166,7 @@ struct unwind_hint {
|
|||||||
#define STACK_FRAME_NON_STANDARD(func)
|
#define STACK_FRAME_NON_STANDARD(func)
|
||||||
#define STACK_FRAME_NON_STANDARD_FP(func)
|
#define STACK_FRAME_NON_STANDARD_FP(func)
|
||||||
#define ANNOTATE_NOENDBR
|
#define ANNOTATE_NOENDBR
|
||||||
|
#define ASM_REACHABLE
|
||||||
#else
|
#else
|
||||||
#define ANNOTATE_INTRA_FUNCTION_CALL
|
#define ANNOTATE_INTRA_FUNCTION_CALL
|
||||||
.macro UNWIND_HINT sp_reg:req sp_offset=0 type:req end=0
|
.macro UNWIND_HINT sp_reg:req sp_offset=0 type:req end=0
|
||||||
@ -161,6 +175,8 @@ struct unwind_hint {
|
|||||||
.endm
|
.endm
|
||||||
.macro ANNOTATE_NOENDBR
|
.macro ANNOTATE_NOENDBR
|
||||||
.endm
|
.endm
|
||||||
|
.macro REACHABLE
|
||||||
|
.endm
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* CONFIG_STACK_VALIDATION */
|
#endif /* CONFIG_STACK_VALIDATION */
|
||||||
|
@ -83,6 +83,12 @@ struct unwind_hint {
|
|||||||
_ASM_PTR " 986b\n\t" \
|
_ASM_PTR " 986b\n\t" \
|
||||||
".popsection\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__ */
|
#else /* __ASSEMBLY__ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -142,6 +148,13 @@ struct unwind_hint {
|
|||||||
.popsection
|
.popsection
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro REACHABLE
|
||||||
|
.Lhere_\@:
|
||||||
|
.pushsection .discard.reachable
|
||||||
|
.long .Lhere_\@ - .
|
||||||
|
.popsection
|
||||||
|
.endm
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
#else /* !CONFIG_STACK_VALIDATION */
|
#else /* !CONFIG_STACK_VALIDATION */
|
||||||
@ -153,6 +166,7 @@ struct unwind_hint {
|
|||||||
#define STACK_FRAME_NON_STANDARD(func)
|
#define STACK_FRAME_NON_STANDARD(func)
|
||||||
#define STACK_FRAME_NON_STANDARD_FP(func)
|
#define STACK_FRAME_NON_STANDARD_FP(func)
|
||||||
#define ANNOTATE_NOENDBR
|
#define ANNOTATE_NOENDBR
|
||||||
|
#define ASM_REACHABLE
|
||||||
#else
|
#else
|
||||||
#define ANNOTATE_INTRA_FUNCTION_CALL
|
#define ANNOTATE_INTRA_FUNCTION_CALL
|
||||||
.macro UNWIND_HINT sp_reg:req sp_offset=0 type:req end=0
|
.macro UNWIND_HINT sp_reg:req sp_offset=0 type:req end=0
|
||||||
@ -161,6 +175,8 @@ struct unwind_hint {
|
|||||||
.endm
|
.endm
|
||||||
.macro ANNOTATE_NOENDBR
|
.macro ANNOTATE_NOENDBR
|
||||||
.endm
|
.endm
|
||||||
|
.macro REACHABLE
|
||||||
|
.endm
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* CONFIG_STACK_VALIDATION */
|
#endif /* CONFIG_STACK_VALIDATION */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user