Skip to content

Commit 1ee6f00

Browse files
jpoimboeIngo Molnar
authored andcommitted
x86/asm: Make objtool unreachable macros independent from GCC version
The ASM_UNREACHABLE macro isn't GCC version-specific, so move it outside the GCC 4.5+ check. Otherwise the 0-day robot will report objtool warnings for uses of ASM_UNREACHABLE with GCC 4.4. Also move the annotate_unreachable() macro so the related macros can stay together. Reported-by: kbuild test robot <fengguang.wu@intel.com> Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Kees Cook <keescook@chromium.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Fixes: aa5d1b8 ("x86/asm: Add ASM_UNREACHABLE") Link: http://lkml.kernel.org/r/fb18337dbf230fd36450d9faf19a2b2533dbcba1.1500993873.git.jpoimboe@redhat.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
1 parent aa5d1b8 commit 1ee6f00

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

include/linux/compiler-gcc.h

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,22 @@
128128
#define __always_unused __attribute__((unused))
129129
#define __mode(x) __attribute__((mode(x)))
130130

131+
#ifdef CONFIG_STACK_VALIDATION
132+
#define annotate_unreachable() ({ \
133+
asm("%c0:\n\t" \
134+
".pushsection .discard.unreachable\n\t" \
135+
".long %c0b - .\n\t" \
136+
".popsection\n\t" : : "i" (__LINE__)); \
137+
})
138+
#define ASM_UNREACHABLE \
139+
"999:\n\t" \
140+
".pushsection .discard.unreachable\n\t" \
141+
".long 999b - .\n\t" \
142+
".popsection\n\t"
143+
#else
144+
#define annotate_unreachable()
145+
#endif
146+
131147
/* gcc version specific checks */
132148

133149
#if GCC_VERSION < 30200
@@ -201,22 +217,6 @@
201217
#endif
202218
#endif
203219

204-
#ifdef CONFIG_STACK_VALIDATION
205-
#define annotate_unreachable() ({ \
206-
asm("%c0:\n\t" \
207-
".pushsection .discard.unreachable\n\t" \
208-
".long %c0b - .\n\t" \
209-
".popsection\n\t" : : "i" (__LINE__)); \
210-
})
211-
#define ASM_UNREACHABLE \
212-
"999:\n\t" \
213-
".pushsection .discard.unreachable\n\t" \
214-
".long 999b - .\n\t" \
215-
".popsection\n\t"
216-
#else
217-
#define annotate_unreachable()
218-
#endif
219-
220220
/*
221221
* Mark a position in code as unreachable. This can be used to
222222
* suppress control flow warnings after asm blocks that transfer

0 commit comments

Comments
 (0)