Lines Matching refs:reloc

271 struct reloc *find_reloc_by_dest_range(const struct elf *elf, struct section *sec,  in find_reloc_by_dest_range()
274 struct reloc *reloc, *r = NULL; in find_reloc_by_dest_range() local
283 elf_hash_for_each_possible(reloc, reloc, hash, in find_reloc_by_dest_range()
285 if (reloc->sec != rsec) in find_reloc_by_dest_range()
288 if (reloc_offset(reloc) >= offset && in find_reloc_by_dest_range()
289 reloc_offset(reloc) < offset + len) { in find_reloc_by_dest_range()
290 if (!r || reloc_offset(reloc) < reloc_offset(r)) in find_reloc_by_dest_range()
291 r = reloc; in find_reloc_by_dest_range()
301 struct reloc *find_reloc_by_dest(const struct elf *elf, struct section *sec, unsigned long offset) in find_reloc_by_dest()
608 struct reloc *reloc; in elf_update_sym_relocs() local
610 for (reloc = sym->relocs; reloc; reloc = sym_next_reloc(reloc)) in elf_update_sym_relocs()
611 set_reloc_sym(elf, reloc, reloc->sym->idx); in elf_update_sym_relocs()
882 static struct reloc *elf_init_reloc(struct elf *elf, struct section *rsec, in elf_init_reloc()
887 struct reloc *reloc, empty = { 0 }; in elf_init_reloc() local
895 reloc = &rsec->relocs[reloc_idx]; in elf_init_reloc()
897 if (memcmp(reloc, &empty, sizeof(empty))) { in elf_init_reloc()
903 reloc->sec = rsec; in elf_init_reloc()
904 reloc->sym = sym; in elf_init_reloc()
906 set_reloc_offset(elf, reloc, offset); in elf_init_reloc()
907 set_reloc_sym(elf, reloc, sym->idx); in elf_init_reloc()
908 set_reloc_type(elf, reloc, type); in elf_init_reloc()
909 set_reloc_addend(elf, reloc, addend); in elf_init_reloc()
911 elf_hash_add(reloc, &reloc->hash, reloc_hash(reloc)); in elf_init_reloc()
912 set_sym_next_reloc(reloc, sym->relocs); in elf_init_reloc()
913 sym->relocs = reloc; in elf_init_reloc()
915 return reloc; in elf_init_reloc()
918 struct reloc *elf_init_reloc_text_sym(struct elf *elf, struct section *sec, in elf_init_reloc_text_sym()
950 struct reloc *elf_init_reloc_data_sym(struct elf *elf, struct section *sec, in elf_init_reloc_data_sym()
969 struct reloc *reloc; in read_relocs() local
974 if (!elf_alloc_hash(reloc, elf->num_relocs)) in read_relocs()
990 rsec->relocs = calloc(sec_num_entries(rsec), sizeof(*reloc)); in read_relocs()
996 reloc = &rsec->relocs[i]; in read_relocs()
998 reloc->sec = rsec; in read_relocs()
999 symndx = reloc_sym(reloc); in read_relocs()
1000 reloc->sym = sym = find_symbol_by_index(elf, symndx); in read_relocs()
1001 if (!reloc->sym) { in read_relocs()
1006 elf_hash_add(reloc, &reloc->hash, reloc_hash(reloc)); in read_relocs()
1007 set_sym_next_reloc(reloc, sym->relocs); in read_relocs()
1008 sym->relocs = reloc; in read_relocs()
1228 rsec->relocs = calloc(sec_num_entries(rsec), sizeof(struct reloc)); in elf_create_rela_section()