1c506c96bSArnaldo Carvalho de Melo #ifndef __TOOLS_KALLSYMS_H_ 2c506c96bSArnaldo Carvalho de Melo #define __TOOLS_KALLSYMS_H_ 1 3c506c96bSArnaldo Carvalho de Melo 4c506c96bSArnaldo Carvalho de Melo #include <elf.h> 5c506c96bSArnaldo Carvalho de Melo #include <linux/ctype.h> 6c506c96bSArnaldo Carvalho de Melo #include <linux/types.h> 7c506c96bSArnaldo Carvalho de Melo 8c506c96bSArnaldo Carvalho de Melo #ifndef KSYM_NAME_LEN 9c506c96bSArnaldo Carvalho de Melo #define KSYM_NAME_LEN 256 10c506c96bSArnaldo Carvalho de Melo #endif 11c506c96bSArnaldo Carvalho de Melo 12*8e947f1eSArnaldo Carvalho de Melo static inline u8 kallsyms2elf_binding(char type) 13c506c96bSArnaldo Carvalho de Melo { 14c506c96bSArnaldo Carvalho de Melo if (type == 'W') 15c506c96bSArnaldo Carvalho de Melo return STB_WEAK; 16c506c96bSArnaldo Carvalho de Melo 17c506c96bSArnaldo Carvalho de Melo return isupper(type) ? STB_GLOBAL : STB_LOCAL; 18c506c96bSArnaldo Carvalho de Melo } 19c506c96bSArnaldo Carvalho de Melo 20c506c96bSArnaldo Carvalho de Melo int kallsyms__parse(const char *filename, void *arg, 21c506c96bSArnaldo Carvalho de Melo int (*process_symbol)(void *arg, const char *name, 22c506c96bSArnaldo Carvalho de Melo char type, u64 start)); 23c506c96bSArnaldo Carvalho de Melo 24c506c96bSArnaldo Carvalho de Melo #endif /* __TOOLS_KALLSYMS_H_ */ 25