Lines Matching full:elf
27 struct elf *orig, *patched, *out;
215 static int read_sym_checksums(struct elf *elf)
219 sec = find_section_by_name(elf, ".discard.sym_checksum");
222 elf->name);
243 reloc = find_reloc_by_dest(elf, sec, i * sizeof(*sym_checksum));
263 static struct symbol *first_file_symbol(struct elf *elf)
267 for_each_sym(elf, sym) {
275 static struct symbol *next_file_symbol(struct elf *elf, struct symbol *sym)
277 for_each_sym_continue(elf, sym) {
476 * ELF file symbol.
484 * Works for both same-ELF (direct pointer compare) and cross-ELF
499 * Works for both same-ELF (direct pointer compare) and cross-ELF
662 static int update_suffix_map(struct elf *elf)
667 for_each_sym(elf, sym) {
716 static struct symbol *find_twin_suffixed(struct elf *elf, struct symbol *sym1)
741 for_each_sym_by_name(elf, name, sym2) {
917 static struct symbol *__clone_symbol(struct elf *elf, struct symbol *patched_sym,
927 out_sec = find_section_by_name(elf, patched_sec->name);
929 out_sec = elf_create_section(elf, patched_sec->name, 0,
939 out_sym = elf_create_section_symbol(elf, out_sec);
962 if (!elf_add_data(elf, out_sec, data, size))
967 out_sym = elf_create_symbol(elf, patched_sym->name, out_sec,
1221 static int convert_reloc_sym_to_secsym(struct elf *elf, struct reloc *reloc)
1229 if (!sec->sym && !elf_create_section_symbol(elf, sec))
1233 set_reloc_sym(elf, reloc, sec->sym->idx);
1234 set_reloc_addend(elf, reloc, sym->offset + reloc_addend(reloc));
1239 static int convert_reloc_secsym_to_sym(struct elf *elf, struct reloc *reloc)
1282 set_reloc_sym(elf, reloc, sym->idx);
1283 set_reloc_addend(elf, reloc, reloc_addend(reloc) - sym->offset);
1303 static int convert_reloc_sym(struct elf *elf, struct reloc *reloc)
1311 return convert_reloc_sym_to_secsym(elf, reloc);
1314 return convert_reloc_secsym_to_sym(elf, reloc);
1637 static int create_fake_symbol(struct elf *elf, struct section *sec,
1659 sym = elf_create_symbol(elf, name, sec, STB_LOCAL, type, offset, size);
1686 * 1) ELF section header sh_entsize: Ideally this would be used almost
1710 static int create_fake_symbols(struct elf *elf)
1719 sec = find_section_by_name(elf, ".discard.annotate_data");
1728 if (annotype(elf, sec, reloc) != ANNOTYPE_DATA_SPECIAL)
1739 if (annotype(elf, sec, next_reloc) != ANNOTYPE_DATA_SPECIAL ||
1755 if (create_fake_symbol(elf, reloc->sym->sec, offset, size))
1763 for_each_sec(elf, sec) {
1789 if (create_fake_symbol(elf, sec, offset, entry_size))
1798 static bool should_keep_special_sym(struct elf *elf, struct symbol *sym)
1806 sym_for_each_reloc(elf, sym, reloc) {
1807 if (convert_reloc_sym(elf, reloc))