Subject: Re: ld.elf_so and hppa
To: None <fredette@theory.lcs.mit.edu, tech-userlevel@netbsd.org>
From: None <eeh@netbsd.org>
List: tech-userlevel
Date: 07/01/2002 18:32:51
| /*
| * This allocates a PLABEL. If called with a non-NULL def, the
| * plabel is for the function associated with that definition
| * in the defining object defobj, plus the given addend. If
| * called with a NULL def, the plabel is for the function at
| * the (unrelocated) address in addend in the object defobj.
| */
| Elf_Addr _rtld_alloc_plabel(const Obj_Entry *defobj, const Elf_Sym *def,
| Elf_Addr addend);
I don't quite understand. Are you allocating an actual PLABEL
(2 memory words) inside this function? What are you allocating
it from? Where does it get freed if the library is unloaded?
| /*
| * If a pointer is a PLABEL, this unwraps it and returns the
| * function's true address.
| */
| const void *_rtld_unwrap_plabel(const void *addr);
This is a very poor choice in name since it doesn't really give
much idea what it does. I'd recommend something like
"_rtld_plabel_function" instead.
Eduardo