On Tue, 29 Apr 2008 13:22:06 -0400 Michael B Allen miallen@ioplex.com wrote:
Hello,
I'm trying to run something linked with libldap on a glibc-2.5 system on a glibc-2.3 linux system and the loader compains about not having the right versions of sys_errlist and sys_nerr.
Why does libldap need these symbols?
$ objdump -T libldap-2.3.so.0 | grep sys_ 0000000000000000 DO *UND* 0000000000000004 GLIBC_2.4 sys_nerr 0000000000000000 DO *UND* 0000000000000420 GLIBC_2.4 sys_errlist
From looking at config.log, configure finds strerror just fine.
Is there any way to get rid of these symbols?
Of all the symbols in all the libraries that make up my project these are the only two GLIBC_2.4 or above symbols. If I can get rid of them, my code should run on the glibc-2.3 system.
I've narrowed it down to the TRACE macro in libraries/libldap/os-ip.c. If I #define TRACE as nothing my code loads ok on the glibc-2.3 system and all is well.
My guess is it looks like sock_errstr is evaluating to STRERROR and somehow that macro is using the offending symbols.
Mike