[tpm] Getting __errno_location when loading Perl XS module on FreeBSD

Alejandro Imass ait at p2ee.org
Tue Aug 16 07:51:18 PDT 2011


Hello

I'm compiling a proprietary lib on FreeBSD that offers a Perl API via
XS. The package comes with an ar archive for Linux 64 but I need to
compile it and run it on FreeBSD. FreeBSD make process makes no
complaints about the object files in the ar in the make process, and
everything makes without an error.

The lib compiles fine, but when the dynaloader is loading I get:

/libexec/ld-elf.so.1: (undisclosed).so: Undefined symbol "__errno_location"

Is this ld-elf complaining that it does not find the symbol in
(undisclosed), or is it (undisclosed) not finding the symbol in it's
dependencies?

I've been trying to learn more about __errno_location but some say
it's relates to the pthreads lib, some that it's libm and should be
defined in errno.h, but nope, it's not defined in any .h in Linux or
FreeBSD!

As you can see, the lib build fine and satisfies all dependencies.
Shouldn't the undefined symbol pop-up during linking of the shared
object (during creation) instead than on dynamic linking?

ldd blib/arch/auto/<undisclosed>.so blib/arch/auto/Gateway/Gateway.so:
libcurl.so.6 => /usr/local/lib/libcurl.so.6 (0x800c00000) libssl.so.6
=> /usr/lib/libssl.so.6 (0x800d54000) libstdc++.so.6 =>
/usr/lib/libstdc++.so.6 (0x800ea7000) libm.so.5 => /lib/libm.so.5
(0x8010b7000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x8011d7000)
libc.so.7 => /lib/libc.so.7 (0x800647000) libcrypto.so.6 =>
/lib/libcrypto.so.6 (0x8012e5000) libz.so.5 => /lib/libz.so.5
(0x801585000)
[download]

Thanks in advance for any comments.


More information about the toronto-pm mailing list