#2768: rts/win32/IOManager.h declarations conflict with windows.h
-------------------------+--------------------------------------------------
Reporter: Deewiant | Owner:
Type: bug | Status: new
Priority: normal | Component: Runtime System
Version: 6.11 | Severity: normal
Keywords: | Testcase:
Architecture: x86 | Os: Windows
-------------------------+--------------------------------------------------
`rts/win32/IOManager.h` has the following:
{{{
/* On the yucky side..suppress -Wmissing-declarations warnings when
* including <windows.h>
*/
extern void* GetCurrentFiber ( void );
extern void* GetFiberData ( void );
#include <windows.h>
}}}
Which causes problems on my system:
{{{
In file included from d:\progging\mingw\bin\../lib/gcc/i686-pc-
mingw32/4.2.1-dw2/../../../../include/windef.h:253,
from d:\progging\mingw\bin\../lib/gcc/i686-pc-
mingw32/4.2.1-dw2/../../../../include/windows.h:48,
from IOManager.h:14,
from IOManager.c:11:
d:\progging\mingw\bin\../lib/gcc/i686-pc-
mingw32/4.2.1-dw2/../../../../include/winnt.h:3832: error: static
declaration of 'GetCurrentFiber' follows non-static declaration
IOManager.h:12: error: previous declaration of 'GetCurrentFiber' was here
d:\progging\mingw\bin\../lib/gcc/i686-pc-
mingw32/4.2.1-dw2/../../../../include/winnt.h:3842: error: static
declaration of 'GetFiberData' follows non-static declaration
IOManager.h:13: error: previous declaration of 'GetFiberData' was here
}}}
Commenting out the two declarations makes things work again.
A possible reason why this hasn't been a problem for others is that I'm
using a 'technology preview' of MinGW from 2007 which comes with GCC
4.2.1, instead of the stable 3.4.5 from 2006.
My `winnt.h` contains the following (snipped down to size where
irrelevant):
{{{
#if (__GNUC__ >= 3)
/* Support -masm=intel. */
static __inline__ PVOID GetCurrentFiber(void)
{
...
}
...
#else /* __GNUC__ >= 3 */
static __inline__ PVOID GetCurrentFiber(void)
{
...
}
}}}
So it seems that with a recent enough version of these headers the fiber
functions get defined in any case, regardless of compiler version; were
people to grab the latest version of
[http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=11550
w32api] they'd run into these problems as well. Judging from the file
timestamps I've got 3.11, the second-newest. 3.12's `winnt.h` appears
identical in this respect, so updating wouldn't help.
Since the two lines are claimed to be only for warning avoidance, I
suggest just removing them.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2768>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs