From: Andreas Hansson Date: Wed, 29 Feb 2012 09:26:58 +0000 (-0500) Subject: SWIG: Ensure ptrdiff_t is a known type in gcc >= 4.6.1 X-Git-Tag: stable_2012_06_28~213 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=88abdc0fad3f7670a112ade487c1a8cb848d56bc;p=gem5.git 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. --- 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 +using std::ptrdiff_t; +''') code('%}') code()