Subject: UAMs not loading in pre2.1.4

From: Tom Fitzgerald <[email-masked]>
Date: Thu, 27 Jan 2000 20:33:44 -0500

I'm trying to upgrade to pre-asun2.1.4-37b, but am getting the error
messages syslogged:

Jan 27 19:09:39 archetype.mit.edu afpd[27020]: uam_load(uams_guest.so):
   failed to load.
Jan 27 19:09:39 archetype.mit.edu afpd[27020]: uam_load(uams_clrtxt.so):
   failed to load.
Jan 27 19:21:05 archetype.mit.edu afpd[27125]: uam_load(uams_randnum.so):
   failed to load.

and Macs can't authenticate.  Hacking in a call to dlerror reported:

ld.so.1: etc/afpd/afpd: fatal: relocation error: file
   /usr/local/pkg/netatalk-1.4b2+asun2.1.4-37b/etc/uams/uams_randnum.so:
   symbol uam_register: referenced symbol not found.

Needless to say, uam_register is there in afpd and it looks fine.  This is
tested on Solaris 2.5.1 and 2.6, on both pre-2.1.4-35 and -37b.  Is there
something that needs to be done to make these symbols visible to dlopen?

---

From: andrew morgan <[email-masked]>
Date: Thu, 27 Jan 2000 19:21:31 -0800 (PST)

> something that needs to be done to make these symbols visible to dlopen?

The current uam_load function calls: dlopen(a, RTLD_NOW) to load the
library.  In linux, afpd must be compiled with "-rdynamic" so that the uam
can find symbols from the afpd executable.  How does this work in Solaris?  
The man page for dlopen (Solaris 2.6) says that the program image file has
RTLD_GLOBAL mode, which means it should export its functions to the uam.
So I guess I don't know why this doesn't work...  Why can't the uam find
the uam_register symbol in afpd?

	Andy - Thinking out loud

---

From: andrew morgan <[email-masked]>
Date: Thu, 27 Jan 2000 19:21:31 -0800 (PST)

Andy - Thinking out loud