Lines Matching refs:instruction
26 struct instruction *insn;
36 struct instruction *find_insn(struct objtool_file *file,
39 struct instruction *insn;
49 static struct instruction *next_insn_same_sec(struct objtool_file *file,
50 struct instruction *insn)
52 struct instruction *next = list_next_entry(insn, list);
60 static struct instruction *next_insn_same_func(struct objtool_file *file,
61 struct instruction *insn)
63 struct instruction *next = list_next_entry(insn, list);
80 static struct instruction *prev_insn_same_sym(struct objtool_file *file,
81 struct instruction *insn)
83 struct instruction *prev = list_prev_entry(insn, list);
116 static bool is_jump_table_jump(struct instruction *insn)
128 static bool is_sibling_call(struct instruction *insn)
153 * the lack of a return instruction.
159 struct instruction *insn;
221 struct instruction *dest = insn->jump_dest;
349 * Call the arch-specific instruction decoder for all the instructions and add
350 * them to the global instruction list.
357 struct instruction *insn;
406 WARN("%s(): can't find starting instruction",
426 static struct instruction *find_last_insn(struct objtool_file *file,
429 struct instruction *insn = NULL;
446 struct instruction *insn;
529 struct instruction *insn;
617 struct instruction *insn;
663 struct instruction *insn;
712 struct instruction *insn;
925 struct instruction *insn;
978 static struct reloc *insn_reloc(struct objtool_file *file, struct instruction *insn)
995 static void remove_insn_ops(struct instruction *insn)
1006 struct instruction *insn, bool sibling)
1016 * sometimes copied to the original instruction. For now, don't
1018 * original instruction if/when it ever makes sense to do so.)
1065 static void add_call_dest(struct objtool_file *file, struct instruction *insn,
1084 static void add_retpoline_call(struct objtool_file *file, struct instruction *insn)
1118 static void add_return_call(struct objtool_file *file, struct instruction *insn, bool add)
1137 struct instruction *insn;
1177 * This is a special case where an alt instruction
1188 * instruction, because the RET is also in the
1189 * middle of another instruction. Objtool only
1190 * knows about the outer instruction.
1197 WARN_FUNC("can't find jump dest instruction at %s+0x%lx",
1256 struct instruction *insn;
1315 struct instruction *orig_insn,
1316 struct instruction **new_insn)
1318 struct instruction *last_orig_insn, *last_new_insn = NULL, *insn, *nop = NULL;
1360 * instruction affects the stack, the instruction after it (the
1434 WARN_FUNC("can't find last new alternative instruction",
1451 * If the original instruction is a jump, make the alt entry an effective nop
1452 * by just skipping the original instruction.
1456 struct instruction *orig_insn,
1457 struct instruction **new_insn)
1463 WARN_FUNC("unsupported instruction at jump label",
1474 * patched in or redirected to at runtime. Each instruction having alternate
1475 * instruction(s) has them added to its insn->alts list, which will be
1481 struct instruction *orig_insn, *new_insn;
1495 WARN_FUNC("special: can't find orig instruction",
1506 WARN_FUNC("special: can't find new instruction",
1552 static int add_jump_table(struct objtool_file *file, struct instruction *insn,
1556 struct instruction *dest_insn;
1563 * instruction.
1614 struct instruction *insn)
1617 struct instruction *dest_insn, *orig_insn = insn;
1658 struct instruction *insn, *last = NULL;
1693 struct instruction *insn;
1750 struct instruction *insn;
1839 struct instruction *insn;
1876 struct instruction *insn;
1922 struct instruction *insn;
2102 static bool is_special_call(struct instruction *insn)
2117 static bool has_modified_stack_frame(struct instruction *insn, struct insn_state *state)
2154 static int update_cfi_state_regs(struct instruction *insn,
2247 static int update_cfi_state(struct instruction *insn, struct cfi_state *cfi,
2480 WARN_FUNC("unknown stack-related instruction",
2559 WARN_FUNC("leave instruction with modified stack frame",
2591 WARN_FUNC("unknown stack-related instruction",
2602 * layouts don't conflict at any given potential instruction boundary.
2608 static int propagate_alt_cfi(struct objtool_file *file, struct instruction *insn)
2637 static int handle_insn_ops(struct instruction *insn, struct insn_state *state)
2671 static bool insn_cfi_match(struct instruction *insn, struct cfi_state *cfi2)
2729 static inline const char *call_dest_name(struct instruction *insn)
2763 static int validate_call(struct instruction *insn, struct insn_state *state)
2787 static int validate_sibling_call(struct instruction *insn, struct insn_state *state)
2790 WARN_FUNC("sibling call from callable instruction with modified stack frame",
2798 static int validate_return(struct symbol *func, struct instruction *insn, struct insn_state *state)
2839 static struct instruction *next_insn_to_validate(struct objtool_file *file,
2840 struct instruction *insn)
2856 * Follow the branch starting at the given instruction, and recursively follow
2858 * each instruction and validate all the rules described in
2862 struct instruction *insn, struct insn_state state)
2865 struct instruction *next_insn, *prev_insn = NULL;
2903 struct instruction *save_insn, *i;
3042 WARN_FUNC("unsupported instruction in callable function",
3112 struct instruction *insn;
3147 * before an actual RET instruction.
3149 static int validate_entry(struct objtool_file *file, struct instruction *insn)
3151 struct instruction *next, *dest;
3264 struct instruction *insn;
3284 struct instruction *insn;
3323 static bool is_kasan_insn(struct instruction *insn)
3329 static bool is_ubsan_insn(struct instruction *insn)
3336 static bool ignore_unreachable_insn(struct objtool_file *file, struct instruction *insn)
3339 struct instruction *prev_insn;
3375 * Check if this (or a subsequent) instruction is related to
3407 struct instruction *insn;
3486 struct instruction *insn;
3495 WARN_FUNC("unreachable instruction", insn->sec, insn->offset);