summaryrefslogtreecommitdiffstats
path: root/TODO
blob: 8e86061839201de66da55de7f131bf5dc299466d (plain)
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<----------