On Sat, Feb 16, 2013 at 5:04 PM, Ian Lynagh <igloo@earth.li> wrote:
diff --git a/rts/Prelude.h b/rts/Prelude.h
index dcd7b94..89e80a0 100644
--- a/rts/Prelude.h
+++ b/rts/Prelude.h
@@ -93,6 +93,7 @@ PRELUDE_INFO(base_GHCziStable_StablePtr_con_info);

 #define runSparks_closure         DLL_IMPORT_DATA_REF(base_GHCziConcziSync_runSparks_closure)
 #define ensureIOManagerIsRunning_closure DLL_IMPORT_DATA_REF(base_GHCziConcziIO_ensureIOManagerIsRunning_closure)
+#define ioManagerCapabilitiesChanged_closure DLL_IMPORT_DATA_REF(base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure)
 #define runHandlers_closure       DLL_IMPORT_DATA_REF(base_GHCziConcziSignal_runHandlers_closure)

 #define flushStdHandles_closure   DLL_IMPORT_DATA_REF(base_GHCziTopHandler_flushStdHandles_closure)
 
diff --git a/rts/Schedule.c b/rts/Schedule.c
index f39ef96..ea779dd 100644
--- a/rts/Schedule.c
+++ b/rts/Schedule.c
@@ -2070,7 +2070,7 @@ setNumCapabilities (nat new_n_capabilities USED_IF_THREADS)
     // Notify IO manager that the number of capabilities has changed.
     rts_evalIO(
        &cap,
-       &base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure,
+       DLL_IMPORT_DATA_REF(base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure),
        NULL);


Shouldn't this use the new #define you added to Prelude.h just above?

This bit in rts\Win32\ThrIOManager.c should also use the Prelude.h macro:

#if defined(COMPILING_WINDOWS_DLL)
#  if defined(x86_64_HOST_ARCH)
        rts_evalIO(&cap,__imp_base_GHCziConcziIO_ensureIOManagerIsRunning_closure,NULL);
#  else
        rts_evalIO(&cap,_imp__base_GHCziConcziIO_ensureIOManagerIsRunning_closure,NULL);
#  endif
#else
        rts_evalIO(&cap,&base_GHCziConcziIO_ensureIOManagerIsRunning_closure,NULL);
#endif


Bill