sym_type
sym_type(ELF_ST_TYPE(sym->st_info)),
#define SYM_END(name, sym_type) \
.type name sym_type ASM_NL \
elf_parser.sym_type = sym32_type;
elf_parser.sym_type = sym64_type;
return elf_parser.sym_type(sym);
uint8_t (*sym_type)(Elf_Sym *sym);
if (sym_type(sym) != STT_OBJECT)
static int avail_kallsyms_cb(unsigned long long sym_addr, char sym_type,
typedef int (*kallsyms_cb_t)(unsigned long long sym_addr, char sym_type,
char sym_type, sym_name[500];
&sym_addr, &sym_type, sym_name);
err = cb(sym_addr, sym_type, sym_name, ctx);
static int kallsyms_cb(unsigned long long sym_addr, char sym_type,
if (sym_type == 'd' && res)
size_t sym_type = ELF64_R_TYPE(relo->r_info);
if (sym_type != R_BPF_64_64 && sym_type != R_BPF_64_32 &&
sym_type != R_BPF_64_ABS64 && sym_type != R_BPF_64_ABS32) {
i, sec->sec_idx, sym_type, obj->filename);
static void sym_update_type(Elf64_Sym *sym, int sym_type)
sym->st_info = ELF64_ST_INFO(ELF64_ST_BIND(sym->st_info), sym_type);
int name_off, sym_type, sym_bind, sym_vis, err;
sym_type = ELF64_ST_TYPE(sym->st_info);
if (sym_type == STT_SECTION && dst_sec->sec_sym_idx) {
sym_update_type(dst_sym, sym_type);
if (sym_type == STT_SECTION && dst_sec) {
size_t src_sym_idx, dst_sym_idx, sym_type;
sym_type = ELF64_R_TYPE(src_rel->r_info);
dst_rel->r_info = ELF64_R_INFO(dst_sym_idx, sym_type);
int sym_type, const char *sym_name)
if (ELF64_ST_TYPE(sym->st_info) != sym_type)
int sym_type = ELF64_ST_TYPE(sym->st_info);
if (sym_type != STT_NOTYPE || sym_bind == STB_LOCAL
if (sym_type == STT_SECTION) {
sym_type(patched_sym), \
#define SYM_END(name, sym_type) \
.type name sym_type ASM_NL \
#define SYM_ALIAS(alias, name, sym_type, linkage) \
.type alias sym_type ASM_NL \