Intel IBT requires that every indirect JMP/CALL targets an ENDBR instructions, failing this #CP happens and we die. Similarly, all exception entries should be ENDBR. Find all code relocations and ensure they're either an ENDBR instruction or ANNOTATE_NOENDBR. For the exceptions look for UNWIND_HINT_IRET_REGS at sym+0 not being ENDBR. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Josh Poimboeuf <jpoimboe@redhat.com> Link: https://lore.kernel.org/r/20220308154319.705110141@infradead.org
21 lines
594 B
C
21 lines
594 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright (C) 2015 Josh Poimboeuf <jpoimboe@redhat.com>
|
|
*/
|
|
#ifndef _BUILTIN_H
|
|
#define _BUILTIN_H
|
|
|
|
#include <subcmd/parse-options.h>
|
|
|
|
extern const struct option check_options[];
|
|
extern bool no_fp, no_unreachable, retpoline, module, backtrace, uaccess, stats,
|
|
lto, vmlinux, mcount, noinstr, backup, sls, dryrun,
|
|
ibt;
|
|
|
|
extern int cmd_parse_options(int argc, const char **argv, const char * const usage[]);
|
|
|
|
extern int cmd_check(int argc, const char **argv);
|
|
extern int cmd_orc(int argc, const char **argv);
|
|
|
|
#endif /* _BUILTIN_H */
|