[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: How to get rid of sys_errlist and sys_nerr?



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