Lines Matching refs:rela
73 void *loc, const Elf64_Rela *rela, in module_emit_plt_entry() argument
81 u64 val = sym->st_value + rela->r_addend; in module_emit_plt_entry()
150 static bool duplicate_rel(const Elf64_Rela *rela, int num) in duplicate_rel() argument
157 return num > 0 && cmp_rela(rela + num, rela + num - 1) == 0; in duplicate_rel()
160 static unsigned int count_plts(Elf64_Sym *syms, Elf64_Rela *rela, int num, in count_plts() argument
170 switch (ELF64_R_TYPE(rela[i].r_info)) { in count_plts()
187 s = syms + ELF64_R_SYM(rela[i].r_info); in count_plts()
204 if (rela[i].r_addend != 0 || !duplicate_rel(rela, i)) in count_plts()
227 min_align = 2ULL << ffz(rela[i].r_offset | 0x7); in count_plts()
256 static bool branch_rela_needs_plt(Elf64_Sym *syms, Elf64_Rela *rela, in branch_rela_needs_plt() argument
260 Elf64_Sym *s = syms + ELF64_R_SYM(rela->r_info); in branch_rela_needs_plt()
265 return ELF64_R_TYPE(rela->r_info) == R_AARCH64_JUMP26 || in branch_rela_needs_plt()
266 ELF64_R_TYPE(rela->r_info) == R_AARCH64_CALL26; in branch_rela_needs_plt()
270 static int partition_branch_plt_relas(Elf64_Sym *syms, Elf64_Rela *rela, in partition_branch_plt_relas() argument
279 if (branch_rela_needs_plt(syms, &rela[i], dstidx)) in partition_branch_plt_relas()
281 else if (branch_rela_needs_plt(syms, &rela[j], dstidx)) in partition_branch_plt_relas()
282 swap(rela[i], rela[j]); in partition_branch_plt_relas()