Red Hat Bugzilla – Bug 3468
libc(__setfpucw) is inaccessible
Last modified: 2008-05-01 11:37:50 EDT
__setfpucw is normally a user accessible entry point in
libc. In RH 6.0, it appears to be static, preventing
precompiled programs from using it in the shared library.
__setfpucw is still accessible if you want to statically
link with libc.a, but most folks can't (precompiled
programs) or don't want to.
romain-pc> nm -p /lib/libc-2.1.1.so | grep __setfpucw
0001db4c t __setfpucw
romain-pc> nm -p /usr/lib/libc.a | grep __setfpucw
00000000 T __setfpucw
RH 6.0 diverges from other Linux (including RH 5.2) by
hiding it in libc.so.
*** Bug 547 has been marked as a duplicate of this bug. ***
many programs fail with message:
error in loading shared libraries: <progname>: undefined
this functions is supposed to be declared (as per man page)
in /usr/include/i386/fpu_control.h, but there is no such
file, only /usr/include/fpu_control.h.
------- Additional Comments From firstname.lastname@example.org 01/18/99 20:22 -------
Programs like ? ....
------- Additional Comments From email@example.com 02/16/99 12:07 -------
Programs need a recompile
------- Additional Comments From firstname.lastname@example.org 05/03/99 12:11 -------
this needs to be fixed for glibc 2.0 apps
*** Bug 3551 has been marked as a duplicate of this bug. ***
If I execute an application on RedHat 6.0 that was compiled
on a RedHat 5.2, get the following message:
zeus: error in loading shared libraries:
zeus: undefined symbol: __setfpucw
Zeus is the name of my aplication program. I know I need to
recode the floating-point exception routine in RedHat 6.0
but I should be able to run programs compiled on RedHat 5.2
on RedHat 6.0 without any problems. The binary program for
__setfpucw should be provided by glibc even though new
programs compiled using the new header files provided by
RedHat 6.0 will never use them. They need to be made
available for programs compiled with earlier versions of
glibc. The same program compiled with libc5 prior to RedHat
5.0 will run on RedHat 6.0.
Which is the prefered / correct way of setting the control word,
__setfpucw or _FPU_SETCW ?
Added __setfpucw to the compatibility handler as an aliased call to
_FPU_SETCW. A new glibc rpm that will include a new glibc-compat
add-on will be available from rawhide shortly.