Loader: Use address mask provided to load*Symbols when loading the symbols from the...
[gem5.git] / src / base / misc.cc
index b0c769ac6386615c2f96cb0c3ff8be39eeab9b32..65cb133568b521ceedd80c50869f5297d1790ae0 100644 (file)
 #include <cstdlib>
 #include <iostream>
 #include <string>
+#include <zlib.h>
 
 #include "base/cprintf.hh"
 #include "base/hostinfo.hh"
 #include "base/misc.hh"
 #include "base/output.hh"
 #include "base/trace.hh"
+#include "base/types.hh"
 #include "base/varargs.hh"
-#include "sim/host.hh"
 #include "sim/core.hh"
 
 using namespace std;
@@ -68,15 +69,20 @@ __exit_message(const char *prefix, int code,
       default:
         format += "\n";
     }
+    
+    uint32_t crc = crc32(0, (const Bytef*)fmt, strlen(fmt));
 
     format += " @ cycle %d\n[%s:%s, line %d]\n";
     format += "Memory Usage: %ld KBytes\n";
+    format += "For more information see: http://www.m5sim.org/%s/%x\n";
 
     args.push_back(curTick);
     args.push_back(func);
     args.push_back(file);
     args.push_back(line);
     args.push_back(memUsage());
+    args.push_back(prefix);
+    args.push_back(crc);
 
     ccprintf(cerr, format.c_str(), args);
 
@@ -103,6 +109,8 @@ __base_message(std::ostream &stream, const char *prefix, bool verbose,
       default:
         format += "\n";
     }
+    
+    uint32_t crc = crc32(0, (const Bytef*)fmt, strlen(fmt));
 
     if (verbose) {
         format += " @ cycle %d\n[%s:%s, line %d]\n";
@@ -112,5 +120,11 @@ __base_message(std::ostream &stream, const char *prefix, bool verbose,
         args.push_back(line);
     }
 
+    if (strcmp(prefix, "warn") == 0) {
+        format += "For more information see: http://www.m5sim.org/%s/%x\n";
+        args.push_back(prefix);
+        args.push_back(crc);
+    }
+
     ccprintf(stream, format.c_str(), args);
 }