Lines Matching refs:elf

26 	struct elf *orig, *patched, *out;
167 static int read_sym_checksums(struct elf *elf) in read_sym_checksums() argument
171 sec = find_section_by_name(elf, ".discard.sym_checksum"); in read_sym_checksums()
174 elf->name); in read_sym_checksums()
195 reloc = find_reloc_by_dest(elf, sec, i * sizeof(*sym_checksum)); in read_sym_checksums()
215 static struct symbol *first_file_symbol(struct elf *elf) in first_file_symbol() argument
219 for_each_sym(elf, sym) { in first_file_symbol()
227 static struct symbol *next_file_symbol(struct elf *elf, struct symbol *sym) in next_file_symbol() argument
229 for_each_sym_continue(elf, sym) { in next_file_symbol()
473 static unsigned long find_sympos(struct elf *elf, struct symbol *sym) in find_sympos() argument
491 for_each_sym(elf, s) { in find_sympos()
501 for_each_sym(elf, s) { in find_sympos()
512 for_each_sym(elf, s) { in find_sympos()
533 static struct symbol *__clone_symbol(struct elf *elf, struct symbol *patched_sym, in __clone_symbol() argument
543 out_sec = find_section_by_name(elf, patched_sec->name); in __clone_symbol()
545 out_sec = elf_create_section(elf, patched_sec->name, 0, in __clone_symbol()
555 out_sym = elf_create_section_symbol(elf, out_sec); in __clone_symbol()
578 if (!elf_add_data(elf, out_sec, data, size)) in __clone_symbol()
583 out_sym = elf_create_symbol(elf, patched_sym->name, out_sec, in __clone_symbol()
867 static int convert_reloc_sym_to_secsym(struct elf *elf, struct reloc *reloc) in convert_reloc_sym_to_secsym() argument
872 if (!sec->sym && !elf_create_section_symbol(elf, sec)) in convert_reloc_sym_to_secsym()
876 set_reloc_sym(elf, reloc, sym->idx); in convert_reloc_sym_to_secsym()
877 set_reloc_addend(elf, reloc, sym->offset + reloc_addend(reloc)); in convert_reloc_sym_to_secsym()
881 static int convert_reloc_secsym_to_sym(struct elf *elf, struct reloc *reloc) in convert_reloc_secsym_to_sym() argument
903 set_reloc_sym(elf, reloc, sym->idx); in convert_reloc_secsym_to_sym()
904 set_reloc_addend(elf, reloc, reloc_addend(reloc) - sym->offset); in convert_reloc_secsym_to_sym()
912 static int convert_reloc_sym(struct elf *elf, struct reloc *reloc) in convert_reloc_sym() argument
918 return convert_reloc_sym_to_secsym(elf, reloc); in convert_reloc_sym()
920 return convert_reloc_secsym_to_sym(elf, reloc); in convert_reloc_sym()
1183 static int create_fake_symbol(struct elf *elf, struct section *sec, in create_fake_symbol() argument
1203 return elf_create_symbol(elf, name, sec, STB_LOCAL, type, offset, size) ? 0 : -1; in create_fake_symbol()
1238 static int create_fake_symbols(struct elf *elf) in create_fake_symbols() argument
1247 sec = find_section_by_name(elf, ".discard.annotate_data"); in create_fake_symbols()
1255 if (annotype(elf, sec, reloc) != ANNOTYPE_DATA_SPECIAL) in create_fake_symbols()
1263 if (annotype(elf, sec, next_reloc) != ANNOTYPE_DATA_SPECIAL || in create_fake_symbols()
1274 if (create_fake_symbol(elf, reloc->sym->sec, offset, size)) in create_fake_symbols()
1282 for_each_sec(elf, sec) { in create_fake_symbols()
1304 if (create_fake_symbol(elf, sec, offset, entry_size)) in create_fake_symbols()
1313 static bool should_keep_special_sym(struct elf *elf, struct symbol *sym) in should_keep_special_sym() argument
1320 sym_for_each_reloc(elf, sym, reloc) { in should_keep_special_sym()
1321 if (convert_reloc_sym(elf, reloc)) in should_keep_special_sym()