[project @ 2000-07-11 19:17:20 by panne]
[ghc-hetmet.git] / ghc / interpreter / interface.c
index ce57edc..8b81bfe 100644 (file)
@@ -7,8 +7,8 @@
  * Hugs version 1.4, December 1997
  *
  * $RCSfile: interface.c,v $
- * $Revision: 1.51 $
- * $Date: 2000/04/11 16:49:20 $
+ * $Revision: 1.59 $
+ * $Date: 2000/05/26 10:14:33 $
  * ------------------------------------------------------------------------*/
 
 #include "hugsbasictypes.h"
@@ -17,9 +17,9 @@
 #include "errors.h"
 #include "object.h"
 
+#include "Rts.h"       /* to make StgPtr visible in Assembler.h */
 #include "Assembler.h"  /* for wrapping GHC objects */
 
-
 /*#define DEBUG_IFACE*/
 #define VERBOSE FALSE
 
@@ -2486,7 +2486,7 @@ Type type; {
  * ------------------------------------------------------------------------*/
 
 #define EXTERN_SYMS_ALLPLATFORMS     \
-      Sym(MainRegTable)              \
+      SymX(MainRegTable)              \
       Sym(stg_gc_enter_1)            \
       Sym(stg_gc_noregs)             \
       Sym(stg_gc_seq_1)              \
@@ -2495,136 +2495,130 @@ Type type; {
       Sym(stg_chk_0)                 \
       Sym(stg_chk_1)                 \
       Sym(stg_gen_chk)               \
-      Sym(stg_exit)                  \
-      Sym(stg_update_PAP)            \
-      Sym(stg_error_entry)           \
-      Sym(__ap_2_upd_info)           \
-      Sym(__ap_3_upd_info)           \
-      Sym(__ap_4_upd_info)           \
-      Sym(__ap_5_upd_info)           \
-      Sym(__ap_6_upd_info)           \
-      Sym(__ap_7_upd_info)           \
-      Sym(__ap_8_upd_info)           \
-      Sym(__sel_0_upd_info)          \
-      Sym(__sel_1_upd_info)          \
-      Sym(__sel_2_upd_info)          \
-      Sym(__sel_3_upd_info)          \
-      Sym(__sel_4_upd_info)          \
-      Sym(__sel_5_upd_info)          \
-      Sym(__sel_6_upd_info)          \
-      Sym(__sel_7_upd_info)          \
-      Sym(__sel_8_upd_info)          \
-      Sym(__sel_9_upd_info)          \
-      Sym(__sel_10_upd_info)         \
-      Sym(__sel_11_upd_info)         \
-      Sym(__sel_12_upd_info)         \
-      Sym(Upd_frame_info)            \
-      Sym(seq_frame_info)            \
-      Sym(CAF_BLACKHOLE_info)        \
-      Sym(IND_STATIC_info)           \
-      Sym(EMPTY_MVAR_info)           \
-      Sym(MUT_ARR_PTRS_FROZEN_info)  \
-      Sym(newCAF)                    \
-      Sym(putMVarzh_fast)            \
-      Sym(newMVarzh_fast)            \
-      Sym(takeMVarzh_fast)           \
-      Sym(catchzh_fast)              \
-      Sym(raisezh_fast)              \
-      Sym(delayzh_fast)              \
-      Sym(yieldzh_fast)              \
-      Sym(killThreadzh_fast)         \
-      Sym(waitReadzh_fast)           \
-      Sym(waitWritezh_fast)          \
-      Sym(CHARLIKE_closure)          \
-      Sym(INTLIKE_closure)           \
-      Sym(suspendThread)             \
-      Sym(resumeThread)              \
-      Sym(stackOverflow)             \
-      Sym(int2Integerzh_fast)        \
-      Sym(stg_gc_unbx_r1)            \
-      Sym(ErrorHdrHook)              \
-      Sym(makeForeignObjzh_fast)     \
-      Sym(__encodeDouble)            \
-      Sym(decodeDoublezh_fast)       \
-      Sym(isDoubleNaN)               \
-      Sym(isDoubleInfinite)          \
-      Sym(isDoubleDenormalized)      \
-      Sym(isDoubleNegativeZero)      \
-      Sym(__encodeFloat)             \
-      Sym(decodeFloatzh_fast)        \
-      Sym(isFloatNaN)                \
-      Sym(isFloatInfinite)           \
-      Sym(isFloatDenormalized)       \
-      Sym(isFloatNegativeZero)       \
-      Sym(__int_encodeFloat)         \
-      Sym(__int_encodeDouble)        \
-      Sym(mpz_cmp_si)                \
-      Sym(mpz_cmp)                   \
-      Sym(__mpn_gcd_1)               \
-      Sym(gcdIntegerzh_fast)         \
-      Sym(newArrayzh_fast)           \
-      Sym(unsafeThawArrayzh_fast)    \
-      Sym(newDoubleArrayzh_fast)     \
-      Sym(newFloatArrayzh_fast)      \
-      Sym(newAddrArrayzh_fast)       \
-      Sym(newWordArrayzh_fast)       \
-      Sym(newIntArrayzh_fast)        \
-      Sym(newCharArrayzh_fast)       \
-      Sym(newMutVarzh_fast)          \
-      Sym(quotRemIntegerzh_fast)     \
-      Sym(quotIntegerzh_fast)        \
-      Sym(remIntegerzh_fast)         \
-      Sym(divExactIntegerzh_fast)    \
-      Sym(divModIntegerzh_fast)      \
-      Sym(timesIntegerzh_fast)       \
-      Sym(minusIntegerzh_fast)       \
-      Sym(plusIntegerzh_fast)        \
-      Sym(addr2Integerzh_fast)       \
-      Sym(mkWeakzh_fast)             \
-      Sym(prog_argv)                 \
-      Sym(prog_argc)                 \
+      SymX(stg_exit)                  \
+      SymX(stg_update_PAP)            \
+      SymX(stg_error_entry)           \
+      SymX(__ap_2_upd_info)           \
+      SymX(__ap_3_upd_info)           \
+      SymX(__ap_4_upd_info)           \
+      SymX(__ap_5_upd_info)           \
+      SymX(__ap_6_upd_info)           \
+      SymX(__ap_7_upd_info)           \
+      SymX(__ap_8_upd_info)           \
+      SymX(__sel_0_upd_info)          \
+      SymX(__sel_1_upd_info)          \
+      SymX(__sel_2_upd_info)          \
+      SymX(__sel_3_upd_info)          \
+      SymX(__sel_4_upd_info)          \
+      SymX(__sel_5_upd_info)          \
+      SymX(__sel_6_upd_info)          \
+      SymX(__sel_7_upd_info)          \
+      SymX(__sel_8_upd_info)          \
+      SymX(__sel_9_upd_info)          \
+      SymX(__sel_10_upd_info)         \
+      SymX(__sel_11_upd_info)         \
+      SymX(__sel_12_upd_info)         \
+      SymX(upd_frame_info)            \
+      SymX(seq_frame_info)            \
+      SymX(CAF_BLACKHOLE_info)        \
+      SymX(IND_STATIC_info)           \
+      SymX(EMPTY_MVAR_info)           \
+      SymX(MUT_ARR_PTRS_FROZEN_info)  \
+      SymX(newCAF)                    \
+      SymX(putMVarzh_fast)            \
+      SymX(newMVarzh_fast)            \
+      SymX(takeMVarzh_fast)           \
+      SymX(catchzh_fast)              \
+      SymX(raisezh_fast)              \
+      SymX(delayzh_fast)              \
+      SymX(yieldzh_fast)              \
+      SymX(killThreadzh_fast)         \
+      SymX(waitReadzh_fast)           \
+      SymX(waitWritezh_fast)          \
+      SymX(CHARLIKE_closure)          \
+      SymX(INTLIKE_closure)           \
+      SymX(suspendThread)             \
+      SymX(resumeThread)              \
+      SymX(stackOverflow)             \
+      SymX(int2Integerzh_fast)        \
+      Sym(stg_gc_unbx_r1)             \
+      SymX(ErrorHdrHook)              \
+      SymX(mkForeignObjzh_fast)       \
+      SymX(__encodeDouble)            \
+      SymX(decodeDoublezh_fast)       \
+      SymX(isDoubleNaN)               \
+      SymX(isDoubleInfinite)          \
+      SymX(isDoubleDenormalized)      \
+      SymX(isDoubleNegativeZero)      \
+      SymX(__encodeFloat)             \
+      SymX(decodeFloatzh_fast)        \
+      SymX(isFloatNaN)                \
+      SymX(isFloatInfinite)           \
+      SymX(isFloatDenormalized)       \
+      SymX(isFloatNegativeZero)       \
+      SymX(__int_encodeFloat)         \
+      SymX(__int_encodeDouble)        \
+      SymX(mpz_cmp_si)                \
+      SymX(mpz_cmp)                   \
+      SymX(__mpn_gcd_1)               \
+      SymX(gcdIntegerzh_fast)         \
+      SymX(newArrayzh_fast)           \
+      SymX(unsafeThawArrayzh_fast)    \
+      SymX(newDoubleArrayzh_fast)     \
+      SymX(newFloatArrayzh_fast)      \
+      SymX(newAddrArrayzh_fast)       \
+      SymX(newWordArrayzh_fast)       \
+      SymX(newIntArrayzh_fast)        \
+      SymX(newCharArrayzh_fast)       \
+      SymX(newMutVarzh_fast)          \
+      SymX(quotRemIntegerzh_fast)     \
+      SymX(quotIntegerzh_fast)        \
+      SymX(remIntegerzh_fast)         \
+      SymX(divExactIntegerzh_fast)    \
+      SymX(divModIntegerzh_fast)      \
+      SymX(timesIntegerzh_fast)       \
+      SymX(minusIntegerzh_fast)       \
+      SymX(plusIntegerzh_fast)        \
+      SymX(addr2Integerzh_fast)       \
+      SymX(mkWeakzh_fast)             \
+      SymX(prog_argv)                 \
+      SymX(prog_argc)                 \
       Sym(resetNonBlockingFd)        \
-      Sym(getStablePtr)              \
-      Sym(stable_ptr_table)          \
+      SymX(getStablePtr)              \
+      SymX(stable_ptr_table)          \
       Sym(createAdjThunk)            \
-      Sym(shutdownHaskellAndExit)    \
+      SymX(shutdownHaskellAndExit)    \
       Sym(stg_enterStackTop)         \
-      Sym(CAF_UNENTERED_entry)       \
+      SymX(CAF_UNENTERED_entry)       \
       Sym(stg_yield_to_Hugs)         \
       Sym(StgReturn)                 \
       Sym(init_stack)                \
+      SymX(blockAsyncExceptionszh_fast)    \
+      SymX(unblockAsyncExceptionszh_fast)  \
                                      \
       /* needed by libHS_cbits */    \
       SymX(malloc)                   \
       SymX(close)                    \
-      Sym(mkdir)                     \
       SymX(close)                    \
       Sym(opendir)                   \
       Sym(closedir)                  \
       Sym(readdir)                   \
-      Sym(tcgetattr)                 \
-      Sym(tcsetattr)                 \
       SymX(isatty)                   \
       SymX(read)                     \
       SymX(lseek)                    \
       SymX(write)                    \
-      Sym(getrusage)                 \
       SymX(realloc)                  \
       SymX(getcwd)                   \
       SymX(free)                     \
       SymX(strcpy)                   \
-      Sym(fcntl)                     \
       SymX(fprintf)                  \
       SymX(exit)                     \
-      Sym(open)                      \
       SymX(unlink)                   \
       SymX(memcpy)                   \
       SymX(memchr)                   \
       SymX(rmdir)                    \
       SymX(rename)                   \
       SymX(chdir)                    \
-      SymX(execl)                    \
-      Sym(waitpid)                   \
       SymX(getenv)                   \
 
 #define EXTERN_SYMS_cygwin32         \
@@ -2641,25 +2635,32 @@ Type type; {
       SymX(__imp__tzname)            \
       SymX(__imp__timezone)          \
       SymX(tzset)                    \
-      Sym(log)                       \
-      Sym(exp)                       \
+      SymX(log)                      \
+      SymX(exp)                      \
       Sym(sqrt)                      \
       Sym(sin)                       \
       Sym(cos)                       \
-      Sym(tan)                       \
-      Sym(asin)                      \
-      Sym(acos)                      \
-      Sym(atan)                      \
-      Sym(sinh)                      \
-      Sym(cosh)                      \
-      Sym(tanh)                      \
-      Sym(pow)                       \
-      Sym(__errno)                   \
+      SymX(pow)                      \
+      SymX(__errno)                  \
       Sym(stat)                      \
-      Sym(fstat)
+      Sym(fstat)                     \
+      Sym(gettimeofday)              \
+      SymX(localtime)                \
+      SymX(strftime)                 \
+      SymX(mktime)                   \
+      SymX(execl)                    \
+      Sym(mkdir)                     \
+      Sym(open)                      \
+      Sym(tcgetattr)                 \
+      Sym(tcsetattr)                 \
+      Sym(getrusage)                 \
+      Sym(fcntl)                     \
+      Sym(waitpid)                   \
+      SymX(gmtime)                   \
+
 
 #define EXTERN_SYMS_linux            \
-      Sym(__errno_location)          \
+      SymX(__errno_location)         \
       Sym(__xstat)                   \
       Sym(__fxstat)                  \
       Sym(__lxstat)                  \
@@ -2675,7 +2676,16 @@ Type type; {
       SymX(gmtime)                   \
       Sym(setitimer)                 \
       Sym(chmod)                     \
+      SymX(execl)                    \
+      Sym(mkdir)                     \
+      Sym(open)                      \
+      Sym(tcgetattr)                 \
+      Sym(tcsetattr)                 \
       Sym(gettimeofday)              \
+      Sym(getrusage)                 \
+      Sym(waitpid)                   \
+      Sym(fcntl)                     \
+
 
 #define EXTERN_SYMS_solaris2         \
       SymX(gettimeofday)             \
@@ -2693,6 +2703,9 @@ Type type; {
 #define EXTERN_SYMS_THISPLATFORM EXTERN_SYMS_cygwin32
 #endif
 
+#if defined(mingw32_TARGET_OS)
+#define EXTERN_SYMS_THISPLATFORM /* */
+#endif
 
 
 
@@ -2706,9 +2719,9 @@ EXTERN_SYMS_THISPLATFORM
 
 
 #define Sym(vvv)  { MAYBE_LEADING_UNDERSCORE_STR(#vvv), \
-                    &(vvv) },
+                    (void*)(&(vvv)) },
 #define SymX(vvv) { MAYBE_LEADING_UNDERSCORE_STR(#vvv), \
-                    &(vvv) },
+                    (void*)(&(vvv)) },
 OSym rtsTab[] 
    = { 
        EXTERN_SYMS_ALLPLATFORMS
@@ -2764,7 +2777,7 @@ void* lookupObjName ( char* nm )
    if (strlen(nm2+first_real_char) > 7
        && strncmp(nm2+first_real_char, "__init_", 7)==0) {
       t = unZcodeThenFindText(nm2+first_real_char+7);
-      if (t == findText("PrelGHC")) return (4+NULL); /* kludge */
+      if (t == findText("PrelGHC")) return (4+(char*)NULL); /* kludge */
       m = findModule(t);
       if (isNull(m)) goto dire_straits;
       a = lookupOTabName ( m, nm );
@@ -2826,7 +2839,7 @@ int is_not_dynamically_loaded_ptr ( char* p )
  * Control:
  * ------------------------------------------------------------------------*/
 
-Void interface(what)
+Void interfayce(what)
 Int what; {
     switch (what) {
        case POSTPREL: break;