Using Perl from a PAM module (boot_DynaLoader undefined)

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

I'm writing a PAM module called, designed to allow me to
call into Perl modules to do PAM auth.  I have two test programs, and testauth.c which act as PAM applications, the first
using Authen::PAM and the second using the C interface.  When I run
the Perl version I get segfaults, but the C version can't load the
/lib/security/ file because it claims boot_DynaLoader is
undefined.  Here is a snippet from make's output

kmoffett@hydrogen:~/projects/pam_perl$ make
-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE
-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE
-g -O0 -fPIC -Wall -Werror -D_REENTRANT -D_GNU_SOURCE
-DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include
-DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -I/usr/lib/perl/5.8/CORE -o
obj/SHARED_OBJ_pam_perl/config/perlembed.o -c src/config/perlembed.c
cc -Wl,-E -L/usr/local/lib
-L/usr/lib/perl/5.8/CORE -lperl -ldl -lm -lpthread -lc -lcrypt
-Wl,--shared -o dst/SHARED_OBJ/

As far as I can tell DynaLoader is being linked into the resultant .so
file, but when I run objdump on it it reports boot_DynaLoader as an
undefined symbol.  objdump on the DynaLoader.a file _does_ work,
however, and shows a valid boot_DynaLoader symbol.

Kyle Moffett

Site Timeline