Added support for returning errors from syscalls
[akaros.git] / scripts / augment-gcc
1 #!/bin/bash
2
3 function overwrite
4 {
5         for i in `find $1 -iname $3`
6         do
7                 if [ ! -f $i.bak ]
8                 then
9                         cp $i $i.bak
10                 fi
11                 cp $2 $i
12         done
13 }
14
15 if [ -z "$1" -o -z "$2" ]
16 then
17         echo usage: $1 path-to-ros-gcc target-arch
18         exit
19 fi
20
21 overwrite $1 obj/user/parlib/src/$2/crtbegin.o crtbegin.o
22 overwrite $1 obj/user/parlib/src/$2/crtend.o crtend.o
23 overwrite $1 obj/user/parlib/src/$2/entry.o crt0.o
24
25 LIBGCC=`find $1 -iname libgcc.a.bak`
26 if [ -z "$LIBGCC" ]
27 then
28         LIBGCC=`find $1 -iname libgcc.a`
29 fi
30 LIBC=$1/$2-elf/lib/libc.a
31 LIBM=$1/$2-elf/lib/libm.a
32 LIBG=$1/$2-elf/lib/libg.a
33 LIBPARLIB=../obj/user/parlib/libparlib.a
34 LIBPTHREAD=../obj/user/parlib/libpthread.a
35 rm -rf tmp
36 mkdir tmp
37 cd tmp
38 ar x $LIBPARLIB
39 for i in *.o; do mv $i first-$i; ar xN 1 $LIBPARLIB $i 2> /dev/null; done
40 ar rcs libgcc.a *.o; rm *.o
41 ar x $LIBPTHREAD
42 for i in *.o; do mv $i first-$i; ar xN 1 $LIBPTHREAD $i 2> /dev/null; done
43 ar rcs libgcc.a *.o; rm *.o
44 ar x $LIBGCC
45 ar x $LIBC
46 ar x $LIBM
47 ar x $LIBG
48 ar rcs libgcc.a *.o
49 cd ..
50
51 overwrite $1 tmp/libgcc.a libgcc.a
52 rm -rf tmp
53
54 SYS_INC=$1/$2-elf/sys-include
55 cp -Lr user/parlib/inc/* $SYS_INC