1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef __TOOLS_KALLSYMS_H_ 3*4882a593Smuzhiyun #define __TOOLS_KALLSYMS_H_ 1 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <elf.h> 6*4882a593Smuzhiyun #include <linux/ctype.h> 7*4882a593Smuzhiyun #include <linux/types.h> 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef KSYM_NAME_LEN 10*4882a593Smuzhiyun #define KSYM_NAME_LEN 256 11*4882a593Smuzhiyun #endif 12*4882a593Smuzhiyun kallsyms2elf_binding(char type)13*4882a593Smuzhiyunstatic inline u8 kallsyms2elf_binding(char type) 14*4882a593Smuzhiyun { 15*4882a593Smuzhiyun if (type == 'W') 16*4882a593Smuzhiyun return STB_WEAK; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun return isupper(type) ? STB_GLOBAL : STB_LOCAL; 19*4882a593Smuzhiyun } 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun u8 kallsyms2elf_type(char type); 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun bool kallsyms__is_function(char symbol_type); 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun int kallsyms__parse(const char *filename, void *arg, 26*4882a593Smuzhiyun int (*process_symbol)(void *arg, const char *name, 27*4882a593Smuzhiyun char type, u64 start)); 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun #endif /* __TOOLS_KALLSYMS_H_ */ 30