Lines Matching refs:rela
70 void *loc, const Elf64_Rela *rela, in module_emit_plt_entry() argument
78 u64 val = sym->st_value + rela->r_addend; in module_emit_plt_entry()
147 static bool duplicate_rel(const Elf64_Rela *rela, int num) in duplicate_rel() argument
154 return num > 0 && cmp_rela(rela + num, rela + num - 1) == 0; in duplicate_rel()
157 static unsigned int count_plts(Elf64_Sym *syms, Elf64_Rela *rela, int num, in count_plts() argument
167 switch (ELF64_R_TYPE(rela[i].r_info)) { in count_plts()
181 s = syms + ELF64_R_SYM(rela[i].r_info); in count_plts()
198 if (rela[i].r_addend != 0 || !duplicate_rel(rela, i)) in count_plts()
220 min_align = 2ULL << ffz(rela[i].r_offset | 0x7); in count_plts()
249 static bool branch_rela_needs_plt(Elf64_Sym *syms, Elf64_Rela *rela, in branch_rela_needs_plt() argument
253 Elf64_Sym *s = syms + ELF64_R_SYM(rela->r_info); in branch_rela_needs_plt()
258 return ELF64_R_TYPE(rela->r_info) == R_AARCH64_JUMP26 || in branch_rela_needs_plt()
259 ELF64_R_TYPE(rela->r_info) == R_AARCH64_CALL26; in branch_rela_needs_plt()
263 static int partition_branch_plt_relas(Elf64_Sym *syms, Elf64_Rela *rela, in partition_branch_plt_relas() argument
269 if (branch_rela_needs_plt(syms, &rela[i], dstidx)) in partition_branch_plt_relas()
271 else if (branch_rela_needs_plt(syms, &rela[j], dstidx)) in partition_branch_plt_relas()
272 swap(rela[i], rela[j]); in partition_branch_plt_relas()