[project @ 1999-07-14 13:44:19 by simonmar]
[ghc-hetmet.git] / ghc / rts / Printer.c
index cf0e06c..8be29aa 100644 (file)
@@ -1,6 +1,6 @@
 
 /* -----------------------------------------------------------------------------
- * $Id: Printer.c,v 1.7 1999/03/01 14:47:06 sewardj Exp $
+ * $Id: Printer.c,v 1.15 1999/07/14 13:44:19 simonmar Exp $
  *
  * Copyright (c) 1994-1999.
  *
@@ -9,6 +9,7 @@
  * ---------------------------------------------------------------------------*/
 
 #include "Rts.h"
+#include "Printer.h"
 
 #ifdef DEBUG
 
@@ -17,8 +18,6 @@
 #include "Bytecodes.h"  /* for InstrPtr */
 #include "Disassembler.h"
 
-#include "Printer.h"
-
 /* --------------------------------------------------------------------------
  * local function decls
  * ------------------------------------------------------------------------*/
@@ -40,6 +39,7 @@ static void    printZcoded   ( const char *raw );
  * ------------------------------------------------------------------------*/
 
 
+#ifdef INTERPRETER
 extern void* itblNames[];
 extern int   nItblNames;
 char* lookupHugsItblName ( void* v )
@@ -49,19 +49,22 @@ char* lookupHugsItblName ( void* v )
       if (itblNames[i] == v) return itblNames[i+1];
    return NULL;
 }
+#endif
 
-extern void printPtr( StgPtr p )
+void printPtr( StgPtr p )
 {
+#ifdef INTERPRETER
     char* str;
+#endif
     const char *raw;
     if (lookupGHCName( p, &raw )) {
         printZcoded(raw);
 #ifdef INTERPRETER
     } else if ((raw = lookupHugsName(p)) != 0) {
         fprintf(stderr, "%s", raw);
-#endif
     } else if ((str = lookupHugsItblName(p)) != 0) {
         fprintf(stderr, "%p=%s", p, str);
+#endif
     } else {
         fprintf(stderr, "%p", p);
     }
@@ -177,6 +180,14 @@ void printClosure( StgClosure *obj )
             fprintf(stderr,")\n"); 
             break;
 
+    case SE_BLACKHOLE:
+            fprintf(stderr,"SE_BH\n"); 
+            break;
+
+    case SE_CAF_BLACKHOLE:
+            fprintf(stderr,"SE_CAF_BH\n"); 
+            break;
+
     case BLACKHOLE:
             fprintf(stderr,"BH\n"); 
             break;
@@ -348,6 +359,7 @@ StgPtr printStackObj( StgPtr sp )
     } else {
         StgClosure* c = (StgClosure*)(*sp);
         printPtr((StgPtr)*sp);
+#ifdef INTERPRETER
         if (c == &ret_bco_info) {
            fprintf(stderr, "\t\t");
            fprintf(stderr, "ret_bco_info\n" );
@@ -356,6 +368,7 @@ StgPtr printStackObj( StgPtr sp )
            fprintf(stderr, "\t\t\t");
            fprintf(stderr, "ConstrInfoTable\n" );
         } else
+#endif
         if (get_itbl(c)->type == BCO) {
            fprintf(stderr, "\t\t\t");
            fprintf(stderr, "BCO(...)\n"); 
@@ -372,7 +385,7 @@ StgPtr printStackObj( StgPtr sp )
 
 void printStackChunk( StgPtr sp, StgPtr spBottom )
 {
-    StgNat32 bitmap;
+    StgWord32 bitmap;
     const StgInfoTable *info;
 
     ASSERT(sp <= spBottom);
@@ -700,7 +713,10 @@ static void printZcoded( const char *raw )
  * Symbol table loading
  * ------------------------------------------------------------------------*/
 
-#ifdef HAVE_BFD_H
+/* Causing linking trouble on Win32 plats, so I'm
+   disabling this for now. 
+*/
+#if defined(HAVE_BFD_H) && !defined(_WIN32)
 
 #include <bfd.h>
 
@@ -719,6 +735,7 @@ static rtsBool isReal( flagword flags, const char *name )
         return rtsFalse;
     }
 #else
+    (void)flags;   /* keep gcc -Wall happy */
     if (*name == '\0'  || 
        (name[0] == 'g' && name[1] == 'c' && name[2] == 'c') ||
        (name[0] == 'c' && name[1] == 'c' && name[2] == '.')) {
@@ -805,4 +822,36 @@ extern void DEBUG_LoadSymbols( char *name )
 
 #endif /* HAVE_BFD_H */
 
+#include "StoragePriv.h"
+
+void
+findPtr(P_ p)
+{
+  nat s, g;
+  P_ q;
+  bdescr *bd;
+
+  for (g = 0; g < RtsFlags.GcFlags.generations; g++) {
+    for (s = 0; s < generations[g].n_steps; s++) {
+      for (bd = generations[g].steps[s].blocks; bd; bd = bd->link) {
+       for (q = bd->start; q < bd->free; q++) {
+         if (*q == (W_)p) {
+           printf("%p\n", q);
+         }
+       }
+      }
+    }
+  }
+}
+
+#else /* DEBUG */
+void printPtr( StgPtr p )
+{
+    fprintf(stderr, "ptr 0x%p (enable -DDEBUG for more info) " , p );
+}
+  
+void printObj( StgClosure *obj )
+{
+    fprintf(stderr, "obj 0x%p (enable -DDEBUG for more info) " , obj );
+}
 #endif /* DEBUG */