tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pam-saml/cy2-saml -lpthread and NetBSD 6.0



On Jan 20,  4:44pm, manu%netbsd.org@localhost (Emmanuel Dreyfus) wrote:
-- Subject: Re: pam-saml/cy2-saml -lpthread and NetBSD 6.0

| Christos Zoulas <christos%zoulas.com@localhost> wrote:
| 
| > | That means that dlopen() would ignore libpthread.so and carry on,
| > | instead of considering it fatal and return an error?  That would solve a
| > | lot of problems, IMO.
| > 
| > I think so.
| 
| I gave it a try: in _rtld_load_needed_objects() if I discover an object
| has NOLOAD, I remove it from the list so that it is silently not loaded
| 
| But that breaks in the following scenatio:
| - program foo is not linked with -lpthread, it does not use thread
| - libbar is linked with libbuz, it does not use threads
| - libbuz is linked with -lpthread but neither foo nor libbar use
| trhead-related stuff in libbuz.
| 
| dlopen("libbar",RTLD_NOW) still fails with my change, because in
| _rtld_relocate_objects(), we break here when resolving now missing
| libpthread references in libbuz:
| 
|                 dbg(("doing lazy PLT binding"));
|                 if (_rtld_relocate_plt_lazy(obj) < 0)
|                         ok = 0;
|                 if (obj->z_now || bind_now) {
|                         dbg(("doing immediate PLT binding"));
|                         if (_rtld_relocate_plt_objects(obj) < 0)
|                                 ok = 0;
|                 }
| 

Sorry, I did not mean that. I meant that we would remove NOLOAD from
libpthread, and move the mutex and condvar code to libc.

christos


Home | Main Index | Thread Index | Old Index