Lines Matching defs:plabel
128 * In the runtime architecture (ABI), PLABEL function pointers are
133 #define RTLD_MAKE_PLABEL(plabel) (((Elf_Addr)(plabel)) | (1 << 1))
138 * This is the PLABEL structure. The function PC and
140 * the actual PLABEL.
149 * For now allocated PLABEL structures are tracked on a
193 hppa_plabel *plabel;
273 plabel = &hppa_plabel_pre[hppa_plabel_pre_next++];
275 plabel->hppa_plabel_pc = (Elf_Addr)
277 plabel->hppa_plabel_sl = (Elf_Addr)pltgot;
279 SLIST_INSERT_HEAD(&hppa_plabel_list, plabel, hppa_plabel_next);
280 *((Elf_Addr *)where) = (Elf_Addr)(RTLD_MAKE_PLABEL(plabel));
299 hdbg(("PLABEL rela @%p(%p) -> %p(%p)\n",
325 * This allocates a PLABEL. If called with a non-NULL def, the
326 * plabel is for the function associated with that definition
328 * called with a NULL def, the plabel is for the function at
336 hppa_plabel *plabel;
360 SLIST_FOREACH(plabel, &hppa_plabel_list, hppa_plabel_next)
361 if (plabel->hppa_plabel_pc == func_pc &&
362 plabel->hppa_plabel_sl == func_sl)
363 return RTLD_MAKE_PLABEL(plabel);
370 plabel = &hppa_plabel_pre[hppa_plabel_pre_next++];
372 plabel = NEW(hppa_plabel);
373 if (plabel == NULL)
378 plabel->hppa_plabel_pc = func_pc;
379 plabel->hppa_plabel_sl = func_sl;
380 SLIST_INSERT_HEAD(&hppa_plabel_list, plabel, hppa_plabel_next);
382 return RTLD_MAKE_PLABEL(plabel);
386 * If a pointer is a PLABEL, this unwraps it.
471 * This is a PLABEL for a static function, and
475 * PLABEL because there should be no other
476 * PLABEL reloc referencing this function.
484 * a PLABEL pointer from a plain function
765 volatile hppa_plabel plabel;
768 plabel.hppa_plabel_pc = (Elf_Addr)ptr;
769 plabel.hppa_plabel_sl = (Elf_Addr)(obj->pltgot);
770 f = (Elf_Addr (*)(void))RTLD_MAKE_PLABEL(&plabel);