Skip to content
Snippets Groups Projects
Commit 6a90c3c3 authored by Cheng Shao's avatar Cheng Shao
Browse files

rts: fix I/O manager compilation errors for win32 target

This patch fixes I/O manager compilation errors for win32 target
discovered when cross-compiling to win32 using recent clang:

```
rts/win32/ThrIOManager.c:117:7: error:
     error: call to undeclared function 'is_io_mng_native_p'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      117 |   if (is_io_mng_native_p ()) {
          |       ^
    |
117 |   if (is_io_mng_native_p ()) {
    |       ^

1 error generated.
`x86_64-w64-mingw32-clang' failed in phase `C Compiler'. (Exit code: 1)

rts/fs.c:143:28: error:
     error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
      143 | int setErrNoFromWin32Error () {
          |                            ^
          |                             void
    |
143 | int setErrNoFromWin32Error () {
    |                            ^

1 error generated.
`x86_64-w64-mingw32-clang' failed in phase `C Compiler'. (Exit code: 1)

rts/win32/ConsoleHandler.c:227:9: error:
     error: call to undeclared function 'interruptIOManagerEvent'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      227 |         interruptIOManagerEvent ();
          |         ^
    |
227 |         interruptIOManagerEvent ();
    |         ^

rts/win32/ConsoleHandler.c:227:9: error:
     note: did you mean 'getIOManagerEvent'?
    |
227 |         interruptIOManagerEvent ();
    |         ^

rts/include/rts/IOInterface.h:27:10: error:
     note: 'getIOManagerEvent' declared here
       27 | void *   getIOManagerEvent  (void);
          |          ^
   |
27 | void *   getIOManagerEvent  (void);
   |          ^

1 error generated.
`x86_64-w64-mingw32-clang' failed in phase `C Compiler'. (Exit code: 1)

rts/win32/ConsoleHandler.c:196:9: error:
     error: call to undeclared function 'setThreadLabel'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      196 |         setThreadLabel(cap, t, "signal handler thread");
          |         ^
    |
196 |         setThreadLabel(cap, t, "signal handler thread");
    |         ^

rts/win32/ConsoleHandler.c:196:9: error:
     note: did you mean 'postThreadLabel'?
    |
196 |         setThreadLabel(cap, t, "signal handler thread");
    |         ^

rts/eventlog/EventLog.h:118:6: error:
     note: 'postThreadLabel' declared here
      118 | void postThreadLabel(Capability    *cap,
          |      ^
    |
118 | void postThreadLabel(Capability    *cap,
    |      ^

1 error generated.
`x86_64-w64-mingw32-clang' failed in phase `C Compiler'. (Exit code: 1)
```

(cherry picked from commit 710665bd)
(cherry picked from commit 9499ed96)
parent 9e0afbf3
No related branches found
No related tags found
No related merge requests found
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
* For the WINIO manager see base in the GHC.Event modules. * For the WINIO manager see base in the GHC.Event modules.
*/ */
#include "Rts.h" #include "Rts.h"
#include "MIOManager.h"
#include "ThreadLabels.h"
#include <windows.h> #include <windows.h>
#include "ConsoleHandler.h" #include "ConsoleHandler.h"
#include "Schedule.h" #include "Schedule.h"
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
* ---------------------------------------------------------------------------*/ * ---------------------------------------------------------------------------*/
#include "Rts.h" #include "Rts.h"
#include "IOManager.h"
#include "ThrIOManager.h" #include "ThrIOManager.h"
#include "MIOManager.h" #include "MIOManager.h"
#include "rts/OSThreads.h" #include "rts/OSThreads.h"
......
...@@ -140,7 +140,7 @@ static int setErrNoFromWin32Error (void); ...@@ -140,7 +140,7 @@ static int setErrNoFromWin32Error (void);
This function should only be called when the creation of the fd actually This function should only be called when the creation of the fd actually
failed and you want to return -1 for the fd. */ failed and you want to return -1 for the fd. */
static static
int setErrNoFromWin32Error () { int setErrNoFromWin32Error (void) {
switch (GetLastError()) { switch (GetLastError()) {
case ERROR_SUCCESS: case ERROR_SUCCESS:
errno = 0; errno = 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment