I made the mistake of upgrading my primary development machine last night... The libc/libm in the current debian appear to be somewhat broken. Compiling with -O2 and linking aginst libc/m 2.1.2 yields a broken executable; it appears that calls to libm (specifically log() and fabs()) with a perfectly valid input argument result in a garbage return. I don't know for certain what part of the chain is broken. A different gcc version (that previously worked before installing libc/m 2.1.2) also broke. Building and linking against libc5 still produces a working executable. Bulding with -O0 and -O1 is OK. Building against libc/m 2.0.7 on other machines is OK. I can't downgrade just the libc on Bloopfish as Debian won't let a libc go backward... (The code in question is squeaky clean with efence. This doesn't rule out a stack-based clobber of course...) *sigh*. Maybe all of Joerg's complaints about broken floating point in libc 2.1 (which I had been dismissing) are true after all.... Monty --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/
I have been able to run more/more controlled tests of the failure. Glibc/m 2.1.2 look OK. Using EGCS, the failure is also seen with older libcs. Using GCC 2.7, the failure is not seen with any lic/libm combination. egcs breaks on the psychoacoustic code at -O1 (yes, 1!). I'm constructing a simple test case to report the bug now. Both the egcs (2.95) shipped by Debian 2.0 and 2.1 and the ia32 branch (2.96) are confirmed broken at this point. Dunno about the reported 2.99 that Tony's running ;-) Monty>--- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/