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'
signature.asc
Description: Digital signature
_______________________________________________ Tinycc-devel mailing list Tinycc-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/tinycc-devel