1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 #ifndef _OBJTOOL_CHECKSUM_H 3 #define _OBJTOOL_CHECKSUM_H 4 5 #include <objtool/elf.h> 6 7 #ifdef BUILD_KLP 8 9 static inline void checksum_init(struct symbol *func) 10 { 11 if (func && !func->csum.state) { 12 func->csum.state = XXH3_createState(); 13 XXH3_64bits_reset(func->csum.state); 14 } 15 } 16 17 static inline void checksum_update(struct symbol *func, 18 struct instruction *insn, 19 const void *data, size_t size) 20 { 21 XXH3_64bits_update(func->csum.state, data, size); 22 dbg_checksum(func, insn, XXH3_64bits_digest(func->csum.state)); 23 } 24 25 static inline void checksum_finish(struct symbol *func) 26 { 27 if (func && func->csum.state) { 28 func->csum.checksum = XXH3_64bits_digest(func->csum.state); 29 func->csum.state = NULL; 30 } 31 } 32 33 #else /* !BUILD_KLP */ 34 35 static inline void checksum_init(struct symbol *func) {} 36 static inline void checksum_update(struct symbol *func, 37 struct instruction *insn, 38 const void *data, size_t size) {} 39 static inline void checksum_finish(struct symbol *func) {} 40 41 #endif /* !BUILD_KLP */ 42 43 #endif /* _OBJTOOL_CHECKSUM_H */ 44