Bug 3468

Summary: libc(__setfpucw) is inaccessible
Product: [Retired] Red Hat Linux Reporter: romain
Component: glibcAssignee: Cristian Gafton <gafton>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: medium Docs Contact:
Priority: low    
Version: 6.0CC: iimura, martin.waller, sds, wangsmo
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 1999-07-09 02:04:17 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description romain 1999-06-14 22:50:12 UTC
__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
U __setfpucw
00000000 T __setfpucw
romain-pc>

RH 6.0 diverges from other Linux (including RH 5.2) by
hiding it in libc.so.

Comment 1 Jeff Johnson 1999-06-15 11:39:59 UTC
*** Bug 547 has been marked as a duplicate of this bug. ***

many programs fail with message:
error in loading shared libraries: <progname>: undefined
symbol: __setfpucw
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 gafton  01/18/99 20:22 -------
Programs like ? ....

------- Additional Comments From gafton  02/16/99 12:07 -------
Programs need a recompile

------- Additional Comments From ewt  05/03/99 12:11 -------
this needs to be fixed for glibc 2.0 apps

Comment 2 Jeff Johnson 1999-06-18 00:09:59 UTC
*** 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.

Comment 3 martin.waller 1999-07-06 14:31:59 UTC
Which is the prefered / correct way of setting the control word,
__setfpucw or _FPU_SETCW ?

Comment 4 Cristian Gafton 1999-07-09 02:04:59 UTC
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.