Runtime failure of glibc 2.0 compiled programs with glibc 2.1
Kars de Jong
jongk@cs.utwente.nl
Thu Apr 1 00:00:00 GMT 1999
>Submitter-Id: net
>Originator: Kars de Jong
>Organization:
------------------------------------------------------------------------------
Kars de Jong Signaalkamp rules the waves! Turrican@Discworld
--------======]**-----| jongk@cs.utwente.nl |-----**[======---------
>
>Confidential: no
>Synopsis: runtime failure of glibc 2.0 programs
>Severity: critical
>Priority: high
>Category: libc
>Class: sw-bug
>Release: libc-2.0.111
>Environment:
Host type: m68k-unknown-linux-gnu
System: Linux rincewind 2.2.0-pre7 #44 Thu Jan 28 21:21:39 CET 1999 m68k unknown
Architecture: m68k
CPU: 68060
Addons: crypt linuxthreads
Build CC: egcs
Compiler version: egcs-2.91.60 19981201 (egcs-1.1.1 release)
Kernel headers: 2.2.0-pre7
Symbol versioning: yes
Build static: yes
Build shared: yes
Build pic-default: no
Build profile: no
Build omitfp: no
Build bounded: no
Build static-nss: no
Stdio: libio
>Description:
Running some programs that were compiled using glibc 2.0 libraries
doesn't work. I get the following error:
rincewind:/usr/src/lib/glibc-2.0.111$ /usr/src/devel/jdk1.2v/build/linux/bin/java
/usr/src/devel/jdk1.2v/build/linux/bin/m68k/native_threads/java: error
in loading shared libraries:
/usr/src/devel/jdk1.2v/build/linux/lib/m68k/classic/libjvm.so:
undefined symbol: __divdi3
The version of GLIBC it was compiled with: glibc-2.0.7-29.m68k.rpm
(RedHat 5.2 distribution)
I have used nm to find the symbol, it is defined in the 2.0 version
as:
0006ff94 T __divdi3
and in the 2.1.111 version as:
000a0eb0 t __divdi3
If I'm not mistaken, it really comes from libgcc.a. Why was it not
resolved at link time from libgcc.a? Or rather, why is __divdi3 in the
2.0 version of glibc?
>How-To-Repeat:
Run a program compiled with glibc 2.0 that uses __divdi3 on a 2.1 system.
>Fix:
Dump the symbol as a global from glibc 2.0, or include it in glibc 2.1
as global.
More information about the Libc-alpha
mailing list