To extend test coverage with aarch32 involved, another test-setup was
established with:
 BUILD,HOST,TARGET=arm (non-cross setup)
 CC,LD,AS,AR=arm-tcc
 musl-libc 1.1.24

In this case arm-tcc cannot process some inline-assembly
(which in comparison CC,LD,AS=i386-tcc could when compiling musl-libc with an
almost identical test setup for BUILD,HOST,TARGET=i386)

 $ arm-tcc --version
 tcc version 0.9.28rc 2025-02-13 HEAD@f8bd136d* (ARM eabihf Linux)

 $ pwd
 musl-1.1.24-src

 $ /usr/bin/arm-tcc -std=c99 -nostdinc -ffreestanding \
 -D_XOPEN_SOURCE=700 -I./arch/arm -I./arch/generic -Iobj/src/internal \
 -I./src/include -I./src/internal -Iobj/include -I./include -O1 -Wno-error \
 -static -DBROKEN_EBX_ASM -DSYSCALL_NO_TLS=1 -DCRT -c \
 -o obj/crt/Scrt1.o crt/Scrt1.c

 In file included from crt/Scrt1.c:1:
 In file included from crt/crt1.c:6:
 ./arch/arm/crt_arch.h:18: error: operand expected

Seems arm-tcc doesn't pick up the token for inline __asm__()
The complete ebuild sys-libs:musl-1.1.24:20250507-000924.log is attached.

If musl-libc could be compiled with arm-tcc, then this would unblock further
~500 ebuilds that already passed with i386-tcc, to expand test-coverage for
arm-tcc. Although no kernel exists yet that could be compiled with arm-tcc
itself, for runtime testing the base-system profile should work with some
gcc-compiled kernel regardless (portability towards either linux2 or linux5
syscall abi tested OK already); meaning then both i386-tcc and arm-tcc
got some decent compile-time and run-time test-coverage with a complete
operating system release driven by TinyCC. Currently that is possible with
i386-tcc only. In theory the test-setup would be suitable for riscv64-tcc too
for compile-time/run-time testing this against a set of ~500 packages.

Regards

-- 
Michael Ackermann
 * Package:    sys-libs/musl-1.1.24 (patched for linux2 syscall ABI)
 * Repository: gentoo (fully forked for TinyCC support with i386-tcc confirmed)
 * USE:        arm elibc_musl kernel_linux userland_GNU
 * FEATURES:   network-sandbox preserve-libs userpriv
>>> Unpacking source...
>>> Unpacking musl-1.1.24.tar.gz to 
>>> /usr/armv6j-tcc-linux-musleabihf/tmp/portage/sys-libs/musl-1.1.24/work
>>> Unpacking getconf.c to 
>>> /usr/armv6j-tcc-linux-musleabihf/tmp/portage/sys-libs/musl-1.1.24/work
unpack getconf.c: file format not recognized. Ignoring.
>>> Unpacking getent.c to 
>>> /usr/armv6j-tcc-linux-musleabihf/tmp/portage/sys-libs/musl-1.1.24/work
unpack getent.c: file format not recognized. Ignoring.
>>> Unpacking iconv.c to 
>>> /usr/armv6j-tcc-linux-musleabihf/tmp/portage/sys-libs/musl-1.1.24/work
unpack iconv.c: file format not recognized. Ignoring.
>>> Source unpacked in 
>>> /usr/armv6j-tcc-linux-musleabihf/tmp/portage/sys-libs/musl-1.1.24/work
>>> Preparing source in 
>>> /usr/armv6j-tcc-linux-musleabihf/tmp/portage/sys-libs/musl-1.1.24/work/musl-1.1.24
>>>  ...
 * Applying 0001-avoid-inline-functions-involving-long-double-in-math.patch ...
 [ ok ]
 * Applying 0002-use-preferred-syntactic-location-for-epoll_event-pac.patch ...
 [ ok ]
 * Applying 0003-iconv-fix-erroneous-input-validation-in-EUC-KR-decod.patch ...
 [ ok ]
 * Applying 0004-iconv-harden-UTF-8-output-code-path-against-input-de.patch ...
 [ ok ]
 * Applying musl-1.2.2-libtcc.patch ...
 [ ok ]
 * Applying musl-1.1.24-hotfix.patch ...
