mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-22 06:32:08 +00:00
objtool: Improve detection of BUG() and other dead ends
The BUG() macro's use of __builtin_unreachable() via the unreachable() macro tells gcc that the instruction is a dead end, and that it's safe to assume the current code path will not execute past the previous instruction. On x86, the BUG() macro is implemented with the 'ud2' instruction. When objtool's branch analysis sees that instruction, it knows the current code path has come to a dead end. Peter Zijlstra has been working on a patch to change the WARN macros to use 'ud2'. That patch will break objtool's assumption that 'ud2' is always a dead end. Generally it's best for objtool to avoid making those kinds of assumptions anyway. The more ignorant it is of kernel code internals, the better. So create a more generic way for objtool to detect dead ends by adding an annotation to the unreachable() macro. The annotation stores a pointer to the end of the unreachable code path in an '__unreachable' section. Objtool can read that section to find the dead ends. Tested-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/41a6d33971462ebd944a1c60ad4bf5be86c17b77.1487712920.git.jpoimboe@redhat.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
9f0c18aec6
commit
d1091c7fa3
5 changed files with 71 additions and 11 deletions
|
@ -31,9 +31,8 @@
|
|||
#define INSN_CALL_DYNAMIC 8
|
||||
#define INSN_RETURN 9
|
||||
#define INSN_CONTEXT_SWITCH 10
|
||||
#define INSN_BUG 11
|
||||
#define INSN_NOP 12
|
||||
#define INSN_OTHER 13
|
||||
#define INSN_NOP 11
|
||||
#define INSN_OTHER 12
|
||||
#define INSN_LAST INSN_OTHER
|
||||
|
||||
int arch_decode_instruction(struct elf *elf, struct section *sec,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue