Lines Matching refs:reloc

268 struct reloc *find_reloc_by_dest_range(const struct elf *elf, struct section *sec,  in find_reloc_by_dest_range()
271 struct reloc *reloc, *r = NULL; in find_reloc_by_dest_range() local
280 elf_hash_for_each_possible(reloc, reloc, hash, in find_reloc_by_dest_range()
282 if (reloc->sec != rsec) in find_reloc_by_dest_range()
285 if (reloc_offset(reloc) >= offset && in find_reloc_by_dest_range()
286 reloc_offset(reloc) < offset + len) { in find_reloc_by_dest_range()
287 if (!r || reloc_offset(reloc) < reloc_offset(r)) in find_reloc_by_dest_range()
288 r = reloc; in find_reloc_by_dest_range()
298 struct reloc *find_reloc_by_dest(const struct elf *elf, struct section *sec, unsigned long offset) in find_reloc_by_dest()
581 struct reloc *reloc; in elf_update_sym_relocs() local
583 for (reloc = sym->relocs; reloc; reloc = reloc->sym_next_reloc) in elf_update_sym_relocs()
584 set_reloc_sym(elf, reloc, reloc->sym->idx); in elf_update_sym_relocs()
850 static struct reloc *elf_init_reloc(struct elf *elf, struct section *rsec, in elf_init_reloc()
855 struct reloc *reloc, empty = { 0 }; in elf_init_reloc() local
863 reloc = &rsec->relocs[reloc_idx]; in elf_init_reloc()
865 if (memcmp(reloc, &empty, sizeof(empty))) { in elf_init_reloc()
871 reloc->sec = rsec; in elf_init_reloc()
872 reloc->sym = sym; in elf_init_reloc()
874 set_reloc_offset(elf, reloc, offset); in elf_init_reloc()
875 set_reloc_sym(elf, reloc, sym->idx); in elf_init_reloc()
876 set_reloc_type(elf, reloc, type); in elf_init_reloc()
877 set_reloc_addend(elf, reloc, addend); in elf_init_reloc()
879 elf_hash_add(reloc, &reloc->hash, reloc_hash(reloc)); in elf_init_reloc()
880 reloc->sym_next_reloc = sym->relocs; in elf_init_reloc()
881 sym->relocs = reloc; in elf_init_reloc()
883 return reloc; in elf_init_reloc()
886 struct reloc *elf_init_reloc_text_sym(struct elf *elf, struct section *sec, in elf_init_reloc_text_sym()
919 struct reloc *elf_init_reloc_data_sym(struct elf *elf, struct section *sec, in elf_init_reloc_data_sym()
939 struct reloc *reloc; in read_relocs() local
944 if (!elf_alloc_hash(reloc, elf->num_relocs)) in read_relocs()
961 rsec->relocs = calloc(sec_num_entries(rsec), sizeof(*reloc)); in read_relocs()
967 reloc = &rsec->relocs[i]; in read_relocs()
969 reloc->sec = rsec; in read_relocs()
970 symndx = reloc_sym(reloc); in read_relocs()
971 reloc->sym = sym = find_symbol_by_index(elf, symndx); in read_relocs()
972 if (!reloc->sym) { in read_relocs()
978 elf_hash_add(reloc, &reloc->hash, reloc_hash(reloc)); in read_relocs()
979 reloc->sym_next_reloc = sym->relocs; in read_relocs()
980 sym->relocs = reloc; in read_relocs()
1197 rsec->relocs = calloc(sec_num_entries(rsec), sizeof(struct reloc)); in elf_create_rela_section()