patching file configure
Hunk #1 succeeded at 535 with fuzz 1.
 [ ok ]
 * Applying makefile.patch ...
 [ ok ]
 * Applying sigsetjmp.patch ...
 [ ok ]
 * Applying avoid_set_thread_area.patch ...
 [ ok ]
 * Applying avoid_sys_clone.patch ...
 [ ok ]
 * Applying madvise_preserve_errno.patch ...
 [ ok ]
 * Applying set_thread_area.patch ...
 [ ok ]
 * Applying va_list.patch ...
 [ ok ]
 * Applying musl-1.1.24-linux24.patch ...
patching file arch/i386/bits/syscall.h.in
patching file include/poll.h
patching file include/sys/select.h
patching file src/misc/getrlimit.c
patching file src/misc/setrlimit.c
patching file src/thread/pthread_create.c
patching file src/thread/pthread_mutex_trylock.c
patching file src/linux/adjtimex.c
patching file include/sys/stat.h
patching file src/internal/syscall.h
patching file include/sys/time.h
patching file src/stat/__xstat.c
patching file src/stat/fstat.c
patching file include/sys/stat.h
patching file include/sys/stat.h
patching file src/stat/lstat.c
patching file src/stat/stat.c
patching file src/time/utime.c
patching file src/include/sys/time.h
patching file include/sys/time.h
patching file src/unistd/pipe2.c
patching file include/unistd.h
patching file src/stdio/freopen.c
patching file include/fcntl.h
patching file include/stdio.h
patching file arch/i386/syscall_arch.h
patching file src/time/clock_gettime.c
patching file src/time/clock_nanosleep.c
patching file src/time/clock.c
patching file include/time.h
 [ ok ]
