R_PPC_REL24 bugs in glibc 2.2.x

Olaf Hering olh@suse.de
Mon Jun 25 13:45:00 GMT 2001


Hi,

it seems that the glibc 2.2.x can not handle the relocation properly. As
example, kmail compiled with 2.95.3 or the current CVS version can not
be used:

peach:~ # ldd -r /opt/kde2/bin/kmail
        libkhtml.so.3 => /opt/kde2/lib/libkhtml.so.3 (0x0154d000)
        libkjava.so.1 => /opt/kde2/lib/libkjava.so.1 (0x01508000)
        libkparts.so.1 => /opt/kde2/lib/libkparts.so.1 (0x014b0000)
        libkssl.so.2 => /opt/kde2/lib/libkssl.so.2 (0x0147a000)
        libssl.so.0 => /usr/lib/libssl.so.0 (0x01427000)
        libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0x01317000)
        libkspell.so.3 => /opt/kde2/lib/libkspell.so.3 (0x012cf000)
        libkab.so.3 => /opt/kde2/lib/libkab.so.3 (0x01262000)
        libkfile.so.3 => /opt/kde2/lib/libkfile.so.3 (0x01199000)
        libksycoca.so.3 => /opt/kde2/lib/libksycoca.so.3 (0x010cb000)
        libkio.so.3 => /opt/kde2/lib/libkio.so.3 (0x00ff5000)
        libkdeui.so.3 => /opt/kde2/lib/libkdeui.so.3 (0x00d57000)
        libkdesu.so.1 => /opt/kde2/lib/libkdesu.so.1 (0x00d12000)
        libkdecore.so.3 => /opt/kde2/lib/libkdecore.so.3 (0x00b8a000)
        libkdefakes.so.3 => /opt/kde2/lib/libkdefakes.so.3 (0x00b69000)
        libdl.so.2 => /lib/libdl.so.2 (0x00b46000)
        libDCOP.so.1 => /opt/kde2/lib/libDCOP.so.1 (0x00b04000)
        libqt.so.2 => /usr/lib/qt2/lib/libqt.so.2 (0x00557000)
        libpng.so.2 => /usr/lib/libpng.so.2 (0x0050b000)
        libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x004c8000)
        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x00496000)
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x00373000)
        libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x00349000)
        libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x00311000)
        libutil.so.1 => /lib/libutil.so.1 (0x002ee000)
        libz.so.1 => /lib/libz.so.1 (0x002be000)
        libstdc++-libc6.2-2.so.3 => /usr/lib/libstdc++-libc6.2-2.so.3
(0x00244000)
        libm.so.6 => /lib/libm.so.6 (0x001ab000)
        libc.so.6 => /lib/libc.so.6 (0x00051000)
        libXft.so.1 => /usr/X11R6/lib/libXft.so.1 (0x30029000)
        libmng.so.0 => /usr/lib/libmng.so.0 (0x300a4000)
        /lib/ld.so.1 => /lib/ld.so.1 (0x30000000)
        libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0x300fc000)
        liblcms.so.1 => /usr/lib/liblcms.so.1 (0x30111000)
/opt/kde2/bin/kmail: error while loading shared libraries:
/usr/X11R6/lib/libXft.so.1: R_PPC_REL24 relocation at 0x3004a574 for
symbol `)Ð' out of range

The symbol name is different with each compiler/glibc version that I
tried.

Running ld.so.1 in gdb didnt help much. It seems that
__process_machine_rela() in sysdeps/powerpc/dl-machine.c calls
dl_reloc_overflow() with wrong values, sym is never NULL:

(gdb) 
Run till exit from #0  __process_machine_rela (map=0x30150038,
reloc=0xa, sym=0xa, refsym=0x30150038, 
    reloc_addr=0x1135d4, finaladdr=1119184, rinfo=10) at
../sysdeps/powerpc/dl-machine.c:403
/opt/kde2/bin/kmail: error while loading shared libraries:
/usr/X11R6/lib/libXft.so.1: R_PPC_REL24 relocation at 0x0012ad38 for
symbol `c' out of range


Any ideas how to fix that? I was told it is a compiler bug, but it
happens also with the latest version so I guess the dynamic linker is
buggy on ppc.

The same KDE2 sources work fine with glibc 2.1.3, however, I didnt try
all possible combinations yet. ;)


Gruss Olaf
-- 
 $ man clone

BUGS
       Main feature not yet implemented...



More information about the Libc-alpha mailing list