* [bootstrap] Tentative fix for PR 54281
@ 2012-08-16 11:56 Diego Novillo
2012-08-16 13:11 ` Richard Guenther
2012-08-16 17:50 ` Magnus Fromreide
0 siblings, 2 replies; 22+ messages in thread
From: Diego Novillo @ 2012-08-16 11:56 UTC (permalink / raw)
To: gcc-patches, Richard Guenther
Richi, this implements your idea for fixing PR 54281. I don't
have an old enough compiler. Could you please test it in your
system?
I debated whether to remove the GENERATOR_FILE predicate from the
inclusion (some files include gmp.h unconditionally). I think it
could be removed, but only a minority of files build with
GENERATOR_FILE set, so it didn't seem harmful.
OK if tests pass?
Diego.
2012-08-16 Diego Novillo <dnovillo@google.com>
Richard Guenther <rguenther@suse.de>
PR bootstrap/54281
* double-int.h: Move including of gmp.h ...
* system.h: ... here.
* realmpfr.h: Do not include gmp.h.
* tree-ssa-loop-niter.c: Do not include gmp.h.
fortran/ChangeLog
* gfortran.h: Do not include gmp.h.
diff --git a/gcc/double-int.h b/gcc/double-int.h
index 3d9aa2c..7ea0528 100644
--- a/gcc/double-int.h
+++ b/gcc/double-int.h
@@ -20,10 +20,6 @@ along with GCC; see the file COPYING3. If not see
#ifndef DOUBLE_INT_H
#define DOUBLE_INT_H
-#ifndef GENERATOR_FILE
-#include <gmp.h>
-#endif
-
/* A large integer is currently represented as a pair of HOST_WIDE_INTs.
It therefore represents a number with precision of
2 * HOST_BITS_PER_WIDE_INT bits (it is however possible that the
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index 7c4c0a4..611d16d 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -1681,7 +1681,6 @@ gfc_intrinsic_sym;
EXPR_COMPCALL Function (or subroutine) call of a procedure pointer
component or type-bound procedure. */
-#include <gmp.h>
#include <mpfr.h>
#include <mpc.h>
#define GFC_RND_MODE GMP_RNDN
diff --git a/gcc/realmpfr.h b/gcc/realmpfr.h
index ab234e9..ada876e 100644
--- a/gcc/realmpfr.h
+++ b/gcc/realmpfr.h
@@ -22,7 +22,10 @@
#ifndef GCC_REALGMP_H
#define GCC_REALGMP_H
-#include <gmp.h>
+/* Note that we do not include gmp.h. It is included in system.h
+ because it wrecks intl.h when compiling in C++ mode.
+ See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54281 for details. */
+
#include <mpfr.h>
#include <mpc.h>
#include "real.h"
diff --git a/gcc/system.h b/gcc/system.h
index 9e7d503..0ccd991 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -1037,4 +1037,8 @@ helper_const_non_const_cast (const char *p)
#define DEBUG_VARIABLE
#endif
+#ifndef GENERATOR_FILE
+#include <gmp.h>
+#endif
+
#endif /* ! GCC_SYSTEM_H */
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c
index c719a74..4c67c26 100644
--- a/gcc/tree-ssa-loop-niter.c
+++ b/gcc/tree-ssa-loop-niter.c
@@ -38,7 +38,6 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "diagnostic-core.h"
#include "tree-inline.h"
-#include "gmp.h"
#define SWAP(X, Y) do { affine_iv *tmp = (X); (X) = (Y); (Y) = tmp; } while (0)
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-16 11:56 [bootstrap] Tentative fix for PR 54281 Diego Novillo
@ 2012-08-16 13:11 ` Richard Guenther
2012-08-16 13:29 ` Diego Novillo
2012-08-16 13:47 ` Diego Novillo
2012-08-16 17:50 ` Magnus Fromreide
1 sibling, 2 replies; 22+ messages in thread
From: Richard Guenther @ 2012-08-16 13:11 UTC (permalink / raw)
To: Diego Novillo; +Cc: gcc-patches
On Thu, 16 Aug 2012, Diego Novillo wrote:
> Richi, this implements your idea for fixing PR 54281. I don't
> have an old enough compiler. Could you please test it in your
> system?
>
> I debated whether to remove the GENERATOR_FILE predicate from the
> inclusion (some files include gmp.h unconditionally). I think it
> could be removed, but only a minority of files build with
> GENERATOR_FILE set, so it didn't seem harmful.
>
> OK if tests pass?
It fixes it.
Thus, ok from my side (if your testing succeeds).
Thanks,
Richard.
>
> Diego.
>
>
> 2012-08-16 Diego Novillo <dnovillo@google.com>
> Richard Guenther <rguenther@suse.de>
>
> PR bootstrap/54281
> * double-int.h: Move including of gmp.h ...
> * system.h: ... here.
> * realmpfr.h: Do not include gmp.h.
> * tree-ssa-loop-niter.c: Do not include gmp.h.
>
> fortran/ChangeLog
> * gfortran.h: Do not include gmp.h.
>
> diff --git a/gcc/double-int.h b/gcc/double-int.h
> index 3d9aa2c..7ea0528 100644
> --- a/gcc/double-int.h
> +++ b/gcc/double-int.h
> @@ -20,10 +20,6 @@ along with GCC; see the file COPYING3. If not see
> #ifndef DOUBLE_INT_H
> #define DOUBLE_INT_H
>
> -#ifndef GENERATOR_FILE
> -#include <gmp.h>
> -#endif
> -
> /* A large integer is currently represented as a pair of HOST_WIDE_INTs.
> It therefore represents a number with precision of
> 2 * HOST_BITS_PER_WIDE_INT bits (it is however possible that the
> diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
> index 7c4c0a4..611d16d 100644
> --- a/gcc/fortran/gfortran.h
> +++ b/gcc/fortran/gfortran.h
> @@ -1681,7 +1681,6 @@ gfc_intrinsic_sym;
> EXPR_COMPCALL Function (or subroutine) call of a procedure pointer
> component or type-bound procedure. */
>
> -#include <gmp.h>
> #include <mpfr.h>
> #include <mpc.h>
> #define GFC_RND_MODE GMP_RNDN
> diff --git a/gcc/realmpfr.h b/gcc/realmpfr.h
> index ab234e9..ada876e 100644
> --- a/gcc/realmpfr.h
> +++ b/gcc/realmpfr.h
> @@ -22,7 +22,10 @@
> #ifndef GCC_REALGMP_H
> #define GCC_REALGMP_H
>
> -#include <gmp.h>
> +/* Note that we do not include gmp.h. It is included in system.h
> + because it wrecks intl.h when compiling in C++ mode.
> + See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54281 for details. */
> +
> #include <mpfr.h>
> #include <mpc.h>
> #include "real.h"
> diff --git a/gcc/system.h b/gcc/system.h
> index 9e7d503..0ccd991 100644
> --- a/gcc/system.h
> +++ b/gcc/system.h
> @@ -1037,4 +1037,8 @@ helper_const_non_const_cast (const char *p)
> #define DEBUG_VARIABLE
> #endif
>
> +#ifndef GENERATOR_FILE
> +#include <gmp.h>
> +#endif
> +
> #endif /* ! GCC_SYSTEM_H */
> diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c
> index c719a74..4c67c26 100644
> --- a/gcc/tree-ssa-loop-niter.c
> +++ b/gcc/tree-ssa-loop-niter.c
> @@ -38,7 +38,6 @@ along with GCC; see the file COPYING3. If not see
> #include "flags.h"
> #include "diagnostic-core.h"
> #include "tree-inline.h"
> -#include "gmp.h"
>
> #define SWAP(X, Y) do { affine_iv *tmp = (X); (X) = (Y); (Y) = tmp; } while (0)
>
>
>
--
Richard Guenther <rguenther@suse.de>
SUSE / SUSE Labs
SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746
GF: Jeff Hawn, Jennifer Guild, Felix Imend
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-16 13:11 ` Richard Guenther
@ 2012-08-16 13:29 ` Diego Novillo
2012-08-16 13:47 ` Diego Novillo
1 sibling, 0 replies; 22+ messages in thread
From: Diego Novillo @ 2012-08-16 13:29 UTC (permalink / raw)
To: Richard Guenther; +Cc: gcc-patches
On 12-08-16 09:08 , Richard Guenther wrote:
> It fixes it.
>
> Thus, ok from my side (if your testing succeeds).
Worked here too. Committed to trunk.
Diego.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-16 13:11 ` Richard Guenther
2012-08-16 13:29 ` Diego Novillo
@ 2012-08-16 13:47 ` Diego Novillo
2012-08-19 9:35 ` Eric Botcazou
1 sibling, 1 reply; 22+ messages in thread
From: Diego Novillo @ 2012-08-16 13:47 UTC (permalink / raw)
To: Richard Guenther; +Cc: gcc-patches, Eric Botcazou
On 12-08-16 09:08 , Richard Guenther wrote:
> On Thu, 16 Aug 2012, Diego Novillo wrote:
>
>> Richi, this implements your idea for fixing PR 54281. I don't
>> have an old enough compiler. Could you please test it in your
>> system?
>>
>> I debated whether to remove the GENERATOR_FILE predicate from the
>> inclusion (some files include gmp.h unconditionally). I think it
>> could be removed, but only a minority of files build with
>> GENERATOR_FILE set, so it didn't seem harmful.
>>
>> OK if tests pass?
>
> It fixes it.
>
> Thus, ok from my side (if your testing succeeds).
So, I had failed to include Ada in my testing and my patch breaks it.
In several ada/*.c files, we forcefully include system.h as a C header:
#ifdef __cplusplus
extern "C" {
#endif
...
#include "system.h"
...
#ifdef __cplusplus
}
#endif
Eric, is this really needed now? We are including gmp.h from system.h
due to PR 54281. This is causing Ada builds to fail.
Would it be OK to remove all the '#ifdef __cplusplus' conditionals from
ada/*.c or is there something I'm missing?
Thanks. Diego.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-16 11:56 [bootstrap] Tentative fix for PR 54281 Diego Novillo
2012-08-16 13:11 ` Richard Guenther
@ 2012-08-16 17:50 ` Magnus Fromreide
2012-08-16 17:53 ` Diego Novillo
2012-08-16 18:29 ` Diego Novillo
1 sibling, 2 replies; 22+ messages in thread
From: Magnus Fromreide @ 2012-08-16 17:50 UTC (permalink / raw)
To: Diego Novillo; +Cc: gcc-patches, Richard Guenther
On Thu, Aug 16, 2012 at 07:55:51AM -0400, Diego Novillo wrote:
> Richi, this implements your idea for fixing PR 54281. I don't
> have an old enough compiler. Could you please test it in your
> system?
>
> I debated whether to remove the GENERATOR_FILE predicate from the
> inclusion (some files include gmp.h unconditionally). I think it
> could be removed, but only a minority of files build with
> GENERATOR_FILE set, so it didn't seem harmful.
>
> OK if tests pass?
This patch breaks building with gmp, cloog and isl in subdirectories of the
source tree.
echo timestamp > s-options
gawk -f ../../trunk/gcc/opt-functions.awk -f ../../trunk/gcc/opt-read.awk \
-f ../../trunk/gcc/opth-gen.awk \
< optionlist > tmp-options.h
/bin/sh ../../trunk/gcc/../move-if-change tmp-options.h options.h
echo timestamp > s-options-h
TARGET_CPU_DEFAULT="" \
HEADERS="auto-host.h ansidecl.h" DEFINES="" \
/bin/sh ../../trunk/gcc/mkconfig.sh bconfig.h
g++ -c -g -DIN_GCC -fno-exceptions -fno-rtti -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I../../trunk/gcc -I../../trunk/gcc/build -I../../trunk/gcc/../include -I../../trunk/gcc/../libcpp/include -I/home/magfr/src/gcc/build/./gmp -I/home/magfr/src/gcc/trunk/gmp -I/home/magfr/src/gcc/build/./mpfr -I/home/magfr/src/gcc/trunk/mpfr -I/home/magfr/src/gcc/trunk/mpc/src -I../../trunk/gcc/../libdecnumber -I../../trunk/gcc/../libdecnumber/bid -I../libdecnumber -DCLOOG_INT_GMP -I/home/magfr/src/gcc/build/./cloog/include -I/home/magfr/src/gcc/trunk/cloog/include -I../trunk/cloog/include -I/home/magfr/src/gcc/build/./isl/include -I/home/magfr/src/gcc/trunk/isl/include \
-o build/genconstants.o ../../trunk/gcc/genconstants.c
In file included from /usr/include/sys/resource.h:25:0,
from /usr/include/sys/wait.h:32,
from ../../trunk/gcc/system.h:351,
from ../../trunk/gcc/genconstants.c:29:
/usr/include/bits/resource.h:133:18: error: declaration does not declare anything [-fpermissive]
In file included from ../../trunk/gcc/genconstants.c:29:0:
../../trunk/gcc/system.h:443:23: error: declaration of C function `void* sbrk(int)' conflicts with
In file included from ../../trunk/gcc/system.h:253:0,
from ../../trunk/gcc/genconstants.c:29:
/usr/include/unistd.h:1067:14: error: previous declaration `void* sbrk(intptr_t)' here
In file included from ../../trunk/gcc/genconstants.c:29:0:
../../trunk/gcc/system.h:447:48: error: new declaration `char* strstr(const char*, const char*)'
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.7.0/../../../../include/c++/4.7.0/cstring:44:0,
from ../../trunk/gcc/system.h:207,
from ../../trunk/gcc/genconstants.c:29:
/usr/include/string.h:323:22: error: ambiguates old declaration `const char* strstr(const char*, const char*)'
In file included from ../../trunk/gcc/genconstants.c:29:0:
../../trunk/gcc/system.h:499:34: error: declaration of C function `const char* strsignal(int)' conflicts with
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.7.0/../../../../include/c++/4.7.0/cstring:44:0,
from ../../trunk/gcc/system.h:207,
from ../../trunk/gcc/genconstants.c:29:
/usr/include/string.h:566:14: error: previous declaration `char* strsignal(int)' here
In file included from ../../trunk/gcc/system.h:639:0,
from ../../trunk/gcc/genconstants.c:29:
../../trunk/gcc/../include/libiberty.h:110:36: error: new declaration `char* basename(const char*)'
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.7.0/../../../../include/c++/4.7.0/cstring:44:0,
from ../../trunk/gcc/system.h:207,
from ../../trunk/gcc/genconstants.c:29:
/usr/include/string.h:603:28: error: ambiguates old declaration `const char* basename(const char*)'
make[3]: *** [build/genconstants.o] Error 1
make[3]: Leaving directory `/home/magfr/src/gcc/build/gcc'
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory `/home/magfr/src/gcc/build'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/home/magfr/src/gcc/build'
make: *** [all] Error 2
The problem seems to be that during configure time the test scripts include
system.h, but it fails to add the gmp include directory to the compiler flags
so the checks for sbrk, strstr and so on fails with
configure:10294: checking whether sbrk is declared
configure:10317: gcc -c -g -I../../trunk/gcc -I../../trunk/gcc/../include conftest.c >&5
In file included from conftest.c:125:0:
../../trunk/gcc/system.h:1041:17: fatal error: gmp.h: No such file or directory
compilation terminated.
configure:10317: $? = 1
Reverting this patch makes the compiler build.
/MF
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-16 17:50 ` Magnus Fromreide
@ 2012-08-16 17:53 ` Diego Novillo
2012-08-16 18:29 ` Diego Novillo
1 sibling, 0 replies; 22+ messages in thread
From: Diego Novillo @ 2012-08-16 17:53 UTC (permalink / raw)
To: Magnus Fromreide; +Cc: gcc-patches, Richard Guenther
On Thu, Aug 16, 2012 at 1:50 PM, Magnus Fromreide <magfr@lysator.liu.se> wrote:
> On Thu, Aug 16, 2012 at 07:55:51AM -0400, Diego Novillo wrote:
>> Richi, this implements your idea for fixing PR 54281. I don't
>> have an old enough compiler. Could you please test it in your
>> system?
>>
>> I debated whether to remove the GENERATOR_FILE predicate from the
>> inclusion (some files include gmp.h unconditionally). I think it
>> could be removed, but only a minority of files build with
>> GENERATOR_FILE set, so it didn't seem harmful.
>>
>> OK if tests pass?
>
> This patch breaks building with gmp, cloog and isl in subdirectories of the
> source tree.
Working on a fix. It also exposed problems in Ada.
Diego.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-16 17:50 ` Magnus Fromreide
2012-08-16 17:53 ` Diego Novillo
@ 2012-08-16 18:29 ` Diego Novillo
2012-08-16 18:47 ` Joseph S. Myers
1 sibling, 1 reply; 22+ messages in thread
From: Diego Novillo @ 2012-08-16 18:29 UTC (permalink / raw)
To: Magnus Fromreide; +Cc: gcc-patches, Richard Guenther, Iyer, Balaji V
I have reverted my original fix and propose this one. My fix caused
build failures in Ada (which includes system.h inside 'extern "C"'
blocks) and it also breaks in-tree isl/cloog.
Richi, I've tried building my own 4.1, but it doesn't build on my
system. Could you try this patch? It includes libintl.h before
undefining the names, this way the inclusion done from gmp.h turns into
a nop.
Thanks. Diego.
commit 96e3d8108901c6f94fa3b0f2de769370688836cb
Author: Diego Novillo <dnovillo@google.com>
Date: Thu Aug 16 14:27:49 2012 -0400
2012-08-16 Diego Novillo <dnovillo@google.com>
PR bootstrap/54281
* intl.h: Always include libintl.h.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a8ff00d..5252122 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2012-08-16 Diego Novillo <dnovillo@google.com>
+ PR bootstrap/54281
+ * intl.h: Always include libintl.h.
+
+2012-08-16 Diego Novillo <dnovillo@google.com>
+
Revert
PR bootstrap/54281
diff --git a/gcc/intl.h b/gcc/intl.h
index c4db354..745fefd 100644
--- a/gcc/intl.h
+++ b/gcc/intl.h
@@ -27,8 +27,8 @@
# define setlocale(category, locale) (locale)
#endif
-#ifdef ENABLE_NLS
#include <libintl.h>
+#ifdef ENABLE_NLS
extern void gcc_init_libintl (void);
extern size_t gcc_gettext_width (const char *);
#else
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-16 18:29 ` Diego Novillo
@ 2012-08-16 18:47 ` Joseph S. Myers
2012-08-16 19:01 ` Diego Novillo
0 siblings, 1 reply; 22+ messages in thread
From: Joseph S. Myers @ 2012-08-16 18:47 UTC (permalink / raw)
To: Diego Novillo
Cc: Magnus Fromreide, gcc-patches, Richard Guenther, Iyer, Balaji V
On Thu, 16 Aug 2012, Diego Novillo wrote:
> diff --git a/gcc/intl.h b/gcc/intl.h
> index c4db354..745fefd 100644
> --- a/gcc/intl.h
> +++ b/gcc/intl.h
> @@ -27,8 +27,8 @@
> # define setlocale(category, locale) (locale)
> #endif
>
> -#ifdef ENABLE_NLS
> #include <libintl.h>
> +#ifdef ENABLE_NLS
I'm not sure it's safe to assume libintl.h exists on all hosts (e.g.
MinGW) unless ENABLE_NLS. (If ENABLE_NLS, the intl/ directory will have
built that header if the host didn't have it.)
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-16 18:47 ` Joseph S. Myers
@ 2012-08-16 19:01 ` Diego Novillo
2012-08-16 19:13 ` Diego Novillo
0 siblings, 1 reply; 22+ messages in thread
From: Diego Novillo @ 2012-08-16 19:01 UTC (permalink / raw)
To: Joseph S. Myers
Cc: Magnus Fromreide, gcc-patches, Richard Guenther, Iyer, Balaji V
On 12-08-16 14:46 , Joseph S. Myers wrote:
> On Thu, 16 Aug 2012, Diego Novillo wrote:
>
>> diff --git a/gcc/intl.h b/gcc/intl.h
>> index c4db354..745fefd 100644
>> --- a/gcc/intl.h
>> +++ b/gcc/intl.h
>> @@ -27,8 +27,8 @@
>> # define setlocale(category, locale) (locale)
>> #endif
>>
>> -#ifdef ENABLE_NLS
>> #include <libintl.h>
>> +#ifdef ENABLE_NLS
>
> I'm not sure it's safe to assume libintl.h exists on all hosts (e.g.
> MinGW) unless ENABLE_NLS. (If ENABLE_NLS, the intl/ directory will have
> built that header if the host didn't have it.)
I wonder if we couldn't simply '#define _LIBINTL_H 1' in the #else
branch then. Something like this (though it seems a bit hacky to me):
diff --git a/gcc/intl.h b/gcc/intl.h
index c4db354..3da4738 100644
--- a/gcc/intl.h
+++ b/gcc/intl.h
@@ -32,6 +32,9 @@
extern void gcc_init_libintl (void);
extern size_t gcc_gettext_width (const char *);
#else
+/* Prevent libintl.h from being included, since we are truncating
+ some functions (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54281). */
+# define _LIBINTL_H 1
/* Stubs. */
# undef textdomain
# define textdomain(domain) (domain)
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-16 19:01 ` Diego Novillo
@ 2012-08-16 19:13 ` Diego Novillo
2012-08-17 0:29 ` Ian Lance Taylor
2012-08-17 6:46 ` Hans-Peter Nilsson
0 siblings, 2 replies; 22+ messages in thread
From: Diego Novillo @ 2012-08-16 19:13 UTC (permalink / raw)
To: Joseph S. Myers
Cc: Magnus Fromreide, gcc-patches, Richard Guenther, Iyer, Balaji V
On 12-08-16 15:00 , Diego Novillo wrote:
> On 12-08-16 14:46 , Joseph S. Myers wrote:
>> On Thu, 16 Aug 2012, Diego Novillo wrote:
>>
>>> diff --git a/gcc/intl.h b/gcc/intl.h
>>> index c4db354..745fefd 100644
>>> --- a/gcc/intl.h
>>> +++ b/gcc/intl.h
>>> @@ -27,8 +27,8 @@
>>> # define setlocale(category, locale) (locale)
>>> #endif
>>>
>>> -#ifdef ENABLE_NLS
>>> #include <libintl.h>
>>> +#ifdef ENABLE_NLS
>>
>> I'm not sure it's safe to assume libintl.h exists on all hosts (e.g.
>> MinGW) unless ENABLE_NLS. (If ENABLE_NLS, the intl/ directory will have
>> built that header if the host didn't have it.)
>
> I wonder if we couldn't simply '#define _LIBINTL_H 1' in the #else
> branch then. Something like this (though it seems a bit hacky to me):
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 <dnovillo@google.com>
+ PR bootstrap/54281
+ * intl.h: Prevent libintl.h from being included when
+ ENABLE_NLS is not set.
+
+2012-08-16 Diego Novillo <dnovillo@google.com>
+
Revert
PR bootstrap/54281
diff --git a/gcc/intl.h b/gcc/intl.h
index c4db354..e10e357 100644
--- a/gcc/intl.h
+++ b/gcc/intl.h
@@ -32,6 +32,11 @@
extern void gcc_init_libintl (void);
extern size_t gcc_gettext_width (const char *);
#else
+/* Prevent libintl.h from being included, since we are truncating
+ some functions (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54281). */
+# ifndef _LIBINTL_H
+# define _LIBINTL_H 1
+# endif
/* Stubs. */
# undef textdomain
# define textdomain(domain) (domain)
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-16 19:13 ` Diego Novillo
@ 2012-08-17 0:29 ` Ian Lance Taylor
2012-08-17 7:46 ` Richard Guenther
2012-08-17 12:23 ` Diego Novillo
2012-08-17 6:46 ` Hans-Peter Nilsson
1 sibling, 2 replies; 22+ messages in thread
From: Ian Lance Taylor @ 2012-08-17 0:29 UTC (permalink / raw)
To: Diego Novillo
Cc: Joseph S. Myers, Magnus Fromreide, gcc-patches, Richard Guenther,
Iyer, Balaji V
On Thu, Aug 16, 2012 at 12:12 PM, Diego Novillo <dnovillo@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 <dnovillo@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
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-16 19:13 ` Diego Novillo
2012-08-17 0:29 ` Ian Lance Taylor
@ 2012-08-17 6:46 ` Hans-Peter Nilsson
1 sibling, 0 replies; 22+ messages in thread
From: Hans-Peter Nilsson @ 2012-08-17 6:46 UTC (permalink / raw)
To: dnovillo; +Cc: joseph, magfr, gcc-patches, rguenther, balaji.v.iyer
> From: Diego Novillo <dnovillo@google.com>
> Date: Thu, 16 Aug 2012 21:12:56 +0200
> On 12-08-16 15:00 , Diego Novillo 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).
> + PR bootstrap/54281
> + * intl.h: Prevent libintl.h from being included when
> + ENABLE_NLS is not set.
Regtested on a x86_64 F 8 system with "gcc-4.1.2-33", no
regressions at r190450 (with --disable-nls) compared to results
at r190381 (without).
brgds, H-P
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-17 0:29 ` Ian Lance Taylor
@ 2012-08-17 7:46 ` Richard Guenther
2012-08-17 12:23 ` Diego Novillo
1 sibling, 0 replies; 22+ messages in thread
From: Richard Guenther @ 2012-08-17 7:46 UTC (permalink / raw)
To: Ian Lance Taylor
Cc: Diego Novillo, Joseph S. Myers, Magnus Fromreide, gcc-patches,
Iyer, Balaji V
On Thu, 16 Aug 2012, Ian Lance Taylor wrote:
> On Thu, Aug 16, 2012 at 12:12 PM, Diego Novillo <dnovillo@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 <dnovillo@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.
Yes. Still I think including system headers from random gcc headers
is bogus (the gmp.h include from double-int.h), we have system.h
exactly to be able to setup things that the includes will work
before poisoning anything or for systems that require special care.
The configure check including system.h should define GENERATOR_FILE
eventually. Or we need to split system.h.
Richard.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-17 0:29 ` Ian Lance Taylor
2012-08-17 7:46 ` Richard Guenther
@ 2012-08-17 12:23 ` Diego Novillo
2012-08-17 12:34 ` Jakub Jelinek
1 sibling, 1 reply; 22+ messages in thread
From: Diego Novillo @ 2012-08-17 12:23 UTC (permalink / raw)
To: Ian Lance Taylor
Cc: Joseph S. Myers, Magnus Fromreide, gcc-patches, Richard Guenther,
Iyer, Balaji V, Hans-Peter Nilsson
[-- Attachment #1: Type: text/plain, Size: 338 bytes --]
On 12-08-16 20:29 , Ian Lance Taylor wrote:
> I recommend that you add libintl.h to the AC_CHECK_HEADERS list in
> gcc/configure.ac
Thanks. The attached patch implements the approach.
Tested with --disable-nls and --enable-nls. Folks with 4.1 compilers,
could you test it there?
OK for trunk if testing succeeds?
Thanks. Diego.
[-- Attachment #2: 54281.diff --]
[-- Type: text/plain, Size: 3841 bytes --]
commit 8583ba1f22ba310114bf64960f61f6bcc805e9c2
Author: Diego Novillo <dnovillo@google.com>
Date: Thu Aug 16 14:27:49 2012 -0400
2012-08-17 Diego Novillo <dnovillo@google.com>
PR bootstrap/54281
* configure.ac: Add libintl.h to AC_CHECK_HEADERS list.
* config.in: Regenerate.
* configure: Regenerate.
* intl.h: Always include libintl.h if HAVE_LIBINTL_H is
set.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c9a81d1..43b0af7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2012-08-17 Diego Novillo <dnovillo@google.com>
+
+ PR bootstrap/54281
+ * configure.ac: Add libintl.h to AC_CHECK_HEADERS list.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * intl.h: Always include libintl.h if HAVE_LIBINTL_H is
+ set.
+
2012-08-17 Richard Guenther <rguenther@suse.de>
* bitmap.h (struct bitmap_element_def): GTY annotate next/prev.
@@ -213,7 +222,7 @@
* config/tilegx/feedback.h: New file.
* config/tilepro/feedback.h: New file.
-2012-08-16 Diego Novillo <dnovillo@google.com>
+2012-08-16 Diego Novillo <dnovillo@google.com>
Revert
diff --git a/gcc/config.in b/gcc/config.in
index 6d986be..a9417df 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -1260,6 +1260,12 @@
#endif
+/* Define to 1 if you have the <libintl.h> header file. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_LIBINTL_H
+#endif
+
+
/* Define to 1 if you have the <limits.h> header file. */
#ifndef USED_FOR_TARGET
#undef HAVE_LIMITS_H
diff --git a/gcc/configure b/gcc/configure
index 1585bae..7f3489d 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -8248,7 +8248,7 @@ fi
for ac_header in limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
sys/resource.h sys/param.h sys/times.h sys/stat.h \
- direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h
+ direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h libintl.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_preproc "$LINENO" "$ac_header" "$as_ac_Header"
@@ -17742,7 +17742,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 17744 "configure"
+#line 17745 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -17848,7 +17848,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 17850 "configure"
+#line 17851 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 579d9a8..6bfbf35 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -912,7 +912,7 @@ AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
sys/resource.h sys/param.h sys/times.h sys/stat.h \
- direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
+ direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h libintl.h)
# Check for thread headers.
AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
diff --git a/gcc/intl.h b/gcc/intl.h
index c4db354..42ca873 100644
--- a/gcc/intl.h
+++ b/gcc/intl.h
@@ -27,8 +27,16 @@
# define setlocale(category, locale) (locale)
#endif
+/* If libintl.h is available, include it before testing for NLS. If we
+ are building with --disable-nls and another header file includes
+ libintl.h, the stubs defined down below will cause syntax errors
+ when parsing libintl.h. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54281
+ for details. */
+#ifdef HAVE_LIBINTL_H
+# include <libintl.h>
+#endif
+
#ifdef ENABLE_NLS
-#include <libintl.h>
extern void gcc_init_libintl (void);
extern size_t gcc_gettext_width (const char *);
#else
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-17 12:23 ` Diego Novillo
@ 2012-08-17 12:34 ` Jakub Jelinek
2012-08-17 14:42 ` Ian Lance Taylor
2012-08-17 14:58 ` Diego Novillo
0 siblings, 2 replies; 22+ messages in thread
From: Jakub Jelinek @ 2012-08-17 12:34 UTC (permalink / raw)
To: Diego Novillo
Cc: Ian Lance Taylor, Joseph S. Myers, Magnus Fromreide, gcc-patches,
Richard Guenther, Iyer, Balaji V, Hans-Peter Nilsson
Hi!
On Fri, Aug 17, 2012 at 08:23:02AM -0400, Diego Novillo wrote:
> --- a/gcc/intl.h
> +++ b/gcc/intl.h
> @@ -27,8 +27,16 @@
> # define setlocale(category, locale) (locale)
> #endif
>
> +/* If libintl.h is available, include it before testing for NLS. If we
> + are building with --disable-nls and another header file includes
> + libintl.h, the stubs defined down below will cause syntax errors
> + when parsing libintl.h. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54281
> + for details. */
> +#ifdef HAVE_LIBINTL_H
> +# include <libintl.h>
> +#endif
> +
> #ifdef ENABLE_NLS
> -#include <libintl.h>
> extern void gcc_init_libintl (void);
> extern size_t gcc_gettext_width (const char *);
> #else
Will that handle even the case where without --disable-nls intl/
creates its own libintl.h? Dunno which targets need that, but
I'd guess configury wouldn't find it in that case. So perhaps
it should be #if defined(HAVE_LIBINTL_H) || defined(ENABLE_NLS) ?
Jakub
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-17 12:34 ` Jakub Jelinek
@ 2012-08-17 14:42 ` Ian Lance Taylor
2012-08-17 14:58 ` Diego Novillo
1 sibling, 0 replies; 22+ messages in thread
From: Ian Lance Taylor @ 2012-08-17 14:42 UTC (permalink / raw)
To: Jakub Jelinek
Cc: Diego Novillo, Joseph S. Myers, Magnus Fromreide, gcc-patches,
Richard Guenther, Iyer, Balaji V, Hans-Peter Nilsson
On Fri, Aug 17, 2012 at 5:32 AM, Jakub Jelinek <jakub@redhat.com> wrote:
>
> Will that handle even the case where without --disable-nls intl/
> creates its own libintl.h? Dunno which targets need that, but
> I'd guess configury wouldn't find it in that case. So perhaps
> it should be #if defined(HAVE_LIBINTL_H) || defined(ENABLE_NLS) ?
Makes sense to me.
Ian
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-17 12:34 ` Jakub Jelinek
2012-08-17 14:42 ` Ian Lance Taylor
@ 2012-08-17 14:58 ` Diego Novillo
2012-08-17 15:09 ` Jakub Jelinek
1 sibling, 1 reply; 22+ messages in thread
From: Diego Novillo @ 2012-08-17 14:58 UTC (permalink / raw)
To: Jakub Jelinek
Cc: Ian Lance Taylor, Joseph S. Myers, Magnus Fromreide, gcc-patches,
Richard Guenther, Iyer, Balaji V, Hans-Peter Nilsson
[-- Attachment #1: Type: text/plain, Size: 1153 bytes --]
On 12-08-17 08:32 , Jakub Jelinek wrote:
> Hi!
>
> On Fri, Aug 17, 2012 at 08:23:02AM -0400, Diego Novillo wrote:
>
>> --- a/gcc/intl.h
>> +++ b/gcc/intl.h
>> @@ -27,8 +27,16 @@
>> # define setlocale(category, locale) (locale)
>> #endif
>>
>> +/* If libintl.h is available, include it before testing for NLS. If we
>> + are building with --disable-nls and another header file includes
>> + libintl.h, the stubs defined down below will cause syntax errors
>> + when parsing libintl.h. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54281
>> + for details. */
>> +#ifdef HAVE_LIBINTL_H
>> +# include <libintl.h>
>> +#endif
>> +
>> #ifdef ENABLE_NLS
>> -#include <libintl.h>
>> extern void gcc_init_libintl (void);
>> extern size_t gcc_gettext_width (const char *);
>> #else
>
> Will that handle even the case where without --disable-nls intl/
> creates its own libintl.h? Dunno which targets need that, but
> I'd guess configury wouldn't find it in that case. So perhaps
> it should be #if defined(HAVE_LIBINTL_H) || defined(ENABLE_NLS) ?
Sounds reasonable. Amended patch attached.
Re-tested with --disable-nls.
OK for trunk?
[-- Attachment #2: 54281.diff --]
[-- Type: text/plain, Size: 3463 bytes --]
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c9a81d1..43b0af7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2012-08-17 Diego Novillo <dnovillo@google.com>
+
+ PR bootstrap/54281
+ * configure.ac: Add libintl.h to AC_CHECK_HEADERS list.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * intl.h: Always include libintl.h if HAVE_LIBINTL_H is
+ set.
+
2012-08-17 Richard Guenther <rguenther@suse.de>
* bitmap.h (struct bitmap_element_def): GTY annotate next/prev.
@@ -213,7 +222,7 @@
* config/tilegx/feedback.h: New file.
* config/tilepro/feedback.h: New file.
-2012-08-16 Diego Novillo <dnovillo@google.com>
+2012-08-16 Diego Novillo <dnovillo@google.com>
Revert
diff --git a/gcc/config.in b/gcc/config.in
index 6d986be..a9417df 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -1260,6 +1260,12 @@
#endif
+/* Define to 1 if you have the <libintl.h> header file. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_LIBINTL_H
+#endif
+
+
/* Define to 1 if you have the <limits.h> header file. */
#ifndef USED_FOR_TARGET
#undef HAVE_LIMITS_H
diff --git a/gcc/configure b/gcc/configure
index 1585bae..7f3489d 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -8248,7 +8248,7 @@ fi
for ac_header in limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
sys/resource.h sys/param.h sys/times.h sys/stat.h \
- direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h
+ direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h libintl.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_preproc "$LINENO" "$ac_header" "$as_ac_Header"
@@ -17742,7 +17742,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 17744 "configure"
+#line 17745 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -17848,7 +17848,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 17850 "configure"
+#line 17851 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 579d9a8..6bfbf35 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -912,7 +912,7 @@ AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
sys/resource.h sys/param.h sys/times.h sys/stat.h \
- direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
+ direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h libintl.h)
# Check for thread headers.
AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
diff --git a/gcc/intl.h b/gcc/intl.h
index c4db354..03be420 100644
--- a/gcc/intl.h
+++ b/gcc/intl.h
@@ -27,8 +27,16 @@
# define setlocale(category, locale) (locale)
#endif
+/* If libintl.h is available, include it before testing for NLS. If we
+ are building with --disable-nls and another header file includes
+ libintl.h, the stubs defined down below will cause syntax errors
+ when parsing libintl.h. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54281
+ for details. */
+#if defined(HAVE_LIBINTL_H) || defined(ENABLE_NLS)
+# include <libintl.h>
+#endif
+
#ifdef ENABLE_NLS
-#include <libintl.h>
extern void gcc_init_libintl (void);
extern size_t gcc_gettext_width (const char *);
#else
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-17 14:58 ` Diego Novillo
@ 2012-08-17 15:09 ` Jakub Jelinek
2012-08-17 15:39 ` Diego Novillo
0 siblings, 1 reply; 22+ messages in thread
From: Jakub Jelinek @ 2012-08-17 15:09 UTC (permalink / raw)
To: Diego Novillo
Cc: Ian Lance Taylor, Joseph S. Myers, Magnus Fromreide, gcc-patches,
Richard Guenther, Iyer, Balaji V, Hans-Peter Nilsson
On Fri, Aug 17, 2012 at 10:58:25AM -0400, Diego Novillo wrote:
> Sounds reasonable. Amended patch attached.
> OK for trunk?
Yes, except for:
> diff --git a/gcc/ChangeLog b/gcc/ChangeLog
> index c9a81d1..43b0af7 100644
> --- a/gcc/ChangeLog
> +++ b/gcc/ChangeLog
> @@ -213,7 +222,7 @@
> * config/tilegx/feedback.h: New file.
> * config/tilepro/feedback.h: New file.
>
> -2012-08-16 Diego Novillo <dnovillo@google.com>
> +2012-08-16 Diego Novillo <dnovillo@google.com>
>
> Revert
>
the above hunk.
Jakub
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-17 15:09 ` Jakub Jelinek
@ 2012-08-17 15:39 ` Diego Novillo
0 siblings, 0 replies; 22+ messages in thread
From: Diego Novillo @ 2012-08-17 15:39 UTC (permalink / raw)
To: Jakub Jelinek
Cc: Ian Lance Taylor, Joseph S. Myers, Magnus Fromreide, gcc-patches,
Richard Guenther, Iyer, Balaji V, Hans-Peter Nilsson
On Fri, Aug 17, 2012 at 11:05 AM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Fri, Aug 17, 2012 at 10:58:25AM -0400, Diego Novillo wrote:
>> Sounds reasonable. Amended patch attached.
>
>> OK for trunk?
>
> Yes, except for:
>
>> diff --git a/gcc/ChangeLog b/gcc/ChangeLog
>> index c9a81d1..43b0af7 100644
>> --- a/gcc/ChangeLog
>> +++ b/gcc/ChangeLog
>> @@ -213,7 +222,7 @@
>> * config/tilegx/feedback.h: New file.
>> * config/tilepro/feedback.h: New file.
>>
>> -2012-08-16 Diego Novillo <dnovillo@google.com>
>> +2012-08-16 Diego Novillo <dnovillo@google.com>
>>
>> Revert
>>
>
> the above hunk.
Done. Committed.
Thanks. Diego.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-16 13:47 ` Diego Novillo
@ 2012-08-19 9:35 ` Eric Botcazou
2012-08-19 11:18 ` Arnaud Charlet
0 siblings, 1 reply; 22+ messages in thread
From: Eric Botcazou @ 2012-08-19 9:35 UTC (permalink / raw)
To: Diego Novillo; +Cc: Richard Guenther, gcc-patches, Arnaud Charlet
[Sorry for the delay]
> So, I had failed to include Ada in my testing and my patch breaks it.
> In several ada/*.c files, we forcefully include system.h as a C header:
>
> #ifdef __cplusplus
> extern "C" {
> #endif
> ...
> #include "system.h"
> ...
> #ifdef __cplusplus
> }
> #endif
>
>
> Eric, is this really needed now? We are including gmp.h from system.h
> due to PR 54281. This is causing Ada builds to fail.
>
> Would it be OK to remove all the '#ifdef __cplusplus' conditionals from
> ada/*.c or is there something I'm missing?
The conditionals cannot be removed for the time being because the foreign
language interface of the Ada part of the compiler is hardcoded for C.
Barring a massive switch to the Ada language for the GNU project, we would need
to switch the foreign language interface to C++, which might introduce various
maintenance issues in the short term (Arno CCed).
--
Eric Botcazou
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-19 9:35 ` Eric Botcazou
@ 2012-08-19 11:18 ` Arnaud Charlet
2012-08-20 13:27 ` Diego Novillo
0 siblings, 1 reply; 22+ messages in thread
From: Arnaud Charlet @ 2012-08-19 11:18 UTC (permalink / raw)
To: Eric Botcazou; +Cc: Diego Novillo, Richard Guenther, gcc-patches
> The conditionals cannot be removed for the time being because the foreign
> language interface of the Ada part of the compiler is hardcoded for C.
>
> Barring a massive switch to the Ada language for the GNU project, we would need
> to switch the foreign language interface to C++, which might introduce various
> maintenance issues in the short term (Arno CCed).
Yes, that would be a large hearthquake for both the compiler and the run-time, which is unwanted at this stage. I guess the solution for now is to more selectively export the various symbols as C symbols and include header files as is.
Arno
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bootstrap] Tentative fix for PR 54281
2012-08-19 11:18 ` Arnaud Charlet
@ 2012-08-20 13:27 ` Diego Novillo
0 siblings, 0 replies; 22+ messages in thread
From: Diego Novillo @ 2012-08-20 13:27 UTC (permalink / raw)
To: Arnaud Charlet; +Cc: Eric Botcazou, Richard Guenther, gcc-patches
On 2012-08-19 07:18 , Arnaud Charlet wrote:
>
>> The conditionals cannot be removed for the time being because the
>> foreign language interface of the Ada part of the compiler is
>> hardcoded for C.
>>
>> Barring a massive switch to the Ada language for the GNU project,
>> we would need to switch the foreign language interface to C++,
>> which might introduce various maintenance issues in the short term
>> (Arno CCed).
>
> Yes, that would be a large hearthquake for both the compiler and the
> run-time, which is unwanted at this stage. I guess the solution for
> now is to more selectively export the various symbols as C symbols
> and include header files as is.
Thanks.
One potential issue I see here is that as we start using more C++
headers (and more C++ in existing headers), we will reach a point in
which including something like system.h inside an extern "C" {} block
will fail.
None of the GCC headers should be included as C code anymore.
Diego.
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2012-08-20 13:27 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-16 11:56 [bootstrap] Tentative fix for PR 54281 Diego Novillo
2012-08-16 13:11 ` Richard Guenther
2012-08-16 13:29 ` Diego Novillo
2012-08-16 13:47 ` Diego Novillo
2012-08-19 9:35 ` Eric Botcazou
2012-08-19 11:18 ` Arnaud Charlet
2012-08-20 13:27 ` Diego Novillo
2012-08-16 17:50 ` Magnus Fromreide
2012-08-16 17:53 ` Diego Novillo
2012-08-16 18:29 ` Diego Novillo
2012-08-16 18:47 ` Joseph S. Myers
2012-08-16 19:01 ` Diego Novillo
2012-08-16 19:13 ` Diego Novillo
2012-08-17 0:29 ` Ian Lance Taylor
2012-08-17 7:46 ` Richard Guenther
2012-08-17 12:23 ` Diego Novillo
2012-08-17 12:34 ` Jakub Jelinek
2012-08-17 14:42 ` Ian Lance Taylor
2012-08-17 14:58 ` Diego Novillo
2012-08-17 15:09 ` Jakub Jelinek
2012-08-17 15:39 ` Diego Novillo
2012-08-17 6:46 ` Hans-Peter Nilsson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).