>>> Source prepared.
>>> Configuring source in 
>>> /usr/armv6j-tcc-linux-musleabihf/tmp/portage/sys-libs/musl-1.1.24/work/musl-1.1.24
>>>  ...
/usr/bin/arm-tcc
checking for C compiler... /usr/bin/arm-tcc
checking whether C compiler works... yes
checking whether compiler accepts -Werror=unknown-warning-option... yes
checking whether compiler accepts -Werror=unused-command-line-argument... yes
checking whether compiler accepts -Werror=ignored-optimization-argument... yes
checking whether linker accepts -Werror=unknown-warning-option... yes
checking whether linker accepts -Werror=unused-command-line-argument... yes
checking for C compiler family... unknown
checking target system type... armv6j-tcc-linux-musleabihf
checking whether compiler accepts -std=c99... yes
checking whether compiler accepts -nostdinc... yes
checking whether compiler accepts -ffreestanding... yes
checking whether compiler accepts -fexcess-precision=standard... yes
checking whether compiler accepts -frounding-math... yes
checking whether compiler needs attribute((may_alias)) suppression... no
checking whether compiler accepts -Wa,--noexecstack... yes
checking whether compiler accepts -fno-stack-protector... yes
checking whether compiler accepts -fno-tree-loop-distribute-patterns... yes
checking whether we should preprocess assembly to add debugging information... 
no
checking for optimization settings... using provided CFLAGS
checking whether compiler accepts -pipe... yes
checking whether compiler accepts -fomit-frame-pointer... yes
checking whether compiler accepts -fno-unwind-tables... yes
checking whether compiler accepts -fno-asynchronous-unwind-tables... yes
checking whether compiler accepts -ffunction-sections... yes
checking whether compiler accepts -fdata-sections... yes
checking whether compiler accepts -Werror=implicit-function-declaration... yes
checking whether compiler accepts -Werror=implicit-int... yes
checking whether compiler accepts -Werror=pointer-sign... yes
checking whether compiler accepts -Werror=pointer-arith... yes
checking preprocessor condition __PIC__... false
checking whether linker accepts -ltcc1... yes
using compiler runtime libraries: -ltcc1
checking preprocessor condition __thumb2__... false
checking preprocessor condition __ARMEB__... false
checking preprocessor condition __ARM_PCS_VFP... true
configured for arm variant: armhf
checking whether compiler's long double definition matches float.h... yes
checking preprocessor condition __FAST_MATH__... false
creating config.mak... done
>>> Source configured.
>>> Compiling source in 
>>> /usr/armv6j-tcc-linux-musleabihf/tmp/portage/sys-libs/musl-1.1.24/work/musl-1.1.24
>>>  ...
make LIBTOOL=slibtool-all-static -j5 -l5 obj/include/bits/alltypes.h 
mkdir -p lib
mkdir -p obj/crt
mkdir -p obj/crt/arm
mkdir -p obj/include
mkdir -p obj/include/bits
mkdir -p obj/ldso
mkdir -p obj/src/conf
mkdir -p obj/src/crypt
mkdir -p obj/src/ctype
mkdir -p obj/src/dirent
mkdir -p obj/src/env
mkdir -p obj/src/errno
mkdir -p obj/src/exit
mkdir -p obj/src/exit/arm
mkdir -p obj/src/fcntl
mkdir -p obj/src/fenv
mkdir -p obj/src/fenv/arm
mkdir -p obj/src/internal
mkdir -p obj/src/ipc
mkdir -p obj/src/ldso
mkdir -p obj/src/ldso/arm
mkdir -p obj/src/legacy
mkdir -p obj/src/linux
mkdir -p obj/src/locale
mkdir -p obj/src/malloc
mkdir -p obj/src/math
mkdir -p obj/src/math/arm
mkdir -p obj/src/misc
mkdir -p obj/src/mman
mkdir -p obj/src/multibyte
mkdir -p obj/src/network
mkdir -p obj/src/passwd
mkdir -p obj/src/prng
mkdir -p obj/src/process
mkdir -p obj/src/process/arm
mkdir -p obj/src/regex
mkdir -p obj/src/sched
mkdir -p obj/src/search
mkdir -p obj/src/select
mkdir -p obj/src/setjmp/arm
mkdir -p obj/src/signal
mkdir -p obj/src/signal/arm
mkdir -p obj/src/stat
mkdir -p obj/src/stdio
mkdir -p obj/src/stdlib
mkdir -p obj/src/string
mkdir -p obj/src/string/arm
mkdir -p obj/src/temp
mkdir -p obj/src/termios
mkdir -p obj/src/thread
mkdir -p obj/src/thread/arm
mkdir -p obj/src/time
mkdir -p obj/src/unistd
sed -f ./tools/mkalltypes.sed ./arch/arm/bits/alltypes.h.in 
./include/alltypes.h.in > obj/include/bits/alltypes.h
make LIBTOOL=slibtool-all-static -j5 -l5 -j1 'CFLAGS=-O1 -Wno-error -static 
-DBROKEN_EBX_ASM -DSYSCALL_NO_TLS=1' 
cp arch/arm/bits/syscall.h.in obj/include/bits/syscall.h
sed -n -e s/__NR_/SYS_/p < arch/arm/bits/syscall.h.in >> 
obj/include/bits/syscall.h
/usr/bin/arm-tcc -std=c99 -nostdinc -ffreestanding -fexcess-precision=standard 
-frounding-math -Wa,--noexecstack -D_XOPEN_SOURCE=700 -I./arch/arm 
-I./arch/generic -Iobj/src/internal -I./src/include -I./src/internal 
-Iobj/include -I./include  -pipe -fomit-frame-pointer -fno-unwind-tables 
-fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections 
-Werror=implicit-function-declaration -Werror=implicit-int -Werror=pointer-sign 
-Werror=pointer-arith -O1 -Wno-error -static -DBROKEN_EBX_ASM 
-DSYSCALL_NO_TLS=1 -fPIC -fno-stack-protector -DCRT -c -o obj/crt/Scrt1.o 
crt/Scrt1.c
In file included from crt/Scrt1.c:1:
In file included from crt/crt1.c:6:
./arch/arm/crt_arch.h:18: error: operand expected
make: *** [obj/crt/Scrt1.o] Error 1
 * ERROR: sys-libs/musl-1.1.24::gentoo failed (compile phase):
 *   emake failed
 * 
 * If you need support, post the output of `emerge --info 
'=sys-libs/musl-1.1.24::gentoo'`,
 * the complete build log and the output of `emerge -pqv 
'=sys-libs/musl-1.1.24::gentoo'`.
 * The complete build log is located at 
'/media/CACHE/RELEASE/2025/logs/sys-libs:musl-1.1.24:20250507-000924.log'.
 * For convenience, a symlink to the build log is located at 
'/usr/armv6j-tcc-linux-musleabihf/tmp/portage/sys-libs/musl-1.1.24/temp/build.log'.
 * The ebuild environment file is located at 
'/usr/armv6j-tcc-linux-musleabihf/tmp/portage/sys-libs/musl-1.1.24/temp/environment'.
 * Working directory: 
'/usr/armv6j-tcc-linux-musleabihf/tmp/portage/sys-libs/musl-1.1.24/work/musl-1.1.24'
 * S: 
'/usr/armv6j-tcc-linux-musleabihf/tmp/portage/sys-libs/musl-1.1.24/work/musl-1.1.24'

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to