Lines Matching refs:reloc

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