It appears that there has been some drift between the versions of pseudo-reloc.c in mingw32, cygwin, and mingw64. Last month, I managed to integrate support for v2 pseudo-relocs into cygwin's runtime, using mingw32's version of pseudo-reloc.c as the basis for that effort. Naturally, changes were required (mostly to ensure that v2 relocs worked across a "fork()" call -- which obviously wasn't an issue for mingw[32|64]. Also, the error handling needed some work, in order to mesh properly with cygwin at this early stage of the application life cycle). All of these changes were guarded by #ifdef CYGWIN, so the effect on mingw32 was practically nil. These changes were merged back in to the mingw32 version.
I had planned on also attempting to harmonize both of those versions with the mingw64 version.
I now notice that some attempt was made at this already, just a few days ago:
2009-10-20 Ozkan Sezer <...>
* crt/pseudo-reloc.c: Merged documentation updates and most of the
whitespace changes from cygwin. Additional whitespace changes.
Shortened some of the error messages. Removed assert.h #include
which isn't necessary any more.
However, the result of Mr. Sezer's effort is still very different from the cygwin (and, as of 10/23/2009, the mingw32) version. Should we make an effort to ensure that these three files are all identical, or should we just continue as we have, with ad-hoc partial synchronization efforts, such as mine and Mr. Sezer's?