Lines Matching refs:plt

235 patch_plt (struct module *mod, struct plt_entry *plt, long target_ip, unsigned long target_gp)  in patch_plt()  argument
237 if (apply_imm64(mod, (struct insn *) (plt->bundle[0] + 2), target_gp) in patch_plt()
238 && apply_imm60(mod, (struct insn *) (plt->bundle[1] + 2), in patch_plt()
239 (target_ip - (int64_t) plt->bundle[1]) / 16)) in patch_plt()
245 plt_target (struct plt_entry *plt) in plt_target() argument
247 uint64_t b0, b1, *b = (uint64_t *) plt->bundle[1]; in plt_target()
254 return (long) plt->bundle[1] + 16*off; in plt_target()
285 patch_plt (struct module *mod, struct plt_entry *plt, long target_ip, unsigned long target_gp) in patch_plt() argument
287 if (apply_imm64(mod, (struct insn *) (plt->bundle[0] + 2), target_ip) in patch_plt()
288 && apply_imm64(mod, (struct insn *) (plt->bundle[1] + 2), target_gp)) in patch_plt()
294 plt_target (struct plt_entry *plt) in plt_target() argument
296 uint64_t b0, b1, *b = (uint64_t *) plt->bundle[0]; in plt_target()
541 struct plt_entry *plt, *plt_end; in get_plt() local
548 plt = (void *) mod->arch.init_plt->sh_addr; in get_plt()
549 plt_end = (void *) plt + mod->arch.init_plt->sh_size; in get_plt()
551 plt = (void *) mod->arch.core_plt->sh_addr; in get_plt()
552 plt_end = (void *) plt + mod->arch.core_plt->sh_size; in get_plt()
560 while (plt->bundle[0][0]) { in get_plt()
561 if (plt_target(plt) == target_ip) in get_plt()
563 if (++plt >= plt_end) in get_plt()
566 *plt = ia64_plt_template; in get_plt()
567 if (!patch_plt(mod, plt, target_ip, target_gp)) { in get_plt()
572 if (plt_target(plt) != target_ip) { in get_plt()
574 __func__, target_ip, plt_target(plt)); in get_plt()
580 return (uint64_t) plt; in get_plt()