This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Generating a toolchain for big-endian arm with ct-ng.


Hi,

I tried to use crosstool-ng to generate a toolchain for Linux on big
endian arm with recent versions of gcc, glibc, etc... but had a few
problems.

a toolchain based on gcc 4.3.2 and glibc 2.7 builds fine, and generates
a working root filesystem, but unfortunately has a bug (
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38674
).

a toolchain based on gcc 4.2.4 builds fine too, but generates a non
working root filesytem. It appears that the gcc patch (for gcc 4.2.x)
for big-endian arm (240-arm-bigendian.patch) lacks the change attached
to this mail as 240-arm-bigendian2.patch.

trying to build the toolchain with an earlier version of glibc fails,
glibc is looking for asm/procinfo.h which is not installed by Linux'
headers_install target. A solution is to modify Linux makefiles so that
asm/procinfo.h is copied. The patch
linux-2.6.19-arm-install-procinfo.diff may be applied to linux between
versions 2.6.19 and 2.6.22 to do that,
linux-2.6.23-arm-install-procinfo.diff may be applied to linux after
version 2.6.23.

trying to build a toolchain based on gcc 4.1.2 fails, gcc/tree.h
includes tree-check.h which can not be found in gcc sources, and seems
to be required. I did not try to fix this, but thought you might be
interested.

Regards.

-- 
                                                 Gilles.
--- gcc-4.2.4/gcc/config/arm/bpabi.h~	2007-09-01 17:28:30.000000000 +0200
+++ gcc-4.2.4/gcc/config/arm/bpabi.h	2009-01-05 19:19:10.000000000 +0100
@@ -32,9 +32,19 @@
 #undef FPUTYPE_DEFAULT
 #define FPUTYPE_DEFAULT FPUTYPE_VFP
 
+/*
+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
+ * (big endian) configurations.
+ */
+#if TARGET_BIG_ENDIAN_DEFAULT
+#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
+#else
+#define TARGET_ENDIAN_DEFAULT 0
+#endif
+
 /* EABI targets should enable interworking by default.  */
 #undef TARGET_DEFAULT
-#define TARGET_DEFAULT MASK_INTERWORK
+#define TARGET_DEFAULT (MASK_INTERWORK | TARGET_ENDIAN_DEFAULT)
 
 /* The ARM BPABI functions return a boolean; they use no special
    calling convention.  */
--- linux-2.6.18/include/asm-arm/Kbuild~	2009-01-06 11:44:31.000000000 +0100
+++ linux-2.6.18/include/asm-arm/Kbuild	2009-01-06 11:44:45.000000000 +0100
@@ -1 +1,3 @@
 include include/asm-generic/Kbuild.asm
+
+header-y += procinfo.h
--- linux-2.6.23/include/asm-arm/Kbuild~	2007-10-22 16:29:48.000000000 +0200
+++ linux-2.6.23/include/asm-arm/Kbuild	2009-01-06 11:46:53.000000000 +0100
@@ -1,3 +1,4 @@
 include include/asm-generic/Kbuild.asm
 
 unifdef-y += hwcap.h
+header-y += procinfo.h
--
For unsubscribe information see http://sourceware.org/lists.html#faq

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]