Lines Matching refs:sym

155 	struct symbol *sym;  in find_symbol_by_index()  local
157 elf_hash_for_each_possible(elf->symbol_hash, sym, hash, idx) in find_symbol_by_index()
158 if (sym->idx == idx) in find_symbol_by_index()
159 return sym; in find_symbol_by_index()
222 struct symbol *sym; in find_symbol_by_name() local
224 elf_hash_for_each_possible(elf->symbol_name_hash, sym, name_hash, str_hash(name)) in find_symbol_by_name()
225 if (!strcmp(sym->name, name)) in find_symbol_by_name()
226 return sym; in find_symbol_by_name()
347 struct symbol *sym, *pfunc; in read_symbols() local
368 sym = malloc(sizeof(*sym)); in read_symbols()
369 if (!sym) { in read_symbols()
373 memset(sym, 0, sizeof(*sym)); in read_symbols()
374 sym->alias = sym; in read_symbols()
376 sym->idx = i; in read_symbols()
378 if (!gelf_getsymshndx(symtab->data, shndx_data, i, &sym->sym, in read_symbols()
384 sym->name = elf_strptr(elf->elf, symtab->sh.sh_link, in read_symbols()
385 sym->sym.st_name); in read_symbols()
386 if (!sym->name) { in read_symbols()
391 sym->type = GELF_ST_TYPE(sym->sym.st_info); in read_symbols()
392 sym->bind = GELF_ST_BIND(sym->sym.st_info); in read_symbols()
394 if ((sym->sym.st_shndx > SHN_UNDEF && in read_symbols()
395 sym->sym.st_shndx < SHN_LORESERVE) || in read_symbols()
396 (shndx_data && sym->sym.st_shndx == SHN_XINDEX)) { in read_symbols()
397 if (sym->sym.st_shndx != SHN_XINDEX) in read_symbols()
398 shndx = sym->sym.st_shndx; in read_symbols()
400 sym->sec = find_section_by_index(elf, shndx); in read_symbols()
401 if (!sym->sec) { in read_symbols()
403 sym->name); in read_symbols()
406 if (sym->type == STT_SECTION) { in read_symbols()
407 sym->name = sym->sec->name; in read_symbols()
408 sym->sec->sym = sym; in read_symbols()
411 sym->sec = find_section_by_index(elf, 0); in read_symbols()
413 sym->offset = sym->sym.st_value; in read_symbols()
414 sym->len = sym->sym.st_size; in read_symbols()
416 rb_add(&sym->sec->symbol_tree, &sym->node, symbol_to_offset); in read_symbols()
417 pnode = rb_prev(&sym->node); in read_symbols()
421 entry = &sym->sec->symbol_list; in read_symbols()
422 list_add(&sym->list, entry); in read_symbols()
423 elf_hash_add(elf->symbol_hash, &sym->hash, sym->idx); in read_symbols()
424 elf_hash_add(elf->symbol_name_hash, &sym->name_hash, str_hash(sym->name)); in read_symbols()
432 list_for_each_entry(sym, &sec->symbol_list, list) { in read_symbols()
435 if (sym->type != STT_FUNC) in read_symbols()
438 if (sym->pfunc == NULL) in read_symbols()
439 sym->pfunc = sym; in read_symbols()
441 if (sym->cfunc == NULL) in read_symbols()
442 sym->cfunc = sym; in read_symbols()
444 coldstr = strstr(sym->name, ".cold"); in read_symbols()
448 pnamelen = coldstr - sym->name; in read_symbols()
451 sym->name, MAX_NAME_LEN); in read_symbols()
455 strncpy(pname, sym->name, pnamelen); in read_symbols()
461 sym->name); in read_symbols()
465 sym->pfunc = pfunc; in read_symbols()
466 pfunc->cfunc = sym; in read_symbols()
476 if (sym->sec == pfunc->sec && in read_symbols()
477 sym->offset >= pfunc->offset && in read_symbols()
478 sym->offset + sym->len == pfunc->offset + pfunc->len) { in read_symbols()
479 pfunc->len -= sym->len; in read_symbols()
487 free(sym); in read_symbols()
569 reloc->sym = find_symbol_by_index(elf, symndx); in read_relocs()
570 if (!reloc->sym) { in read_relocs()
850 relocs[idx].r_info = GELF_R_INFO(reloc->sym->idx, reloc->type); in elf_rebuild_rel_reloc_section()
880 relocs[idx].r_info = GELF_R_INFO(reloc->sym->idx, reloc->type); in elf_rebuild_rela_reloc_section()
930 reloc->rel.r_info = GELF_R_INFO(reloc->sym->idx, reloc->type); in elf_write_reloc()
938 reloc->rela.r_info = GELF_R_INFO(reloc->sym->idx, reloc->type); in elf_write_reloc()
992 struct symbol *sym, *tmpsym; in elf_close() local
1002 list_for_each_entry_safe(sym, tmpsym, &sec->symbol_list, list) { in elf_close()
1003 list_del(&sym->list); in elf_close()
1004 hash_del(&sym->hash); in elf_close()
1005 free(sym); in elf_close()