Lines Matching refs:plt

233 patch_plt (struct module *mod, struct plt_entry *plt, long target_ip, unsigned long target_gp)  in patch_plt()  argument
235 if (apply_imm64(mod, (struct insn *) (plt->bundle[0] + 2), target_gp) in patch_plt()
236 && apply_imm60(mod, (struct insn *) (plt->bundle[1] + 2), in patch_plt()
237 (target_ip - (int64_t) plt->bundle[1]) / 16)) in patch_plt()
243 plt_target (struct plt_entry *plt) in plt_target() argument
245 uint64_t b0, b1, *b = (uint64_t *) plt->bundle[1]; in plt_target()
252 return (long) plt->bundle[1] + 16*off; in plt_target()
283 patch_plt (struct module *mod, struct plt_entry *plt, long target_ip, unsigned long target_gp) in patch_plt() argument
285 if (apply_imm64(mod, (struct insn *) (plt->bundle[0] + 2), target_ip) in patch_plt()
286 && apply_imm64(mod, (struct insn *) (plt->bundle[1] + 2), target_gp)) in patch_plt()
292 plt_target (struct plt_entry *plt) in plt_target() argument
294 uint64_t b0, b1, *b = (uint64_t *) plt->bundle[0]; in plt_target()
547 struct plt_entry *plt, *plt_end; in get_plt() local
554 plt = (void *) mod->arch.init_plt->sh_addr; in get_plt()
555 plt_end = (void *) plt + mod->arch.init_plt->sh_size; in get_plt()
557 plt = (void *) mod->arch.core_plt->sh_addr; in get_plt()
558 plt_end = (void *) plt + mod->arch.core_plt->sh_size; in get_plt()
566 while (plt->bundle[0][0]) { in get_plt()
567 if (plt_target(plt) == target_ip) in get_plt()
569 if (++plt >= plt_end) in get_plt()
572 *plt = ia64_plt_template; in get_plt()
573 if (!patch_plt(mod, plt, target_ip, target_gp)) { in get_plt()
578 if (plt_target(plt) != target_ip) { in get_plt()
580 __func__, target_ip, plt_target(plt)); in get_plt()
586 return (uint64_t) plt; in get_plt()