On 05/29/2012 06:48 PM, Ian Lance Taylor wrote:
Good job tracking it down.
This is the patch:
http://gcc.gnu.org/ml/gcc-patches/2006-10/msg00361.html
This is where it was approved:
http://gcc.gnu.org/ml/gcc-patches/2006-12/msg00717.html
So now at least you have some people to ask.
I got the same issues as noted in the patch message about CPU. However,
just disabling fixincludes outright seems like a kludgey way to solve
the problem. I think it would be better (less bad?) to only disable the
machine_name fix.
As a bit of a hack (though IMHO less of a hack then just disabling the
whole system), I disabled the machine_name fix and re-enabled
fixincludes with the attached patch, as I *need* to change the header
files to get gcc targeting vxworks to compile, and these are not changes
that are easily accommodated with changes to GCC. If I apply the patch,
regenerate gcc/configure, and do a clean build fixincludes runs and the
build finishes without errors. The configure/build also works for a
normal, native build. Should I submit to -patches, in anticipation of
submitting the hacks necessary to get a build without manually patching
the headers? Or is this not the right approach?
Thanks!
Robert Mason
>From fb4b751fd076adfc1596720bee4b4ba49f908431 Mon Sep 17 00:00:00 2001
From: rbmj <rbmj@xxxxxxxxxxx>
Date: Wed, 30 May 2012 08:16:57 -0400
Subject: [PATCH 1/5] Add ability to skip the machine_name fixincludes fix.
On some platforms, machine_name is overzealous, or even breaks things.
This patch adds the functionality to skip the machine_name 'fix' by
giving it an empty macro list.
gcc/configure: Regenerate
---
fixincludes/mkfixinc.sh | 1 -
gcc/Makefile.in | 15 +++++++++++----
gcc/configure.ac | 14 ++++++++++++++
3 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/fixincludes/mkfixinc.sh b/fixincludes/mkfixinc.sh
index 89e8ab7..6653fed 100755
--- a/fixincludes/mkfixinc.sh
+++ b/fixincludes/mkfixinc.sh
@@ -15,7 +15,6 @@ case $machine in
i?86-*-mingw32* | \
x86_64-*-mingw32* | \
i?86-*-interix* | \
- *-*-vxworks* | \
powerpc-*-eabisim* | \
powerpc-*-eabi* | \
powerpc-*-rtems* | \
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 7b61b71..3534cd8 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -245,6 +245,9 @@ LINKER_FLAGS = $(CFLAGS)
endif
endif
+# Whether or not to run the machine_name fixincludes fix
+SKIP_MACHINE_NAME_FIX = @skip_machine_name_fix@
+
# -------------------------------------------
# Programs which operate on the build machine
# -------------------------------------------
@@ -4129,10 +4132,14 @@ install-gcc-tooldir:
macro_list: s-macro_list; @true
s-macro_list : $(GCC_PASSES)
- echo | $(GCC_FOR_TARGET) -E -dM - | \
- sed -n -e 's/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p' \
- -e 's/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p' | \
- sort -u > tmp-macro_list
+ @if test "$(SKIP_MACHINE_NAME_FIX)" != "yes" ; then \
+ echo | $(GCC_FOR_TARGET) -E -dM - | \
+ sed -n -e 's/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p' \
+ -e 's/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p' | \
+ sort -u > tmp-macro_list ; \
+ else \
+ echo > tmp-macro_list ; \
+ fi
$(SHELL) $(srcdir)/../move-if-change tmp-macro_list macro_list
$(STAMP) s-macro_list
diff --git a/gcc/configure.ac b/gcc/configure.ac
index a3a4038..d399ecc 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -5140,6 +5140,20 @@ if test x"${LINKER_HASH_STYLE}" != x; then
[The linker hash style])
fi
+# Check whether to enable the fixincludes machine_name hack on this platform
+case "${target}" in
+ *-*-vxworks*)
+ skip_machine_name_fix="yes"
+ ;;
+ *)
+ # Note that some platforms have fixincludes disabled by default so
+ # this will make no difference
+ skip_machine_name_fix="no"
+ ;;
+esac
+AC_SUBST(skip_machine_name_fix)
+
+
# Configure the subdirectories
# AC_CONFIG_SUBDIRS($subdirs)
--
1.7.5.4