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