Lines Matching refs:rela
74 void *loc, const Elf64_Rela *rela, in module_emit_plt_entry() argument
82 u64 val = sym->st_value + rela->r_addend; in module_emit_plt_entry()
151 static bool duplicate_rel(const Elf64_Rela *rela, int num) in duplicate_rel() argument
158 return num > 0 && cmp_rela(rela + num, rela + num - 1) == 0; in duplicate_rel()
161 static unsigned int count_plts(Elf64_Sym *syms, Elf64_Rela *rela, int num, in count_plts() argument
171 switch (ELF64_R_TYPE(rela[i].r_info)) { in count_plts()
188 s = syms + ELF64_R_SYM(rela[i].r_info); in count_plts()
205 if (rela[i].r_addend != 0 || !duplicate_rel(rela, i)) in count_plts()
228 min_align = 2ULL << ffz(rela[i].r_offset | 0x7); in count_plts()
257 static bool branch_rela_needs_plt(Elf64_Sym *syms, Elf64_Rela *rela, in branch_rela_needs_plt() argument
261 Elf64_Sym *s = syms + ELF64_R_SYM(rela->r_info); in branch_rela_needs_plt()
266 return ELF64_R_TYPE(rela->r_info) == R_AARCH64_JUMP26 || in branch_rela_needs_plt()
267 ELF64_R_TYPE(rela->r_info) == R_AARCH64_CALL26; in branch_rela_needs_plt()
271 static int partition_branch_plt_relas(Elf64_Sym *syms, Elf64_Rela *rela, in partition_branch_plt_relas() argument
280 if (branch_rela_needs_plt(syms, &rela[i], dstidx)) in partition_branch_plt_relas()
282 else if (branch_rela_needs_plt(syms, &rela[j], dstidx)) in partition_branch_plt_relas()
283 swap(rela[i], rela[j]); in partition_branch_plt_relas()