On Tue, 29 Apr 2008 13:22:06 -0400
Michael B Allen <miallen(a)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