On Wed, 10 Aug 2011, Jason Merrill wrote:

This seems like a problem with the Solaris headers that should be handled by fixincludes.

The goal of the set of patches, apart from defining __cplusplus=199711L, was to start using the Solaris headers properly, without setting weird macros to ignore half of them or fixincluding half of their content out. Fixincluding this seems like a shame. Solaris headers declare std::tm, which is great. It just happens to break binary compatibility, so until the next great g++ ABI break, we need some kind of workaround. Telling the compiler that std::tm should be mangled as if it was ::tm looked like a simple enough solution.

We could of course surround the 4 struct definitions with:
#if __cplusplus >= 199711L
}
#endif

and:
#if __cplusplus >= 199711L
namespace std {
using ::thing;
#endif

Or the switch to __cplusplus=199711L will have to wait until the next ABI break...

I understand that you may not be happy with the idea of touching the mangler for a platform-specific temporary issue.

(I am speaking independently of the quality of the patch itself)

--
Marc Glisse

Reply via email to