| // SPDX-License-Identifier: GPL-2.0 |
| #include "symbol/kallsyms.h" |
| u8 kallsyms2elf_type(char type) |
| return (type == 't' || type == 'w') ? STT_FUNC : STT_OBJECT; |
| bool kallsyms__is_function(char symbol_type) |
| symbol_type = toupper(symbol_type); |
| return symbol_type == 'T' || symbol_type == 'W'; |
| static void read_to_eol(struct io *io) |
| if (ch < 0 || ch == '\n') |
| int kallsyms__parse(const char *filename, void *arg, |
| int (*process_symbol)(void *arg, const char *name, |
| io.fd = open(filename, O_RDONLY, 0); |
| io__init(&io, io.fd, bf, sizeof(bf)); |
| char symbol_name[KSYM_NAME_LEN + 1]; |
| if (io__get_hex(&io, &start) != ' ') { |
| symbol_type = io__get_char(&io); |
| if (io__get_char(&io) != ' ') { |
| for (i = 0; i < sizeof(symbol_name); i++) { |
| if (ch < 0 || ch == '\n') |
| err = process_symbol(arg, symbol_name, symbol_type, start); |