Commit e7a174fb authored by Peter Zijlstra's avatar Peter Zijlstra
Browse files
parent 06e24745
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@
#define __WARN_FLAGS(flags)					\
do {								\
	instrumentation_begin();				\
	__BUG_FLAGS(BUGFLAG_WARNING|(flags), ASM_REACHABLE);	\
	__BUG_FLAGS(BUGFLAG_WARNING|(flags), ANNOTATE_REACHABLE);\
	instrumentation_end();					\
} while (0)

+2 −2
Original line number Diff line number Diff line
@@ -311,7 +311,7 @@ SYM_CODE_END(xen_error_entry)
	call	\cfunc

	/* For some configurations \cfunc ends up being a noreturn. */
	REACHABLE
	ANNOTATE_REACHABLE

	jmp	error_return
.endm
@@ -532,7 +532,7 @@ SYM_CODE_START(\asmsym)
	call	\cfunc

	/* For some configurations \cfunc ends up being a noreturn. */
	REACHABLE
	ANNOTATE_REACHABLE

	jmp	paranoid_exit

+1 −1
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ do { \
do {								\
	__auto_type __flags = BUGFLAG_WARNING|(flags);		\
	instrumentation_begin();				\
	_BUG_FLAGS(ASM_UD2, __flags, ASM_REACHABLE);		\
	_BUG_FLAGS(ASM_UD2, __flags, ANNOTATE_REACHABLE);	\
	instrumentation_end();					\
} while (0)

+1 −1
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@

#define ASM_CALL_ARG0							\
	"call %c[__func]				\n"		\
	ASM_REACHABLE
	ANNOTATE_REACHABLE

#define ASM_CALL_ARG1							\
	"movq	%[arg1], %%rdi				\n"		\
+7 −11
Original line number Diff line number Diff line
@@ -111,14 +111,6 @@
#endif
.endm


.macro REACHABLE
.Lhere_\@:
	.pushsection .discard.reachable
	.long	.Lhere_\@
	.popsection
.endm

.macro ANNOTATE type:req
.Lhere_\@:
	.pushsection .discard.annotate_insn,"M",@progbits,8
@@ -138,14 +130,11 @@
#define STACK_FRAME_NON_STANDARD_FP(func)
#define __ASM_ANNOTATE(label, type)
#define ASM_ANNOTATE(type)
#define ASM_REACHABLE
#else
.macro UNWIND_HINT type:req sp_reg=0 sp_offset=0 signal=0
.endm
.macro STACK_FRAME_NON_STANDARD func:req
.endm
.macro REACHABLE
.endm
.macro ANNOTATE type:req
.endm
#endif
@@ -187,6 +176,12 @@
 * it will be ignored.
 */
#define ANNOTATE_UNRET_BEGIN		ASM_ANNOTATE(ANNOTYPE_UNRET_BEGIN)
/*
 * This should be used directly after an instruction that is considered
 * terminating, like a noreturn CALL or UD2 when we know they are not -- eg
 * WARN using UD2.
 */
#define ANNOTATE_REACHABLE		ASM_ANNOTATE(ANNOTYPE_REACHABLE)

#else
#define ANNOTATE_NOENDBR		ANNOTATE type=ANNOTYPE_NOENDBR
@@ -196,6 +191,7 @@
#define ANNOTATE_IGNORE_ALTERNATIVE	ANNOTATE type=ANNOTYPE_IGNORE_ALTS
#define ANNOTATE_INTRA_FUNCTION_CALL	ANNOTATE type=ANNOTYPE_INTRA_FUNCTION_CALL
#define ANNOTATE_UNRET_BEGIN		ANNOTATE type=ANNOTYPE_UNRET_BEGIN
#define ANNOTATE_REACHABLE		ANNOTATE type=ANNOTYPE_REACHABLE
#endif

#if defined(CONFIG_NOINSTR_VALIDATION) && \
Loading