updates for 0.18
This commit is contained in:
parent
ff1caa8017
commit
18aa2fa286
36
boot.sh
36
boot.sh
|
@ -1,6 +1,6 @@
|
|||
#! /bin/sh
|
||||
|
||||
set -x
|
||||
set -ex
|
||||
|
||||
TCC=${TCC-./mes-tcc}
|
||||
if [ "$TCC" = ./mes-tcc ]; then
|
||||
|
@ -15,7 +15,9 @@ elif [ "$TCC" = ./boot3-tcc ]; then
|
|||
PROGRAM_PREFIX=${PROGRAM_PREFIX-boot4-}
|
||||
fi
|
||||
|
||||
unset C_INCLUDE_PATH LIBRARY_PATH
|
||||
PREFIX=${PREFIX-usr}
|
||||
mkdir -p $PREFIX
|
||||
ABSPREFIX=$(cd $PREFIX && pwd)
|
||||
GUIX=${GUIX-$(command -v guix||:)}
|
||||
MES_PREFIX=${MES_PREFIX-../mes}
|
||||
|
@ -46,6 +48,7 @@ if [ "$PROGRAM_PREFIX" = "boot0-" ]; then
|
|||
-D CONFIG_USE_LIBGCC=1
|
||||
-D TCC_MES_LIBC=1
|
||||
"}
|
||||
LIBTCC1=-ltcc1
|
||||
elif [ "$PROGRAM_PREFIX" = "boot1-" ]; then
|
||||
BOOT_CPPFLAGS=${BOOT_CPPFLAGS-"
|
||||
-D BOOTSTRAP=1
|
||||
|
@ -55,6 +58,7 @@ elif [ "$PROGRAM_PREFIX" = "boot1-" ]; then
|
|||
-D CONFIG_USE_LIBGCC=1
|
||||
-D TCC_MES_LIBC=1
|
||||
"}
|
||||
LIBTCC1=-ltcc1
|
||||
elif [ "$PROGRAM_PREFIX" = "boot2-" ]; then
|
||||
BOOT_CPPFLAGS=${BOOT_CPPFLAGS-"
|
||||
-D BOOTSTRAP=1
|
||||
|
@ -65,6 +69,7 @@ elif [ "$PROGRAM_PREFIX" = "boot2-" ]; then
|
|||
-D CONFIG_USE_LIBGCC=1
|
||||
-D TCC_MES_LIBC=1
|
||||
"}
|
||||
LIBTCC1=-ltcc1
|
||||
elif [ "$PROGRAM_PREFIX" = "boot3-" ]; then
|
||||
BOOT_CPPFLAGS=${BOOT_CPPFLAGS-"
|
||||
-D BOOTSTRAP=1
|
||||
|
@ -88,20 +93,39 @@ elif [ "$PROGRAM_PREFIX" = "boot4-" ]; then
|
|||
fi
|
||||
|
||||
$TCC\
|
||||
-v\
|
||||
-static\
|
||||
-o ${PROGRAM_PREFIX}tcc\
|
||||
$BOOT_CPPFLAGS\
|
||||
-I .\
|
||||
-I $MES_PREFIX/include\
|
||||
-D TCC_TARGET_I386\
|
||||
-D ONE_SOURCE=yes\
|
||||
-D 'CONFIG_TCCDIR="'$PREFIX'/lib/tcc"'\
|
||||
-D 'CONFIG_TCC_CRTPREFIX="'$PREFIX'/lib:{B}/lib:."'\
|
||||
-D 'CONFIG_TCC_ELFINTERP="'$interpreter'"'\
|
||||
-D 'CONFIG_TCC_LIBPATHS="'$ABSPREFIX'/lib:{B}/lib:."'\
|
||||
-D 'CONFIG_TCC_SYSINCLUDEPATHS="'$MES_PREFIX'/include:'$PREFIX'/include:{B}/include"'\
|
||||
-D 'TCC_LIBGCC="'$ABSPREFIX'/lib/libc+tcc-gcc.mlibc-o"'\
|
||||
-D 'TCC_LIBGCC="'$ABSPREFIX'/lib/libc.a"'\
|
||||
-D ONE_SOURCE=yes\
|
||||
-D CONFIG_TCC_LIBTCC1=1\
|
||||
-D CONFIG_TCC_STATIC=1\
|
||||
-D TCC_TARGET_I386=1\
|
||||
-I .\
|
||||
-I $MES_PREFIX/include\
|
||||
-L .\
|
||||
-L $TINYCC_SEED\
|
||||
tcc.c
|
||||
tcc.c\
|
||||
$LIBTCC1
|
||||
|
||||
for i in 1 i n; do
|
||||
rm -f crt$i.o;
|
||||
./${PROGRAM_PREFIX}tcc -c $MES_PREFIX/lib/linux/x86-mes-gcc/crt$i.c
|
||||
done
|
||||
|
||||
# rm -f libc.a
|
||||
# ./${PROGRAM_PREFIX}tcc -c -I $MES_PREFIX/include -I $MES_PREFIX/lib $MES_PREFIX/lib/libc+gnu.c
|
||||
# ./${PROGRAM_PREFIX}tcc -ar rc libc.a libc+gnu.o
|
||||
|
||||
rm -f libtcc1.a
|
||||
./${PROGRAM_PREFIX}tcc -c -g -D TCC_TARGET_I386=1 -o libtcc1.o lib/libtcc1.c
|
||||
./${PROGRAM_PREFIX}tcc -ar rc libtcc1.a libtcc1.o
|
||||
mkdir -p $PREFIX/lib/tcc
|
||||
cp -f libtcc1.a $PREFIX/lib/tcc
|
||||
|
|
|
@ -7,8 +7,11 @@ MES_PREFIX=${MES_PREFIX-../mes}
|
|||
|
||||
touch config.mak
|
||||
make clean
|
||||
rm -f crt*.o
|
||||
crt1=$(gcc --print-file-name=crt1.o)
|
||||
crtdir=$(dirname $crt1)
|
||||
#crtdir=$(dirname $crt1)
|
||||
#crti=$(gcc --print-file-name=crti.o)
|
||||
#crtn=$(gcc --print-file-name=crtn.o)
|
||||
|
||||
unset ONE_SOURCE
|
||||
./configure --tccdir=$PWD --crtprefix=$crtdir --extra-cflags="-DHAVE_FLOAT=1 -DHAVE_BITFIELD=1"
|
||||
|
|
28
build-x86.sh
28
build-x86.sh
|
@ -5,20 +5,25 @@ rm -f i686-unknown-linux-gnu-tcc
|
|||
# crt1=$(i686-unknown-linux-gnu-gcc --print-file-name=crt1.o)
|
||||
# crtdir=$(dirname $crt1)
|
||||
|
||||
unset C_INCLUDE_PATH LIBRARY_PATH
|
||||
|
||||
PREFIX=${PREFIX-usr}
|
||||
GUIX=${GUIX-$(command -v guix||:)}
|
||||
MES_PREFIX=${MES_PREFIX-../mes}
|
||||
MES_PREFIX=${MES_PREFIX-${MESCC%/*}/../share/mes}
|
||||
TINYCC_SEED=${TINYCC_SEED-../tinycc-seed}
|
||||
cp $TINYCC_SEED/crt1.mlibc-o crt1.o
|
||||
cp $TINYCC_SEED/x86-mes-gcc/crt1.o crt1.o
|
||||
cp $TINYCC_SEED/x86-mes-gcc/crti.o crti.o
|
||||
cp $TINYCC_SEED/x86-mes-gcc/crtn.o crtn.o
|
||||
|
||||
CC=${CC-i686-unknown-linux-gnu-gcc}
|
||||
CFLAGS="
|
||||
-nostdinc
|
||||
-nostdlib
|
||||
-fno-builtin
|
||||
--include=$MES_PREFIX/lib/crt1.c
|
||||
--include=$MES_PREFIX/lib/libc+tcc-gcc.c
|
||||
--include=$MES_PREFIX/lib/linux/x86-mes-gcc/crt1.c
|
||||
--include=$MES_PREFIX/lib/libc+tcc.c
|
||||
--include=$MES_PREFIX/lib/libtcc1.c
|
||||
-Wl,-Ttext-segment=0x1000000
|
||||
"
|
||||
|
||||
|
@ -33,24 +38,25 @@ export interpreter
|
|||
|
||||
mkdir -p $PREFIX/lib
|
||||
ABSPREFIX=$(cd $PREFIX && pwd)
|
||||
cp $TINYCC_SEED/libc+tcc-gcc.mlibc-o $ABSPREFIX/lib
|
||||
cp $TINYCC_SEED/x86-mes-gcc/libc+tcc.o $ABSPREFIX/lib
|
||||
cp $TINYCC_SEED/x86-mes-gcc/libtcc1.o $ABSPREFIX/lib
|
||||
$CC -g -o i686-unknown-linux-gnu-tcc\
|
||||
$CFLAGS\
|
||||
-I.\
|
||||
-I $MES_PREFIX/lib\
|
||||
-I $MES_PREFIX/include\
|
||||
-D CONFIG_TCCBOOT=1\
|
||||
-D TCC_MES_LIBC=1\
|
||||
-D 'CONFIG_TCCDIR="'$PREFIX'/lib/tcc"'\
|
||||
-D 'CONFIG_TCC_CRTPREFIX="'$PREFIX'/lib:{B}/lib:."'\
|
||||
-D 'CONFIG_TCC_ELFINTERP="'$interpreter'"'\
|
||||
-D 'CONFIG_TCC_LIBPATHS="'$ABSPREFIX'/lib:{B}/lib:."'\
|
||||
-D 'CONFIG_TCC_SYSINCLUDEPATHS="'$MES_PREFIX'/include:'$PREFIX'/include:{B}/include"'\
|
||||
-D CONFIG_USE_LIBGCC=1\
|
||||
-D 'TCC_LIBGCC="'$ABSPREFIX'/lib/libc+tcc-gcc.mlibc-o"'\
|
||||
-D CONFIG_TCC_STATIC=1\
|
||||
-D ONE_SOURCE=yes\
|
||||
-D TCC_TARGET_I386=1\
|
||||
-D 'TCC_LIBGCC="'$ABSPREFIX'/lib/libc.a"'\
|
||||
-D BOOTSTRAP=1\
|
||||
-D TCCBOOT_VSTACK=1\
|
||||
-D CONFIG_TCCBOOT=1\
|
||||
-D CONFIG_TCC_STATIC=1\
|
||||
-D CONFIG_USE_LIBGCC=1\
|
||||
-D ONE_SOURCE=1\
|
||||
-D TCC_MES_LIBC=1\
|
||||
-D TCC_TARGET_I386=1\
|
||||
tcc.c
|
||||
|
|
100
build.sh
100
build.sh
|
@ -1,7 +1,22 @@
|
|||
#! /bin/sh
|
||||
set -ex
|
||||
rm -f tcc.E tcc.hex2 tcc.M1 tcc.m1 mes-tcc
|
||||
|
||||
set -e
|
||||
|
||||
export BUILD_DEBUG
|
||||
export MES_DEBUG
|
||||
export MES_PREFIX
|
||||
export PREFIX
|
||||
export TINYCC_SEED
|
||||
export interpreter
|
||||
|
||||
if [ -n "$BUILD_DEBUG" ]; then
|
||||
set -x
|
||||
MESCCFLAGS="$MESCCFLAGS -v"
|
||||
fi
|
||||
|
||||
rm -f tcc.E tcc.hex2 tcc.M1 tcc.m1 mes-tcc boot?-tcc
|
||||
|
||||
unset C_INCLUDE_PATH LIBRARY_PATH
|
||||
PREFIX=${PREFIX-usr}
|
||||
GUIX=${GUIX-$(command -v guix||:)}
|
||||
CC=${MESCC-mescc}
|
||||
|
@ -12,10 +27,12 @@ M1=${M1-M1}
|
|||
BLOOD_ELF=${BLOOD_ELF-blood-elf}
|
||||
|
||||
MES_PREFIX=${MES_PREFIX-${MESCC%/*}/../share/mes}
|
||||
MES_PREFIX=${MES_PREFIX-../mes}
|
||||
#MES_PREFIX=${MES_PREFIX-../mes}
|
||||
MES_SEED=${MES_SEED-../mes-seed}
|
||||
TINYCC_SEED=${TINYCC_SEED-../tinycc-seed}
|
||||
cp $TINYCC_SEED/crt1.mlibc-o crt1.o
|
||||
cp $TINYCC_SEED/x86-mes-tcc/crt1.o crt1.o
|
||||
cp $TINYCC_SEED/x86-mes-tcc/crti.o crti.o
|
||||
cp $TINYCC_SEED/x86-mes-tcc/crtn.o crtn.o
|
||||
|
||||
if [ -z "$interpreter" -a -n "$GUIX" ]; then
|
||||
interpreter=$($GUIX environment --ad-hoc patchelf -- patchelf --print-interpreter $(guix build --system=i686-linux hello)/bin/hello)
|
||||
|
@ -28,12 +45,12 @@ export interpreter
|
|||
|
||||
mkdir -p $PREFIX/lib
|
||||
ABSPREFIX=$(cd $PREFIX && pwd)
|
||||
cp $TINYCC_SEED/libc+tcc-gcc.mlibc-o $ABSPREFIX/lib
|
||||
cp $TINYCC_SEED/x86-mes-tcc/libc+tcc.o $ABSPREFIX/lib
|
||||
|
||||
|
||||
if [ -n "$ONE_SOURCE" ]; then
|
||||
sh cc.sh tcc
|
||||
files="-f tcc.m1"
|
||||
files="tcc.S"
|
||||
else
|
||||
sh cc.sh tccpp
|
||||
sh cc.sh tccgen
|
||||
|
@ -46,39 +63,50 @@ else
|
|||
sh cc.sh libtcc
|
||||
sh cc.sh tcc
|
||||
files="
|
||||
-f tccpp.m1
|
||||
-f tccgen.m1
|
||||
-f tccelf.m1
|
||||
-f tccrun.m1
|
||||
-f i386-gen.m1
|
||||
-f i386-link.m1
|
||||
-f i386-asm.m1
|
||||
-f tccasm.m1
|
||||
-f libtcc.m1
|
||||
-f tcc.m1
|
||||
tccpp.S
|
||||
tccgen.S
|
||||
tccelf.S
|
||||
tccrun.S
|
||||
i386-gen.S
|
||||
i386-link.S
|
||||
i386-asm.S
|
||||
tccasm.S
|
||||
libtcc.S
|
||||
tcc.S
|
||||
"
|
||||
fi
|
||||
|
||||
$M1 --LittleEndian --Architecture=1\
|
||||
-f $MES_PREFIX/stage0/x86.M1\
|
||||
-f $MES_SEED/libc+tcc-mes.M1\
|
||||
$files\
|
||||
-o tcc.hex2
|
||||
|
||||
$BLOOD_ELF\
|
||||
-f $MES_PREFIX/stage0/x86.M1\
|
||||
-f $MES_SEED/libc+tcc-mes.M1\
|
||||
$MESCC\
|
||||
$MESCCFLAGS\
|
||||
-g\
|
||||
-o mes-tcc\
|
||||
-L $TINYCC_SEED\
|
||||
-L $MES_SEED\
|
||||
-l c+tcc\
|
||||
$files\
|
||||
-o tcc-blood-elf-footer.M1
|
||||
$TINYCC_SEED/x86-mes/libc+tcc.o
|
||||
|
||||
$M1 --LittleEndian --Architecture=1\
|
||||
-f tcc-blood-elf-footer.M1\
|
||||
-o tcc-blood-elf-footer.hex2
|
||||
exit 0
|
||||
|
||||
$HEX2 --LittleEndian --Architecture=1 --BaseAddress=0x1000000\
|
||||
-f $MES_PREFIX/stage0/elf32-header.hex2\
|
||||
-f $MES_PREFIX/lib/crt1.hex2\
|
||||
-f tcc.hex2\
|
||||
-f tcc-blood-elf-footer.hex2\
|
||||
--exec_enable\
|
||||
-o mes-tcc
|
||||
rm -f libc.a
|
||||
if false; then
|
||||
# ../mes/lib/linux-gcc.c:33: error: bad operand with opcode 'mov'
|
||||
# it works with bootx-tcc
|
||||
./mes-tcc -c -I $MES_PREFIX/include -I $MES_PREFIX/lib $MES_PREFIX/lib/libc+gnu.c
|
||||
./mes-tcc -ar rc libc.a libc+gnu.o
|
||||
else
|
||||
##./mes-tcc -ar rc libc.a $TINYCC_SEED/x86-mes-tcc/libc+gnu.o
|
||||
cp -f $TINYCC_SEED/x86-mes-gcc/libc+gnu.o .
|
||||
./mes-tcc -ar rc libc.a libc+gnu.o
|
||||
fi
|
||||
rm -f libtcc1.a
|
||||
cp -f $TINYCC_SEED/x86-mes-gcc/libtcc1.o .
|
||||
./mes-tcc -ar rc libtcc1.a libtcc1.o
|
||||
|
||||
sh boot.sh
|
||||
TCC=./boot0-tcc sh boot.sh
|
||||
TCC=./boot1-tcc sh boot.sh
|
||||
TCC=./boot2-tcc sh boot.sh
|
||||
TCC=./boot3-tcc sh boot.sh
|
||||
|
||||
ln -f boot4-tcc tcc
|
||||
|
|
43
cc.sh
43
cc.sh
|
@ -1,5 +1,10 @@
|
|||
#! /bin/sh
|
||||
set -ex
|
||||
set -e
|
||||
|
||||
if [ -n "$BUILD_DEBUG" ]; then
|
||||
set -x
|
||||
MESCCFLAGS="$MESCCFLAGS -v"
|
||||
fi
|
||||
|
||||
t=$1
|
||||
|
||||
|
@ -11,6 +16,7 @@ MES=${MES-../mes/src/mes}
|
|||
MESCC=${MESCC-mescc}
|
||||
CFLAGS=${CFLAGS-}
|
||||
MES_PREFIX=${MES_PREFIX-${MESCC%/*}}
|
||||
ABSPREFIX=$(cd $PREFIX && pwd)
|
||||
|
||||
if [ -z "$interpreter" -a -n "$GUIX" ]; then
|
||||
interpreter=$($GUIX environment --ad-hoc patchelf -- patchelf --print-interpreter $(guix build --system=i686-linux hello)/bin/hello)
|
||||
|
@ -26,50 +32,47 @@ if [ -n "$ONE_SOURCE" ]; then
|
|||
fi
|
||||
|
||||
if [ -n "$PREPROCESS" ]; then
|
||||
time sh $MESCC -E -o $t.E\
|
||||
time sh $MESCC $MESCCFLAGS -E -o $t.E\
|
||||
$CFLAGS\
|
||||
-I .\
|
||||
-I $MES_PREFIX/lib\
|
||||
-I $MES_PREFIX/include\
|
||||
-D inline=\
|
||||
-D CONFIG_TCCBOOT=1\
|
||||
-D TCC_MES_LIBC=1\
|
||||
-D TCC_MES_LIBC=1\
|
||||
-D 'CONFIG_TCCDIR="'$PREFIX'/lib/tcc"'\
|
||||
-D 'CONFIG_TCC_CRTPREFIX="'$PREFIX'/lib:{B}/lib:."'\
|
||||
-D 'CONFIG_TCC_ELFINTERP="'$interpreter'"'\
|
||||
-D 'CONFIG_TCC_LIBPATHS="'$ABSPREFIX'/lib:{B}/lib:."'\
|
||||
-D 'CONFIG_TCC_SYSINCLUDEPATHS="'$MES_PREFIX'/include:'$PREFIX'/include:{B}/include"'\
|
||||
-D CONFIG_USE_LIBGCC=1\
|
||||
-D 'TCC_LIBGCC="'$ABSPREFIX'/lib/libc+tcc-gcc.mlibc-o"'\
|
||||
-D CONFIG_TCC_STATIC=1\
|
||||
-D TCC_TARGET_I386=1\
|
||||
-D 'TCC_LIBGCC="'$ABSPREFIX'/lib/libc.a"'\
|
||||
-D BOOTSTRAP=1\
|
||||
-D TCCBOOT_VSTACK=1\
|
||||
-D CONFIG_TCCBOOT=1\
|
||||
-D CONFIG_TCC_STATIC=1\
|
||||
-D CONFIG_USE_LIBGCC=1\
|
||||
-D TCC_MES_LIBC=1\
|
||||
-D TCC_TARGET_I386=1\
|
||||
$t.c
|
||||
time sh $MESCC -c -o $t.M1 $t.E
|
||||
time sh $MESCC $MESCCFLAGS -S -o $t.M1 $t.E
|
||||
else
|
||||
time sh $MESCC -c -o $t.M1\
|
||||
time sh $MESCC $MESCCFLAGS -S -o $t.M1\
|
||||
$CFLAGS\
|
||||
-I .\
|
||||
-I $MES_PREFIX/lib\
|
||||
-I $MES_PREFIX/include\
|
||||
-D inline=\
|
||||
-D CONFIG_TCCBOOT=1\
|
||||
-D TCC_MES_LIBC=1\
|
||||
-D TCC_MES_LIBC=1\
|
||||
-D 'CONFIG_TCCDIR="'$PREFIX'/lib/tcc"'\
|
||||
-D 'CONFIG_TCC_CRTPREFIX="'$PREFIX'/lib:{B}/lib:."'\
|
||||
-D 'CONFIG_TCC_ELFINTERP="'$interpreter'"'\
|
||||
-D 'CONFIG_TCC_LIBPATHS="'$ABSPREFIX'/lib:{B}/lib:."'\
|
||||
-D 'CONFIG_TCC_SYSINCLUDEPATHS="'$MES_PREFIX'/include:'$PREFIX'/include:{B}/include"'\
|
||||
-D CONFIG_USE_LIBGCC=1\
|
||||
-D 'TCC_LIBGCC="'$ABSPREFIX'/lib/libc+tcc-gcc.mlibc-o"'\
|
||||
-D CONFIG_TCC_STATIC=1\
|
||||
-D TCC_TARGET_I386=1\
|
||||
-D 'TCC_LIBGCC="'$ABSPREFIX'/lib/libc.a"'\
|
||||
-D BOOTSTRAP=1\
|
||||
-D TCCBOOT_VSTACK=1\
|
||||
-D CONFIG_TCCBOOT=1\
|
||||
-D CONFIG_TCC_STATIC=1\
|
||||
-D CONFIG_USE_LIBGCC=1\
|
||||
-D TCC_MES_LIBC=1\
|
||||
-D TCC_TARGET_I386=1\
|
||||
$t.c
|
||||
fi
|
||||
|
||||
tr -d '\r' < $t.M1 > $t.m1
|
||||
tr -d '\r' < $t.M1 > $t.S
|
||||
|
|
31
check.sh
31
check.sh
|
@ -1,6 +1,12 @@
|
|||
#! /bin/sh
|
||||
|
||||
MESCC=${MESCC-mescc}
|
||||
###MESCC=${MESCC-mescc}
|
||||
MES_ARENA=70000000
|
||||
MES_MAX_ARENA=70000000
|
||||
export MES_ARENA MES_MAX_ARENA
|
||||
MES=guile
|
||||
MESCC=${MESCC-../mes/pre-inst-env mescc}
|
||||
|
||||
MES_PREFIX=${MES_PREFIX-../mes}
|
||||
MES_PREFIX=${MES_PREFIX-${MESCC%/*}}
|
||||
|
||||
|
@ -87,7 +93,10 @@ t
|
|||
82-define
|
||||
83-heterogenoous-init
|
||||
84-struct-field-list
|
||||
85-sizeof
|
||||
86-strncpy
|
||||
87-sscanf
|
||||
90-strpbrk
|
||||
91-fseek
|
||||
"
|
||||
|
||||
broken="
|
||||
|
@ -110,13 +119,6 @@ t
|
|||
21-char[]
|
||||
22-while-char[]
|
||||
23-pointer
|
||||
61-array
|
||||
62-array
|
||||
63-struct-cell
|
||||
64-make-cell
|
||||
76-pointer-arithmetic
|
||||
7k-for-each-elem
|
||||
7o-struct-pre-post
|
||||
"
|
||||
|
||||
if [ ! -x ./i686-unknown-linux-gnu-tcc ]; then
|
||||
|
@ -197,7 +199,6 @@ tests="
|
|||
43_void_param
|
||||
44_scoped_declarations
|
||||
45_empty_for
|
||||
46_grep
|
||||
47_switch_return
|
||||
48_nested_break
|
||||
49_bracket_evaluation
|
||||
|
@ -213,28 +214,20 @@ broken="$broken
|
|||
22_floating_point
|
||||
23_type_coercion
|
||||
24_math_library
|
||||
28_strings
|
||||
31_args
|
||||
34_array_assignment
|
||||
37_sprintf
|
||||
40_stdio
|
||||
46_grep
|
||||
49_bracket_evaluation
|
||||
55_lshift_type
|
||||
"
|
||||
|
||||
#22_floating_point ; float
|
||||
#23_type_coercion ; float
|
||||
#24_math_library ; float
|
||||
#27_sizeof ; float
|
||||
#28_strings ; TODO: strncpy strchr strrchr memset memcpy memcmp
|
||||
#34_array_assignment ; fails with GCC
|
||||
#37_sprintf ; integer formatting unsupported
|
||||
#38_multiple_array_index ; unspported: (decl (decl-spec-list (type-spec (fixed-type "int"))) (init-declr-list (init-declr (array-of (array-of (ident "a") (p-expr (fixed "4"))) (p-expr (fixed "4"))))))
|
||||
#39_typedef ;unsupported: (decl (decl-spec-list (stor-spec (typedef)) (type-spec (typename "MyFunStruct"))) (init-declr-list (init-declr (ptr-declr (pointer) (ident "MoreFunThanEver")))))
|
||||
|
||||
#40_stdio ; f* functions
|
||||
#42_function_pointer ; f* functions
|
||||
#46_grep ; f* functions
|
||||
#49_bracket_evaluation ; float
|
||||
|
||||
|
||||
|
|
10
doit
10
doit
|
@ -2,13 +2,13 @@
|
|||
set -ex
|
||||
|
||||
export BLOOD_ELF
|
||||
export BUILD_DEBUG
|
||||
export GUILE_LOAD_PATH
|
||||
export HEX2
|
||||
export M1
|
||||
export MES
|
||||
export MESCC
|
||||
export MES_DEBUG
|
||||
export MES_DEBUG
|
||||
export MES_PREFIX
|
||||
export ONE_SOURCE
|
||||
export PREFIX
|
||||
|
@ -20,10 +20,14 @@ HEX2=../mescc-tools/bin/hex2
|
|||
M1=../mescc-tools/bin/M1
|
||||
BLOOD_ELF=../mescc-tools/bin/blood-elf
|
||||
MES=${MES-../mes/src/mes}
|
||||
MES_ARENA=70000000
|
||||
MES_MAX_ARENA=70000000
|
||||
export MES_ARENA MES_MAX_ARENA
|
||||
|
||||
MES=guile
|
||||
#MES=${MES-../mes/src/mes.gcc}
|
||||
#MES=${MES-../mes/src/mes.mlibc-gcc}
|
||||
MESCC=${MESCC-../mes/scripts/mescc}
|
||||
MESCC=${MESCC-../mes/pre-inst-env mescc}
|
||||
|
||||
#GUILE_LOAD_PATH=/home/janneke/src/nyacc/module:$GUILE_LOAD_PATH
|
||||
GUILE_LOAD_PATH=nyacc
|
||||
|
@ -51,3 +55,5 @@ sh build.sh
|
|||
sh compile.sh
|
||||
sh link.sh ||:
|
||||
sh check.sh
|
||||
rm -rf usr
|
||||
sh install.sh
|
||||
|
|
29
install.sh
29
install.sh
|
@ -1,19 +1,26 @@
|
|||
#! /bin/sh
|
||||
set -ex
|
||||
|
||||
if [ -n "$BUILD_DEBUG" ]; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
PREFIX=${PREFIX-usr}
|
||||
MES_PREFIX=${MES_PREFIX-${MESCC%/*}}
|
||||
TINYCC_SEED=${TINYCC_SEED-../tinycc-seed}
|
||||
|
||||
mkdir -p $PREFIX/bin
|
||||
cp mes-tcc $PREFIX/bin
|
||||
[ -f boot0-tcc ] && { cp boot0-tcc $PREFIX/bin; ln -sf boot0-tcc $PREFIX/bin/tcc; }
|
||||
[ -f boot1-tcc ] && { cp boot1-tcc $PREFIX/bin; ln -sf boot1-tcc $PREFIX/bin/tcc; }
|
||||
[ -f boot2-tcc ] && { cp boot2-tcc $PREFIX/bin; ln -sf boot2-tcc $PREFIX/bin/tcc; }
|
||||
[ -f boot3-tcc ] && { cp boot3-tcc $PREFIX/bin; ln -sf boot3-tcc $PREFIX/bin/tcc; }
|
||||
mkdir -p $PREFIX/lib
|
||||
cp $TINYCC_SEED/* $PREFIX/lib
|
||||
cp crt1.o $PREFIX/lib
|
||||
mkdir -p $PREFIX/lib/tcc
|
||||
#TODO: cp libtcc1.a?? $PREFIX/lib/tcc
|
||||
cp tcc $PREFIX/bin
|
||||
tar -C $MES_PREFIX -cf- include | tar -C $PREFIX -xf-
|
||||
|
||||
mkdir -p $PREFIX/lib
|
||||
cp crt1.o $PREFIX/lib/crt1.o
|
||||
cp crti.o $PREFIX/lib/crti.o
|
||||
cp crtn.o $PREFIX/lib/crtn.o
|
||||
|
||||
mkdir -p $PREFIX/lib/tcc
|
||||
cp libc.a $PREFIX/lib
|
||||
cp libtcc1.a $PREFIX/lib/tcc
|
||||
|
||||
tar -C $TINYCC_SEED -cf- . | tar -C $PREFIX/lib -xf-
|
||||
|
|
10
link.sh
10
link.sh
|
@ -10,20 +10,20 @@ TINYCC_SEED=${TINYCC_SEED-../tinycc-seed}
|
|||
c=${1-$MES_PREFIX/scaffold/main}
|
||||
b=scaffold/${c##*/}
|
||||
|
||||
rm -f "$b".mlibc-out
|
||||
rm -f "$b".mes-gcc-out
|
||||
rm -f "$b".mes-out
|
||||
|
||||
./i686-unknown-linux-gnu-tcc\
|
||||
-static -g -o "$b".mlibc-out -I $MES_PREFIX/include -L $TINYCC_SEED "$c".c 2> "$b".mlibc-stderr
|
||||
-static -g -o "$b".mes-gcc-out -I $MES_PREFIX/include -L $TINYCC_SEED "$c".c 2> "$b".mes-gcc-stderr
|
||||
set +e
|
||||
${MES_TCC-./mes-tcc}\
|
||||
-static -g -o "$b".mes-out -I $MES_PREFIX/include -L $TINYCC_SEED "$c".c 2> "$b".mes-stderr
|
||||
objdump -d "$b".mlibc-out > "$b".mlibc-d
|
||||
objdump -d "$b".mes-gcc-out > "$b".mes-gcc-d
|
||||
objdump -d "$b".mes-out > "$b".mes-d
|
||||
#readelf -a a.i686-unknown-linux-gnu-out > 1.r
|
||||
#readelf -a a.mes-out > 2.r
|
||||
#diff -y 1.a 2.a
|
||||
echo diff -y "$b".mlibc-stderr "$b".mes-stderr
|
||||
echo diff -y "$b".mlibc-d "$b".mes-d
|
||||
echo diff -y "$b".mes-gcc-stderr "$b".mes-stderr
|
||||
echo diff -y "$b".mes-gcc-d "$b".mes-d
|
||||
"$b".mes-out
|
||||
|
||||
|
|
2
tccrun.c
2
tccrun.c
|
@ -770,7 +770,7 @@ static int rt_get_caller_pc(addr_t *paddr, CONTEXT *uc, int level)
|
|||
/* ------------------------------------------------------------- */
|
||||
#ifdef CONFIG_TCC_STATIC
|
||||
|
||||
#if !BOOTSTRAP
|
||||
#if 1 //!BOOTSTRAP
|
||||
/* dummy function for profiling */
|
||||
void *dlopen(const char *filename, int flag)
|
||||
{
|
||||
|
|
21
test.sh
21
test.sh
|
@ -10,6 +10,8 @@ TINYCC_SEED=${TINYCC_SEED-../tinycc-seed}
|
|||
OBJDUMP=${OBJDUMP-objdump}
|
||||
DIFF=${DIFF-diff}
|
||||
|
||||
unset C_INCLUDE_PATH LIBRARY_PATH
|
||||
|
||||
t=${1-$MES_PREFIX/scaffold/tests/t}
|
||||
mkdir -p scaffold
|
||||
b=scaffold/${t##*/}
|
||||
|
@ -20,7 +22,7 @@ r=0
|
|||
if [ -x ./i686-unknown-linux-gnu-tcc ]; then
|
||||
./i686-unknown-linux-gnu-tcc\
|
||||
-c\
|
||||
-o "$b".mlibc-o\
|
||||
-o "$b".mes-gcc-o\
|
||||
-nostdlib\
|
||||
-g\
|
||||
-m32\
|
||||
|
@ -28,21 +30,22 @@ if [ -x ./i686-unknown-linux-gnu-tcc ]; then
|
|||
-I $MES_PREFIX/include\
|
||||
-I $MES_PREFIX/scaffold/tests\
|
||||
-I $MES_PREFIX/scaffold/tinycc\
|
||||
"$t".c
|
||||
#$OBJDUMP -d "$t".mlibc-o > 1.s
|
||||
"$t".c &> 1
|
||||
#$OBJDUMP -d "$t".mes-gcc-o > 1.s
|
||||
./i686-unknown-linux-gnu-tcc\
|
||||
-static\
|
||||
-o "$b".mlibc-out\
|
||||
-o "$b".mes-gcc-out\
|
||||
-L .\
|
||||
-L $TINYCC_SEED\
|
||||
"$b".mlibc-o
|
||||
"$b".mes-gcc-o &> 1.link
|
||||
set +e
|
||||
"$b".mlibc-out > "$b".mlibc-stdout
|
||||
"$b".mes-gcc-out arg1 arg2 arg3 arg4 arg5 > "$b".mes-gcc-stdout
|
||||
m=$?
|
||||
set -e
|
||||
[ -f "$t".exit ] && r=$(cat "$t".exit)
|
||||
[ $m = $r ]
|
||||
if [ -f "$t".expect ]; then
|
||||
$DIFF -ub "$t".expect "$b".mlibc-stdout;
|
||||
$DIFF -ub "$t".expect "$b".mes-gcc-stdout;
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -67,9 +70,9 @@ $TCC\
|
|||
-I $MES_PREFIX/scaffold/tests\
|
||||
-I $MES_PREFIX/scaffold/tinycc\
|
||||
-L $TINYCC_SEED\
|
||||
"$t".c
|
||||
"$t".c &> 2.link
|
||||
set +e
|
||||
"$b".mes-out > "$b".mes-stdout
|
||||
"$b".mes-out arg1 arg2 arg3 arg4 arg5 > "$b".mes-stdout
|
||||
m=$?
|
||||
#$OBJDUMP -d "$t".mes-out > 2.x
|
||||
|
||||
|
|
Loading…
Reference in New Issue