summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Hansson <andreas.hansson@arm.com>2012-02-29 04:26:58 -0500
committerAndreas Hansson <andreas.hansson@arm.com>2012-02-29 04:26:58 -0500
commit88abdc0fad3f7670a112ade487c1a8cb848d56bc (patch)
tree204f3cba9dfee5b9f53f6fb2e9ff15e872d17b9d
parent13e14ba93c8bc40c861d06b30f7a02f5c44514e4 (diff)
downloadgem5-88abdc0fad3f7670a112ade487c1a8cb848d56bc.tar.xz
SWIG: Ensure ptrdiff_t is a known type in gcc >= 4.6.1
This patch fixes a compilation error that occurs with gcc >= 4.6.1, caused by swig not including cstddef and not using the std:: namespace prefix for ptrdiff_t. There is an old patch, http://reviews.m5sim.org/r/913/ that no longer applies cleanly and this might be re-iterating the same issue. We work around the problem by always enforcing the inclusion of cstddef in all swig interface declarations, and also by explicitly using std::ptrdiff_t.
-rw-r--r--src/python/m5/SimObject.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/python/m5/SimObject.py b/src/python/m5/SimObject.py
index a2de7a086..9c6a32f41 100644
--- a/src/python/m5/SimObject.py
+++ b/src/python/m5/SimObject.py
@@ -408,6 +408,19 @@ class MetaSimObject(type):
for param in params:
param.cxx_predecls(code)
cls.export_method_cxx_predecls(code)
+ code('''\
+/**
+ * This is a workaround for bug in swig. Prior to gcc 4.6.1 the STL
+ * headers like vector, string, etc. used to automatically pull in
+ * the cstddef header but starting with gcc 4.6.1 they no longer do.
+ * This leads to swig generated a file that does not compile so we
+ * explicitly include cstddef. Additionally, including version 2.0.4,
+ * swig uses ptrdiff_t without the std:: namespace prefix which is
+ * required with gcc 4.6.1. We explicitly provide access to it.
+ */
+#include <cstddef>
+using std::ptrdiff_t;
+''')
code('%}')
code()