1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2c506c96bSArnaldo Carvalho de Melo #ifndef __TOOLS_KALLSYMS_H_ 3c506c96bSArnaldo Carvalho de Melo #define __TOOLS_KALLSYMS_H_ 1 4c506c96bSArnaldo Carvalho de Melo 5c506c96bSArnaldo Carvalho de Melo #include <elf.h> 6*3052ba56SArnaldo Carvalho de Melo #include <linux/ctype.h> 7c506c96bSArnaldo Carvalho de Melo #include <linux/types.h> 8c506c96bSArnaldo Carvalho de Melo 9c506c96bSArnaldo Carvalho de Melo #ifndef KSYM_NAME_LEN 10c506c96bSArnaldo Carvalho de Melo #define KSYM_NAME_LEN 256 11c506c96bSArnaldo Carvalho de Melo #endif 12c506c96bSArnaldo Carvalho de Melo 138e947f1eSArnaldo Carvalho de Melo static inline u8 kallsyms2elf_binding(char type) 14c506c96bSArnaldo Carvalho de Melo { 15c506c96bSArnaldo Carvalho de Melo if (type == 'W') 16c506c96bSArnaldo Carvalho de Melo return STB_WEAK; 17c506c96bSArnaldo Carvalho de Melo 18c506c96bSArnaldo Carvalho de Melo return isupper(type) ? STB_GLOBAL : STB_LOCAL; 19c506c96bSArnaldo Carvalho de Melo } 20c506c96bSArnaldo Carvalho de Melo 21155681fcSArnaldo Carvalho de Melo int hex2u64(const char *ptr, u64 *long_val); 22155681fcSArnaldo Carvalho de Melo 23f845086aSArnaldo Carvalho de Melo u8 kallsyms2elf_type(char type); 24f845086aSArnaldo Carvalho de Melo 25494e31e2SArnaldo Carvalho de Melo bool kallsyms__is_function(char symbol_type); 26494e31e2SArnaldo Carvalho de Melo 27c506c96bSArnaldo Carvalho de Melo int kallsyms__parse(const char *filename, void *arg, 28c506c96bSArnaldo Carvalho de Melo int (*process_symbol)(void *arg, const char *name, 29c506c96bSArnaldo Carvalho de Melo char type, u64 start)); 30c506c96bSArnaldo Carvalho de Melo 31c506c96bSArnaldo Carvalho de Melo #endif /* __TOOLS_KALLSYMS_H_ */ 32