Lines Matching refs:reloc

266 struct reloc *find_reloc_by_dest_range(const struct elf *elf, struct section *sec,  in find_reloc_by_dest_range()
269 struct reloc *reloc, *r = NULL; in find_reloc_by_dest_range() local
278 elf_hash_for_each_possible(reloc, reloc, hash, in find_reloc_by_dest_range()
280 if (reloc->sec != rsec) in find_reloc_by_dest_range()
283 if (reloc_offset(reloc) >= offset && in find_reloc_by_dest_range()
284 reloc_offset(reloc) < offset + len) { in find_reloc_by_dest_range()
285 if (!r || reloc_offset(reloc) < reloc_offset(r)) in find_reloc_by_dest_range()
286 r = reloc; in find_reloc_by_dest_range()
296 struct reloc *find_reloc_by_dest(const struct elf *elf, struct section *sec, unsigned long offset) in find_reloc_by_dest()
579 struct reloc *reloc; in elf_update_sym_relocs() local
581 for (reloc = sym->relocs; reloc; reloc = reloc->sym_next_reloc) in elf_update_sym_relocs()
582 set_reloc_sym(elf, reloc, reloc->sym->idx); in elf_update_sym_relocs()
848 static struct reloc *elf_init_reloc(struct elf *elf, struct section *rsec, in elf_init_reloc()
853 struct reloc *reloc, empty = { 0 }; in elf_init_reloc() local
861 reloc = &rsec->relocs[reloc_idx]; in elf_init_reloc()
863 if (memcmp(reloc, &empty, sizeof(empty))) { in elf_init_reloc()
869 reloc->sec = rsec; in elf_init_reloc()
870 reloc->sym = sym; in elf_init_reloc()
872 set_reloc_offset(elf, reloc, offset); in elf_init_reloc()
873 set_reloc_sym(elf, reloc, sym->idx); in elf_init_reloc()
874 set_reloc_type(elf, reloc, type); in elf_init_reloc()
875 set_reloc_addend(elf, reloc, addend); in elf_init_reloc()
877 elf_hash_add(reloc, &reloc->hash, reloc_hash(reloc)); in elf_init_reloc()
878 reloc->sym_next_reloc = sym->relocs; in elf_init_reloc()
879 sym->relocs = reloc; in elf_init_reloc()
881 return reloc; in elf_init_reloc()
884 struct reloc *elf_init_reloc_text_sym(struct elf *elf, struct section *sec, in elf_init_reloc_text_sym()
917 struct reloc *elf_init_reloc_data_sym(struct elf *elf, struct section *sec, in elf_init_reloc_data_sym()
937 struct reloc *reloc; in read_relocs() local
942 if (!elf_alloc_hash(reloc, elf->num_relocs)) in read_relocs()
959 rsec->relocs = calloc(sec_num_entries(rsec), sizeof(*reloc)); in read_relocs()
965 reloc = &rsec->relocs[i]; in read_relocs()
967 reloc->sec = rsec; in read_relocs()
968 symndx = reloc_sym(reloc); in read_relocs()
969 reloc->sym = sym = find_symbol_by_index(elf, symndx); in read_relocs()
970 if (!reloc->sym) { in read_relocs()
976 elf_hash_add(reloc, &reloc->hash, reloc_hash(reloc)); in read_relocs()
977 reloc->sym_next_reloc = sym->relocs; in read_relocs()
978 sym->relocs = reloc; in read_relocs()
1195 rsec->relocs = calloc(sec_num_entries(rsec), sizeof(struct reloc)); in elf_create_rela_section()