Lines Matching refs:instruction

27 	struct instruction *insn;
38 struct instruction *find_insn(struct objtool_file *file,
41 struct instruction *insn;
51 struct instruction *next_insn_same_sec(struct objtool_file *file,
52 struct instruction *insn)
64 static struct instruction *next_insn_same_func(struct objtool_file *file,
65 struct instruction *insn)
67 struct instruction *next = next_insn_same_sec(file, insn);
84 static struct instruction *prev_insn_same_sec(struct objtool_file *file,
85 struct instruction *insn)
96 static struct instruction *prev_insn_same_sym(struct objtool_file *file,
97 struct instruction *insn)
99 struct instruction *prev = prev_insn_same_sec(file, insn);
135 static inline struct symbol *insn_call_dest(struct instruction *insn)
144 static inline struct reloc *insn_jump_table(struct instruction *insn)
153 static bool is_jump_table_jump(struct instruction *insn)
165 static bool is_sibling_call(struct instruction *insn)
187 * the lack of a return instruction.
193 struct instruction *insn;
237 struct instruction *dest = insn->jump_dest;
366 * Call the arch-specific instruction decoder for all the instructions and add
367 * them to the global instruction list.
374 struct instruction *insn;
378 struct instruction *insns = NULL;
463 WARN("%s(): can't find starting instruction",
567 static struct instruction *find_last_insn(struct objtool_file *file,
570 struct instruction *insn = NULL;
587 struct instruction *insn;
673 struct instruction *insn;
760 struct instruction *insn;
798 struct instruction *insn;
836 struct instruction *insn;
939 struct instruction *insn;
984 struct instruction *insn;
1026 struct instruction *insn;
1270 struct instruction *insn;
1321 static struct reloc *insn_reloc(struct objtool_file *file, struct instruction *insn)
1341 static void remove_insn_ops(struct instruction *insn)
1353 struct instruction *insn, bool sibling)
1363 * sometimes copied to the original instruction. For now, don't
1365 * original instruction if/when it ever makes sense to do so.)
1434 static void add_call_dest(struct objtool_file *file, struct instruction *insn,
1453 static void add_retpoline_call(struct objtool_file *file, struct instruction *insn)
1487 static void add_return_call(struct objtool_file *file, struct instruction *insn, bool add)
1501 struct instruction *insn, struct symbol *sym)
1508 struct instruction *prev = prev_insn_same_sym(file, insn);
1523 struct instruction *from, struct instruction *to)
1549 struct instruction *insn, *jump_dest;
1602 * instruction, because the RET is also in the
1603 * middle of another instruction. Objtool only
1604 * knows about the outer instruction.
1611 WARN_INSN(insn, "can't find jump dest instruction at %s+0x%lx",
1691 struct instruction *insn;
1747 struct instruction *orig_insn,
1748 struct instruction **new_insn)
1750 struct instruction *last_new_insn = NULL, *insn, *nop = NULL;
1756 struct instruction *last_orig_insn = NULL;
1805 * instruction affects the stack, the instruction after it (the
1875 WARN_FUNC("can't find last new alternative instruction",
1891 * If the original instruction is a jump, make the alt entry an effective nop
1892 * by just skipping the original instruction.
1896 struct instruction *orig_insn,
1897 struct instruction **new_insn)
1902 WARN_INSN(orig_insn, "unsupported instruction at jump label");
1937 * patched in or redirected to at runtime. Each instruction having alternate
1938 * instruction(s) has them added to its insn->alts list, which will be
1944 struct instruction *orig_insn, *new_insn;
1958 WARN_FUNC("special: can't find orig instruction",
1969 WARN_FUNC("special: can't find new instruction",
2021 static int add_jump_table(struct objtool_file *file, struct instruction *insn,
2026 struct instruction *dest_insn;
2033 * instruction.
2084 struct instruction *insn)
2087 struct instruction *dest_insn, *orig_insn = insn;
2128 struct instruction *insn, *last = NULL;
2161 struct instruction *insn, *insn_t1 = NULL, *insn_t2;
2228 struct instruction *insn;
2326 struct instruction *insn;
2351 struct instruction *insn;
2387 struct instruction *insn;
2434 struct instruction *insn;
2461 struct instruction *insn;
2685 static bool is_special_call(struct instruction *insn)
2700 static bool has_modified_stack_frame(struct instruction *insn, struct insn_state *state)
2745 static int update_cfi_state_regs(struct instruction *insn,
2838 static int update_cfi_state(struct instruction *insn,
2839 struct instruction *next_insn,
3140 WARN_INSN(insn, "unknown stack-related instruction");
3241 WARN_INSN(insn, "unknown stack-related instruction");
3251 * layouts don't conflict at any given potential instruction boundary.
3257 static int propagate_alt_cfi(struct objtool_file *file, struct instruction *insn)
3278 struct instruction *orig = orig_group->first_insn;
3289 static int handle_insn_ops(struct instruction *insn,
3290 struct instruction *next_insn,
3327 static bool insn_cfi_match(struct instruction *insn, struct cfi_state *cfi2)
3382 static inline const char *call_dest_name(struct instruction *insn)
3401 static bool pv_call_dest(struct objtool_file *file, struct instruction *insn)
3429 struct instruction *insn,
3467 struct instruction *insn,
3490 struct instruction *insn,
3494 WARN_INSN(insn, "sibling call from callable instruction with modified stack frame");
3501 static int validate_return(struct symbol *func, struct instruction *insn, struct insn_state *state)
3536 static struct instruction *next_insn_to_validate(struct objtool_file *file,
3537 struct instruction *insn)
3570 * Follow the branch starting at the given instruction, and recursively follow
3572 * each instruction and validate all the rules described in
3576 struct instruction *insn, struct insn_state state)
3579 struct instruction *next_insn, *prev_insn = NULL;
3621 struct instruction *save_insn, *i;
3755 WARN_INSN(insn, "unsupported instruction in callable function");
3823 struct instruction *insn,
3838 struct instruction *insn;
3862 * before an actual RET instruction.
3864 static int validate_unret(struct objtool_file *file, struct instruction *insn)
3866 struct instruction *next, *dest;
3974 struct instruction *insn;
3994 struct instruction *insn;
4025 static bool is_kasan_insn(struct instruction *insn)
4031 static bool is_ubsan_insn(struct instruction *insn)
4038 static bool ignore_unreachable_insn(struct objtool_file *file, struct instruction *insn)
4041 struct instruction *prev_insn;
4074 * If we reach a visited instruction at or before the
4088 struct instruction *dest = insn->jump_dest;
4119 * Check if this (or a subsequent) instruction is related to
4150 struct instruction *insn, *prev;
4219 struct instruction *insn;
4302 static void mark_endbr_used(struct instruction *insn)
4308 static bool noendbr_range(struct objtool_file *file, struct instruction *insn)
4311 struct instruction *first;
4326 static int validate_ibt_insn(struct objtool_file *file, struct instruction *insn)
4328 struct instruction *dest;
4407 * Accept if this is the instruction after a symbol
4424 struct instruction *dest;
4455 struct instruction *insn;
4503 struct instruction *insn, *next_insn;
4534 static bool ignore_noreturn_call(struct instruction *insn)
4565 struct instruction *insn, *prev_insn;
4587 WARN_INSN(insn, "unreachable instruction");
4681 struct instruction *insn;