On Thu, Aug 16, 2012 at 12:12 PM, Diego Novillo <dnovi...@google.com> wrote: > > This is the patch I'm currently testing. I need someone with a very old > toolchain (4.1 or earlier) to also give this a try (the original problem > does not occur in g++ more recent than 4.1). > > > Thanks. Diego. > > diff --git a/gcc/ChangeLog b/gcc/ChangeLog > index a8ff00d..8798b8f 100644 > --- a/gcc/ChangeLog > +++ b/gcc/ChangeLog > @@ -1,5 +1,11 @@ > > 2012-08-16 Diego Novillo <dnovi...@google.com> > > + PR bootstrap/54281 > + * intl.h: Prevent libintl.h from being included when > + ENABLE_NLS is not set.
It's hard to convince myself that this patch is portable. I don't think we can assume that every system that provides <libintl.h> uses _LIBINTL_H as the preprocessor guard. The issue is that we must not #include <libintl.h> after #defining those macros. So the fix is to #include <libintl.h> in all cases before #defining those macros. Your proposal of unconditionally doing #include <libintl.h> is not a good idea, because <libintl.h> is not available on every system. But we are compiling host files here, so we can just use autoconf. I recommend that you add libintl.h to the AC_CHECK_HEADERS list in gcc/configure.ac, and then change intl.h to do #ifdef HAVE_LIBINTL_H #include <libintl.h> #endif before the #ifdef ENABLE_NLS test. Ian