1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
|
Current TODO List
=================
High Priority
-------------
- RSC: use new config/innokom.ptxconfig vs. config/kernel/... scheme
also for other platforms.
- RSC: audit configurations: we now have the rules/vendor-tweaks
mechanism instead of /data stuff and /etc copying. Add
copy mechanism to config specific tree if necessary...
- RSC: fix busybox extract script to support "select CONFIG_foo"
- RSC: make MTDutils release and, by the way, fix build process.
This "override" mechanism in the Makefile seems to be broken.
- RSC: audit all configure calls to be relative; configure scripts
seem to have major problems when being called with absulute path
- RSC: test flash
- RSC: finish integration of iwconfig
- RSC: glibc does somehow not install _G_config.h when libio is not
used, which breaks gcc-stage2. At least sometimes :-( This
effect is observed only on certain systems (all Debian unstable,
but downgrading does not help). Has to be evaluated!!!
- RSC: add #ifdef __cplusplus ... #else ... #endif to bits/in.h
- RSC: add .in file for xvkbd; integrate fixes for Makefile...
- RSC: busybox 1.00-pre2 has lots of problems (broken job control/
controlling ttys, strange terminal effects etc.). This makes it
worse than the old 0.6x versions. We probably should make the
version configurable, but this needs the kconfig extraction
mechanism to be run at runtime. I don't have a good idea how
to do this yet.
- RSC: For the patches I would like to have a selection mechanism
in kconfig.
- RSC: Before release test: innokom, cameron and i386-generic-glibc
- RSC: - patches/
- src/*.diff, *.patch
- etc/solidcard-bmwm-20030821-1/xmodmap
Low Priority
------------
- RSC: finish integration of zebra
- RSC: you currently need gdk-pixbuf-csource on the host
- RSC: pango has a patch which has to be verified (GLIB_CFLAGS)
- RSC: you currently need libXcursor.so.* and xcursorgen on the
development host
- RSC: replace bootdisk build mechanism by genext2fs; mke2fs is able
to reserve N blocks at the beginning of the image!
- RSC: audit configurations for local directory
- KUB: busybox/ash job control is broken
- RSC: audit for LSB compatiblity
- RSC: audit for FOODIR vs. FOO_DIR
- RSC: add checksums for download
- RSC: have a look at http://asic-linux.com.mx/~izto/checkinstall/
- RSC: install e2fsck
- RSC: create users
- RSC: restructure config file layout
- RSC: add a test: if #!/bin/sh scripts return
"/bin/sh: bad interpreter: Permission denied"
tell the user to look if his filesystem was monted
with the "exec" option
- JST: GPL version 2
- LGR: recompile x86 compilers recursively
MKB: let's think more general: recompile native compiler recursively
- RSC: integrate big endian toolchain for ARM:
- RSC: make bootdisk contents part of the nfsroot directory, but
let ptxflash not copy it to the target flash disk
- RSC: check if Dan Kegel's scripts can be integrated:
- regression tests
- separate per-cpu features into one file
- RSC: check for uImage targets: have to depend on vmlinux, not on
zImage.
- LGR: concept for debug levels: strip, -g, -S
- LGR: Binary packets: system V package tools (cpio/pre/post)
- LGR: key infrastructure: integrate signing, activate this only
when running the release cycle.
Nice-to-Have Packets
--------------------
- RSC: structure for menues:
"Network Services" zebra, nfsd, ntp
"Network Tools" ip, tcpdump, ciscoshell, hping2, libnet
"Audit Tools" dsnif, shadow code
"User Interfaces" flash, Shell Menues (Robin), JVisu
"Init" lmainit
"Languages" perl, miniperl
8<----------
Hello,
You'll find below the build procedure we have used to make a gcc big endian
cross toolchain for Intel IXP2400 which contains an ARM XScale core. I think
this procedure is valid for any ARM target.
We hope it will help others.
Best regards,
david
--begin--
Howto make the GCC big endian toolchain for IXP2400/Linux (ARM XScale
core)
=====================================================================
Version 1.3 / 2003-05-07
David MENTRE <mentre@tcl.ite.mee.com>
Mathieu BERTRAND <bertrand@tcl.ite.mee.com>
-1. Last update
With below procedure, the gcc is usable in -static but cannot produce
dynamic linked programs. More exactly, the glibc-2.2.3 used in the
ixp_ramdisk.gz should be replaced by glibc-2.2.5. 2.2.5 version has
been patched to work with gcc3.
0. Used software
- binutils-2.12.1.tar.gz
- gcc-3.2.2.tar.gz
- glibc-2.2.5.tar.gz
- glibc-linuxthreads-2.2.5.tar.gz
- gdb-5.3.tar.gz
(Those packages can be found on ftp.gnu.org mirrors.)
- sources of patched linux kernel for IXP2400. linux-2.4.19-rmk7-ds1
is working for us (YMMV)
(Linux sources can be found at:
http://www.kernel.org/pub/linux/kernel/v2.4/
Russel King patches can be found at:
http://www.arm.linux.org.uk/developer/v2.4/
Deepak Saxena patches can be found at:
ftp://source.mvista.com/pub/ds-patches/2.4
)
1. Compilation overview
One will need to do the following steps :
- setup destination directory and apply needed patches to sources
- compile the binutils
- compile a bare-bone gcc (for big endian)
- compile the glibc
- re-compile a complete gcc (for big endian)
- compile gdb
2. packages installation
* In /usr/local/src (or whatever directory you choose):
- mkdir build-binutils
- mkdir build-gcc
- mkdir build-glibc
- mkdir build-gcc2
- mkdir build-gdb
- tar xvf binutils-2.13.tar.gz
- tar xvf gcc-3.2.1.tar.gz
- tar xvf glibc-2.2.3.tar.gz
- cd glibc-2.3.3; tar xvf glibc-linuxthreads-2.2.3.tar.gz; cd ..
- tar xvf gdb-5.3.tar.gz
* Patch glibc:
- cd glibc-2.2.5
- perl -pi -e 's/weak_alias \(__old_sys_nerr/\/\/ $&/'
sysdeps/unix/sysv/linux/arm/errlist.c
- cd ..
* Patch gcc:
- cd gcc-3.2.2
- perl -pi -e 's/^(TARGET_LIBGCC2_CFLAGS.*)/$1 -Dinhibit_libc
-D__gthr_posix_h/' gcc/config/arm/t-linux
- echo 'T_CFLAGS = -Dinhibit_libc -D__gthr_posix_h' >>
gcc/config/arm/t-linux
edit Makefile.in and rewrite xgcc in xgcc -mbig-endian on definition
GCC_FOR_TARGET:
GCC_FOR_TARGET = $$r/gcc/xgcc -mbig-endian -B$$r/gcc/ $(FLAGS_FOR_TARGET)
edit gcc/Makefile.in and rewrite xgcc in xgcc -mbig-endian on
definition:
GCC_FOR_TARGET = ./xgcc -mbig-endian -B./ -B$(build_tooldir)/bin/ -isystem
$(build_tooldir)/include -isystem $(build_tooldir)/sys-include
apply following patch to gcc/reload1.c with
- cd gcc; patch -l < the-patch.patch; cd ..
=== start of patch ===
--- reload1.c.orig Thu Oct 10 16:40:20 2002
+++ reload1.c Thu Dec 12 14:43:56 2002
@@ -8674,7 +8674,9 @@
... (MEM (PLUS (REGZ) (REGY)))... .
First, check that we have (set (REGX) (PLUS (REGX) (REGY)))
- and that we know all uses of REGX before it dies. */
+ and that we know all uses of REGX before it dies.
+ Also, explicitly check that REGX != REGY; our life information
+ does not yet show whether REGY changes in this insn. */
set = single_set (insn);
if (set != NULL_RTX
&& GET_CODE (SET_DEST (set)) == REG
@@ -8684,6 +8686,7 @@
&& GET_CODE (SET_SRC (set)) == PLUS
&& GET_CODE (XEXP (SET_SRC (set), 1)) == REG
&& rtx_equal_p (XEXP (SET_SRC (set), 0), SET_DEST (set))
+ && !rtx_equal_p (XEXP (SET_SRC (set), 1), SET_DEST (set))
&& last_label_ruid < reg_state[REGNO (SET_DEST (set))].use_ruid)
{
rtx reg = SET_DEST (set);
=== end of patch ===
This patch comes from following gcc gnats entry:
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=8896
3. Setup of installation directory
- target=arm-linux
- prefix=/opt/tc-arm-linux-bu2.12.1-gcc3.2.2p-glibc2.2.5p # or whatever you
want
- mkdir -p $prefix/$target/include
- cp -r (path to linux sources)/linux/include/linux $prefix/$target/include
- cp -r (path to linux sources)/linux/include/asm-arm
$prefix/$target/include/asm
4. add $prefix/bin directory into your $PATH
- PATH=$prefix/bin:$PATH
5. Compilation of binutils
- cd build-binutils
- ../binutils-2.12.1/configure --prefix=$prefix --target=$target
- make all install
- cd ..
6. Compilation of the bare-bone gcc
- cd build-gcc
- ../gcc-3.2.2/configure --target=$target --prefix=$prefix
--enable-languages=c --with-sysroot=$prefix/$target --without-headers
--disable-shared --disable-threads
- make all-gcc install-gcc
- cd ..
7. Compilation of glibc
- cd build-glibc
- CC="$target-gcc -mbig-endian" AR=$target-ar RANLIB=$target-ranlib
../glibc-2.2.5/configure --host=$target --prefix=$prefix/$target
--enable-add-ons=linuxthreads --with-headers=$prefix/$target/include
- make all install
- cd ..
8. Compilation of complete gcc
- cd build-gcc2
- ../gcc-3.2.2/configure --prefix=$prefix --target=$target
--enable-languages=c --with-sysroot=$prefix/$target
- make all install
- cd ..
Note: At the above step, we haven't been able to active other
languages like c++. We would accept any idea to fix that.
9. Compilation of gdb
- cd build-gdb
- ../gdb-5.3/configure --prefix=$prefix --target=$target
- make all install
- cd ..
--end--
--
David Mentré <mentre@tcl.ite.mee.com> - Research engineer
Mitsubishi Electric ITE-TCL / European Telecommunication Research Laboratory
Phone: +33 2 23 45 58 29 / Fax: +33 2 23 45 58 59
http://www.mitsubishi-electric-itce.fr
-------------------------------------------------------------------
Subscription options: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
FAQ/Etiquette: http://www.arm.linux.org.uk/armlinux/mailinglists.php
8<----------
|