Glibc 2.2 is broken

H . J . Lu hjl@lucon.org
Wed Jul 19 17:09:00 GMT 2000


On Wed, Jul 19, 2000 at 04:52:07PM -0700, H . J . Lu wrote:
> # netscape
> /usr/lib/netscape/netscape-communicator: Symbol `_res' has different size in shared object, consider re-linking
> (dns helper): Symbol `_res' has different size in shared object, consider re-linking
> zsh: 1833 bus error  netscape
> 
> We should provide symbol versioning for it.
> 

BTW, due to the copy relocation on ia32, the definition in the main
executable is used. On ia32, we can only shrink the size of data in
libc.so, not enlarg it. It has to be fixed.

The new struct __res_state looks strange:

        union {
                char    pad[52];        /* On an i386 this means 512b total. */
                struct {
                        u_int16_t               nscount; 
                        u_int16_t               nstimes[MAXNS]; /* ms. */
                        int                     nssocks[MAXNS];
                        struct sockaddr_in      nsaddrs[MAXNS];
                } _ext;
        } _u;

The total size of __res_state is 528 bytes now. The comments for i386
no longer applies. I don't know why it is still there. Besides size of
_u._ext is 68 bytes. Did I miss something?


H.J.


More information about the Libc-hacker mailing list