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

Reply via email to