From: Charles W. <cwi...@us...> - 2010-01-27 02:17:00
|
Cesar Strauss wrote: > Charles Wilson wrote: >> 1.0.13 + new perl: FAIL. >> 1.0.12 + new perl: FAIL. >> 1.0.11 + new perl: WORKS. >> >> 1.0.13 + old perl: WORKS. >> 1.0.13.debug + new perl: WORKS. >> >> >> So...what do 1.0.12 and 1.0.13 have in common, that 1.0.11 did not? >> Oddly, not the toolchain. 1.0.12 was built using >> gcc-2.95.3/old-binutils from MsysDVLPR, as far as I can tell, while >> 1.0.13 was the first one to be built using the new msys-gcc3.4.4. > > Just to clarify: 1.0.12 was built using gcc-2.95.3, but I was already > using the new binutils (compiled with gcc 3.4.4). An idea is to try > rebuilding 1.0.12 without updating binutils, and rebuild 1.0.11 with > updated binutils. Well, I don't think it's necessary to go that far: my other message pinpointed the problem, and the workaround. Also, this thread: http://thread.gmane.org/gmane.comp.gnu.mingw.msys/4712 shows another manifestation of the incorrectly-compiled msys DLL, but in a much simpler fashion (no newly-compiled perl needed). Using the same old gawk-3.1.7 binary from last fall, without recompiling it, you can get broken/working behavior by simply changing MSYS DLLs. With the currently-distributed msys DLL (1.0.13-1): $ gawk '{printf "%g %g\n", -1, 2}' 1 -2 -1 2 1 -2 -1 2 is very very wrong -- and again, is related to (s)printf function calls. However, drop in a newly compiled msys DLL, compiled with -fno-unit-at-a-time, and: $ gawk '{printf "%g %g\n", -1, 2}' -1 2 -1 2 -1 2 -1 2 as expected. Cesar -- it seems pretty clear that there is an optimization bug in the current msys toolchain, which can be avoided by adding -fno-unit-at-a-time. But, the current official MSYS DLL is broken because of this bug. Certainly it would be a good idea to track down and fix the compiler bug -- or perhaps update to gcc-3.4.6 and hope for the best -- but in the interim, can we get a new MSYS dll recompiled with the appropriate flags to work around the issue? I've already got a set of packages (1.0.13-2) that I could upload, if you like. They were built from your original 1.0.13-1-src tarball, and I just updated the .RELEASE_NOTES and msysrlsbld.ini slightly. Because the source code is unchanged, I didn't bump the dll version to 1.0.14; I only incremented the bld number. -- Chuck |