Missing symbols from libresolv.so
Mark Kettenis
kettenis@wins.uva.nl
Sun Jul 9 14:56:00 GMT 2000
From: Ulrich Drepper <drepper@redhat.com>
Date: 09 Jul 2000 14:18:27 -0700
Mark Kettenis <kettenis@wins.uva.nl> writes:
> In the upgrade to BIND-8.2.2-P5, two symbols have been lost:
>
> 1. The variable _res_resultcodes.
>
> 2. The function __p_rr.
>
> So in principle the glibc 2.2 libresolv.so isn't binary compatible
> with the one from glibc 2.1.
These were rever exported. Therefore nothing has to be changed.
Sorry, we have them in resolv/Versions, and nm /lib/libresolv-2.1.3.so
gives:
00005784 T __p_rr
0000bb8c D _res_resultcodes
Or do you mean that since these symbols start with an underscore,
they're supposed to be only used internally? That's fine for these
two, but for instance my /usr/bin/sendmail has:
U __dn_skipname@@GLIBC_2.0
Which symbols got prefixed with a double underscore was arbitrarily
decided by whatever was in the BIND 4.9.x imported into glibc 2.0. If
the resolver interface has really been restricted to (the symbols that
are marked #ifdef BIND_RES_POSIX3 in <resolv.h>):
dn_expand(), res_init(), res_query(), res_search(),
res_querydomain() and res_mkquery()
up to now, why were virtually all symbols added to the version map in
glibc 2.1?
Moreover, BIND 4.9.7 adds res_send() to that list, and documents
dn_comp (which still has a double underscore in reality) on its
resolver.3 man page.
Nowadays BIND 8 simply gives all symbols a double underscore, and
documents even more interfaces.
I'm certainly not against exporting a limited set of symbols, but we
should take some care in choosing the set. At a minimum the symbols
on the BIND 4.9.7 man page should be exported. If we can decide on
a restricted set of symbols that will officially be exported from
libresolv.so, I'm willing to document them.
Mark
More information about the Libc-hacker
mailing list