|
Message-ID: <20111018015506.6D3A.0@argo.troja.mff.cuni.cz> Date: Tue, 18 Oct 2011 02:44:10 +0200 (MET DST) From: Pavel Kankovsky <peak@...o.troja.mff.cuni.cz> To: owl-dev@...ts.openwall.com Subject: Re: gcc 4.6.1: glibc __sincos() issue On Mon, 17 Oct 2011, Vasiliy Kulikov wrote: > After building gcc 4.6.1 and making glibc compilable there is one error. > Groff's "pic" built with glibc built with gcc 4.6.1 calls __sincos and > goes into infinite __sincos recursion: > [...] > > callq at _init+40 is a call to __sincos(). > > In the source file (./sysdeps/ieee754/dbl-64/s_sincos.c): > > void > __sincos (double x, double *sinx, double *cosx) > { > [...] > { > *sinx = sin (x); > *cosx = cos (x); > } > } > weak_alias (__sincos, sincos) > > > So, it is an optimised call to sin() and cos(), which is optimised to > call to __sincos(). However, I cannot understand how it can happen as > sin() and cos() are defined in ./sysdeps/ieee754/dbl-64/s_sin.c as > following: GCC thinks the architecture provides its native sincos() and transforms "*sinx = sin (x); *cosx = cos (x);" to "sincos (x, *sinx, *cosx);" See <http://gcc.gnu.org/ml/gcc-patches/2006-12/msg00499.html> and <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46926>. But Glibc is built WITHOUT native sincos()! It should be implemented by an FPU instructions (fsincos) (*) but what we get is generic C code-- that calls itself when compiled with the aformentioned optimization. This is WRONG! The ancient version of Glibc is to blame here: sysdeps/x86_64/fpu/s_sincos.S was introduced in 2.5. You can either add the missing native implementation of sincos() or compile Glibc with -fno-native-sincos to disable the optimization. BTW: I find it really wierd Glibc (up to the most current version) gets native x86_64 implementations of sinl(), cosl() etc. but not sin(), cos() etc. (with the exception of sincos()). -- Pavel Kankovsky aka Peak / Jeremiah 9:21 \ "For death is come up into our MS Windows(tm)..." \ 21st century edition /
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.