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()
539 struct plt_entry *plt, *plt_end; in get_plt() local
546 plt = (void *) mod->arch.init_plt->sh_addr; in get_plt()
547 plt_end = (void *) plt + mod->arch.init_plt->sh_size; in get_plt()
549 plt = (void *) mod->arch.core_plt->sh_addr; in get_plt()
550 plt_end = (void *) plt + mod->arch.core_plt->sh_size; in get_plt()
558 while (plt->bundle[0][0]) { in get_plt()
559 if (plt_target(plt) == target_ip) in get_plt()
561 if (++plt >= plt_end) in get_plt()
564 *plt = ia64_plt_template; in get_plt()
565 if (!patch_plt(mod, plt, target_ip, target_gp)) { in get_plt()
570 if (plt_target(plt) != target_ip) { in get_plt()
572 __func__, target_ip, plt_target(plt)); in get_plt()
578 return (uint64_t) plt; in get_plt()