1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * Copyright (C) 2017 Josh Poimboeuf <jpoimboe@redhat.com> 4 */ 5 6 #ifndef _CHECK_H 7 #define _CHECK_H 8 9 #include <stdbool.h> 10 #include "cfi.h" 11 #include "arch.h" 12 13 struct insn_state { 14 struct cfi_state cfi; 15 unsigned int uaccess_stack; 16 bool uaccess; 17 bool df; 18 bool noinstr; 19 s8 instr; 20 }; 21 22 struct instruction { 23 struct list_head list; 24 struct hlist_node hash; 25 struct section *sec; 26 unsigned long offset; 27 unsigned int len; 28 enum insn_type type; 29 unsigned long immediate; 30 bool dead_end, ignore, ignore_alts; 31 bool hint; 32 bool retpoline_safe; 33 s8 instr; 34 u8 visited; 35 u8 ret_offset; 36 int alt_group; 37 struct symbol *call_dest; 38 struct instruction *jump_dest; 39 struct instruction *first_jump_src; 40 struct reloc *jump_table; 41 struct list_head alts; 42 struct symbol *func; 43 struct list_head stack_ops; 44 struct cfi_state cfi; 45 struct orc_entry orc; 46 }; 47 48 struct instruction *find_insn(struct objtool_file *file, 49 struct section *sec, unsigned long offset); 50 51 #define for_each_insn(file, insn) \ 52 list_for_each_entry(insn, &file->insn_list, list) 53 54 #define sec_for_each_insn(file, sec, insn) \ 55 for (insn = find_insn(file, sec, 0); \ 56 insn && &insn->list != &file->insn_list && \ 57 insn->sec == sec; \ 58 insn = list_next_entry(insn, list)) 59 60 61 #endif /* _CHECK_H */ 62
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.