summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2010-01-18 10:11:27 +0000
committersmatz <smatz@openttd.org>2010-01-18 10:11:27 +0000
commit9fc910fbc2ec3c6739f0d22007d26f6d1bc27a13 (patch)
tree86b7bf7ded4363a005620d1157f864a42f55ff25
parent23a8d2239f22940553ff02bb652cb19a6a0feb64 (diff)
downloadopenttd-9fc910fbc2ec3c6739f0d22007d26f6d1bc27a13.tar.xz
(svn r18855) -Codechange: record compiler name and version in the crash log
-rw-r--r--src/crashlog.cpp25
-rw-r--r--src/crashlog.h8
-rw-r--r--src/os/macosx/crashlog_osx.cpp8
-rw-r--r--src/os/unix/crashlog_unix.cpp8
-rw-r--r--src/os/windows/crashlog_win.cpp12
5 files changed, 44 insertions, 17 deletions
diff --git a/src/crashlog.cpp b/src/crashlog.cpp
index 60dbb480e..8649f396d 100644
--- a/src/crashlog.cpp
+++ b/src/crashlog.cpp
@@ -35,6 +35,30 @@
/* static */ char *CrashLog::gamelog_buffer = NULL;
/* static */ const char *CrashLog::gamelog_last = NULL;
+char *CrashLog::LogCompiler(char *buffer, const char *last) const
+{
+ buffer += seprintf(buffer, last, " Compiler: "
+#if defined(_MSC_VER)
+ "MSVC %d", _MSC_VER
+#elif defined(__ICC) && defined(__GNUC__)
+ "ICC %d (GCC %d.%d.%d mode)", __ICC, __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__
+#elif defined(__ICC)
+ "ICC %d", __ICC
+#elif defined(__GNUC__)
+ "GCC %d.%d.%d", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__
+#elif defined(__WATCOMC__)
+ "WatcomC %d", __WATCOMC__
+#else
+ "<unknown>"
+#endif
+ );
+#if defined(__VERSION__)
+ return buffer + seprintf(buffer, last, " \"" __VERSION__ "\"\n\n");
+#else
+ return buffer + seprintf(buffer, last, "\n\n");
+#endif
+}
+
/* virtual */ char *CrashLog::LogRegisters(char *buffer, const char *last) const
{
/* Stub implementation; not all OSes support this. */
@@ -233,6 +257,7 @@ char *CrashLog::FillCrashLog(char *buffer, const char *last) const
buffer = this->LogRegisters(buffer, last);
buffer = this->LogStacktrace(buffer, last);
buffer = this->LogOSVersion(buffer, last);
+ buffer = this->LogCompiler(buffer, last);
buffer = this->LogConfiguration(buffer, last);
buffer = this->LogLibraries(buffer, last);
buffer = this->LogModules(buffer, last);
diff --git a/src/crashlog.h b/src/crashlog.h
index 5bc48dd3b..80ccc12ec 100644
--- a/src/crashlog.h
+++ b/src/crashlog.h
@@ -41,6 +41,14 @@ protected:
virtual char *LogOSVersion(char *buffer, const char *last) const = 0;
/**
+ * Writes compiler (and its version, if available) to the buffer.
+ * @param buffer The begin where to write at.
+ * @param last The last position in the buffer to write to.
+ * @return the position of the \c '\0' character after the buffer.
+ */
+ virtual char *LogCompiler(char *buffer, const char *last) const;
+
+ /**
* Writes actually encountered error to the buffer.
* @param buffer The begin where to write at.
* @param last The last position in the buffer to write to.
diff --git a/src/os/macosx/crashlog_osx.cpp b/src/os/macosx/crashlog_osx.cpp
index 77a363237..42c30dcd5 100644
--- a/src/os/macosx/crashlog_osx.cpp
+++ b/src/os/macosx/crashlog_osx.cpp
@@ -59,10 +59,10 @@ class CrashLogOSX : public CrashLog {
return buffer + seprintf(buffer, last,
"Operating system:\n"
- " Name: Mac OS X\n"
- " Release: %d.%d.%d\n"
- " Machine: %s\n"
- " Min Ver: %d\n\n",
+ " Name: Mac OS X\n"
+ " Release: %d.%d.%d\n"
+ " Machine: %s\n"
+ " Min Ver: %d\n",
ver_maj, ver_min, ver_bug,
arch != NULL ? arch->description : "unknown",
MAC_OS_X_VERSION_MIN_REQUIRED
diff --git a/src/os/unix/crashlog_unix.cpp b/src/os/unix/crashlog_unix.cpp
index 72d023825..ee86cb5ee 100644
--- a/src/os/unix/crashlog_unix.cpp
+++ b/src/os/unix/crashlog_unix.cpp
@@ -43,10 +43,10 @@ class CrashLogUnix : public CrashLog {
return buffer + seprintf(buffer, last,
"Operating system:\n"
- " Name: %s\n"
- " Release: %s\n"
- " Version: %s\n"
- " Machine: %s\n\n",
+ " Name: %s\n"
+ " Release: %s\n"
+ " Version: %s\n"
+ " Machine: %s\n",
name.sysname,
name.release,
name.version,
diff --git a/src/os/windows/crashlog_win.cpp b/src/os/windows/crashlog_win.cpp
index 30a4cf7db..7656f7c26 100644
--- a/src/os/windows/crashlog_win.cpp
+++ b/src/os/windows/crashlog_win.cpp
@@ -78,18 +78,12 @@ public:
return buffer + seprintf(buffer, last,
"Operating system:\n"
- " Name: Windows\n"
- " Release: %d.%d.%d (%s)\n"
- " MSVC: %s\n\n",
+ " Name: Windows\n"
+ " Release: %d.%d.%d (%s)\n",
(int)os.dwMajorVersion,
(int)os.dwMinorVersion,
(int)os.dwBuildNumber,
- os.szCSDVersion,
-#if defined(_MSC_VER)
- "Yes"
-#else
- "No"
-#endif
+ os.szCSDVersion
);
}