diff options
-rwxr-xr-x | embedded-test.sh | 120 |
1 files changed, 37 insertions, 83 deletions
diff --git a/embedded-test.sh b/embedded-test.sh index acb8b5b..6027e06 100755 --- a/embedded-test.sh +++ b/embedded-test.sh @@ -1,6 +1,6 @@ #!/usr/bin/env mksh # -# Copyright © 2014-2024 +# Copyright © 2014-2025 # Waldemar Brodkorb <wbx@openadk.org> # # Provided that these terms and disclaimer and all copyright notices @@ -27,12 +27,12 @@ arch_list_uclibcng="aarch64 aarch64be alpha arcv2 arc32 \ armv5 armv5-nommu-arm armv5-nommu-thumb armv5-nommu-fdpic armv5-nommu-elf \ armv6 armv7 armv7-thumb2 armv8 armv8-thumb2 armeb avr32 \ bf512-flat bf512-fdpic bf532-flat bf532-fdpic \ - c6x crisv10 crisv32 csky-ck807 csky-ck810 \ + c6x crisv10 crisv32 csky-ck807 csky-ck810 frv \ h8300-h8300h h8300-h8s hppa ia64 kvx lm32 \ m68k m68k-nommu-flat m68k-nommu-elf metag microblazeel microblazebe \ mips32 mips32r6 mips32sf mips32el mips32r6el mips32elsf \ mips64 mips64n32 mips64n64 mips64el mips64eln32 mips64eln64 \ - mips64r6n32 mips64r6n64 mips64r6eln32 mips64r6eln64 nds32le \ + mips64r6n32 mips64r6n64 mips64r6eln32 mips64r6eln64 \ nios2 or1k ppc ppcsf riscv32 riscv32-nommu-flat riscv32-nommu-elf \ riscv64 riscv64-nommu-flat riscv64-nommu-elf \ sh2 sh2eb sh3 sh3eb sh4 sh4eb sparc sparc-leon3 sparc64 tilegx x86 x86_64 \ @@ -47,12 +47,12 @@ arch_list_musl="aarch64 aarch64be armv5 armv6 armv7 armeb \ x86 x86_64 x86_64_x32" # glibc -arch_list_glibc="aarch64 aarch64be alpha armv7 arcv2 arc32 arc64 \ - csky-ck807 csky-ck810 ia64 m68k microblazeel microblazebe \ +arch_list_glibc="aarch64 aarch64be alpha armv7 arcv2 arc32 \ + csky-ck807 csky-ck810 m68k microblazeel microblazebe \ mips32 mips32r6 mips32sf mips32el mips32elsf \ mips64 mips64n32 mips64n64 mips64el mips64eln32 mips64eln64 \ mips64r6n32 mips64r6n64 mips64r6eln32 mips64r6eln64 loongarch \ - nios2 or1k ppc ppcsf ppc64 ppc64le riscv32 riscv64 s390 sh4 sh4eb sparc64 \ + or1k ppc ppcsf ppc64 ppc64le riscv32 riscv64 s390 sh4 sh4eb sparc64 \ x86_64 x86_64_x32" # newlib @@ -233,8 +233,6 @@ get_arch_info() { emulator=qemu gdbcmd= noappend=0 - piggyback=1 - disk=0 endian= suffix= allowed_libc= @@ -436,10 +434,9 @@ get_arch_info() { ;; arc32) allowed_libc="uclibc-ng glibc" - runtime_test="uclibc-ng glibc" + runtime_test="uclibc-ng" allowed_tests="toolchain boot libc ltp mksh native" default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=arc ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-arc ADK_TARGET_ENDIAN=little ADK_TARGET_CPU=arc32" - default_glibc="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=arc ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-arc ADK_TARGET_ENDIAN=little ADK_TARGET_CPU=arc32" qemu=qemu-system-arc qemu_machine=virt,ram_start=0 qemu_args="-nographic -monitor none -serial stdio -cpu hs5x -netdev user,id=eth0 -device virtio-net-device,netdev=eth0" @@ -587,11 +584,10 @@ get_arch_info() { default_newlib="ADK_APPLIANCE=toolchain ADK_TARGET_OS=baremetal ADK_TARGET_ARCH=frv" ;; ia64) - allowed_libc="uclibc-ng glibc newlib" + allowed_libc="uclibc-ng newlib" runtime_test="" allowed_tests="toolchain" default_uclibc_ng="ADK_APPLIANCE=toolchain ADK_TARGET_OS=$os ADK_TARGET_ARCH=ia64 ADK_TARGET_SYSTEM=generic-ia64" - default_glibc="ADK_APPLIANCE=toolchain ADK_TARGET_OS=$os ADK_TARGET_ARCH=ia64 ADK_TARGET_SYSTEM=generic-ia64" default_newlib="ADK_APPLIANCE=toolchain ADK_TARGET_OS=baremetal ADK_TARGET_ARCH=ia64" ;; kvx) @@ -693,7 +689,7 @@ get_arch_info() { metag) allowed_libc="uclibc-ng" runtime_test="uclibc-ng" - allowed_tests="toolchain boot" + allowed_tests="toolchain boot libc" default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=metag ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-metag" cpu_arch=metag qemu=qemu-system-meta @@ -992,11 +988,10 @@ get_arch_info() { default_newlib="ADK_APPLIANCE=toolchain ADK_TARGET_OS=baremetal ADK_TARGET_ARCH=nds32 ADK_TARGET_ENDIAN=big" ;; nios2) - allowed_libc="uclibc-ng glibc newlib" - runtime_test="uclibc-ng glibc" + allowed_libc="uclibc-ng newlib" + runtime_test="uclibc-ng" allowed_tests="toolchain boot" default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=nios2 ADK_TARGET_SYSTEM=qemu-nios2" - default_glibc="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=nios2 ADK_TARGET_SYSTEM=qemu-nios2" default_newlib="ADK_APPLIANCE=toolchain ADK_TARGET_OS=baremetal ADK_TARGET_ARCH=nios2" qemu_machine=10m50-ghrd ;; @@ -1191,32 +1186,30 @@ get_arch_info() { sh4) allowed_libc="uclibc-ng musl glibc" runtime_test="uclibc-ng musl glibc" - allowed_tests="toolchain boot libc ltp native" - default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sh ADK_TARGET_FS=archive ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=little" - default_musl="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sh ADK_TARGET_FS=archive ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=little" - default_glibc="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sh ADK_TARGET_FS=archive ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=little" + allowed_tests="toolchain boot libc" + default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sh ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=little" + default_musl="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sh ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=little" + default_glibc="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sh ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=little" cpu_arch=sh4 march=sh qemu=qemu-system-sh4 qemu_machine=r2d qemu_args="${qemu_args} -monitor null -serial null -serial stdio" suffix=${cpu_arch} - disk=1 ;; sh4eb) allowed_libc="uclibc-ng musl glibc" runtime_test="uclibc-ng musl glibc" - allowed_tests="toolchain boot libc ltp native" - default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sh ADK_TARGET_FS=archive ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=big" - default_musl="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sh ADK_TARGET_FS=archive ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=big" - default_glibc="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sh ADK_TARGET_FS=archive ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=big" + allowed_tests="toolchain boot libc" + default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sh ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=big" + default_musl="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sh ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=big" + default_glibc="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sh ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=big" cpu_arch=sh4eb march=sh qemu=qemu-system-sh4eb qemu_machine=r2d qemu_args="${qemu_args} -monitor null -serial null -serial stdio -append noiotrap" suffix=${cpu_arch} - disk=1 ;; sparc) allowed_libc="uclibc-ng glibc newlib" @@ -1241,15 +1234,15 @@ get_arch_info() { ;; sparc64) allowed_libc="uclibc-ng glibc newlib" - runtime_test="glibc" - allowed_tests="toolchain" - default_glibc="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sparc64 ADK_TARGET_FS=initrampiggyback ADK_TARGET_SYSTEM=qemu-sparc64" + runtime_test="uclibc-ng glibc" + allowed_tests="toolchain boot libc" + default_glibc="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sparc64 ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-sparc64" default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_OS=$os ADK_TARGET_ARCH=sparc64 ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-sparc64" default_newlib="ADK_APPLIANCE=toolchain ADK_TARGET_OS=baremetal ADK_TARGET_ARCH=sparc64" cpu_arch=v9 qemu=qemu-system-sparc64 qemu_machine=sun4u - qemu_args="${qemu_args} -net nic,model=e1000 -net user" + qemu_args="${qemu_args} -m 512 -net nic,model=e1000 -net user" suffix=${cpu_arch} ;; tilegx) @@ -1313,7 +1306,7 @@ get_arch_info() { qemu=qemu-system-xtensa qemu_machine=kc705 qemu_args="${qemu_args} -cpu dc233c -m 256" - suffix=${cpu_arch} + suffix=${cpu_arch}_windowed ;; xtensabe) allowed_libc="uclibc-ng" @@ -1503,54 +1496,20 @@ runtest() { esac echo "Starting test for $lib and $arch" - # check if initramfs, piggyback or disk is used - if [ $piggyback -eq 1 ]; then - echo "Using extra directory for test image creation" - root=openadk/extra - rm -rf openadk/extra 2>/dev/null - mkdir openadk/extra 2>/dev/null - if [ ! -z $suffix ]; then - kernel=openadk/firmware/${emulator}-${march}_${lib}_${suffix}/${emulator}-${march}-initramfspiggyback-kernel - else - kernel=openadk/firmware/${emulator}-${march}_${lib}/${emulator}-${march}-initramfspiggyback-kernel - fi - elif [ $disk -eq 1 ]; then - echo "Using disk image for test" - if [ ! -z $suffix ]; then - kernel=openadk/firmware/${emulator}-${march}_${lib}_${suffix}/${emulator}-${march}-archive-kernel - else - kernel=openadk/firmware/${emulator}-${march}_${lib}/${emulator}-${march}-archive-kernel - fi - else - echo "Generating root filesystem for test run" - root=$(mktemp -d /tmp/XXXX) - if [ ! -z $suffix ]; then - archive=openadk/firmware/${emulator}-${march}_${lib}_${suffix}/qemu-${march}-${lib}-initramfsarchive.tar.gz - kernel=openadk/firmware/${emulator}-${march}_${lib}_${suffix}/qemu-${march}-initramfsarchive-kernel - else - archive=openadk/firmware/${emulator}-${march}_${lib}/${emulator}-${march}-${lib}-initramfsarchive.tar.gz - kernel=openadk/firmware/${emulator}-${march}_${lib}/${emulator}-${march}-initramfsarchive-kernel - fi - if [ ! -f $archive ]; then - echo "No root filesystem available for architecture ${arch} tried $archive" - exit 1 - fi - tar -xf $archive -C $root + echo "Using extra directory for test image creation" + root=openadk/extra + rm -rf openadk/extra 2>/dev/null + mkdir openadk/extra 2>/dev/null + if [ ! -z $suffix ]; then + kernel=openadk/firmware/${emulator}-${march}_${lib}_${suffix}/${emulator}-${march}-initramfspiggyback-kernel + else + kernel=openadk/firmware/${emulator}-${march}_${lib}/${emulator}-${march}-initramfspiggyback-kernel fi create_run_sh $test ${root}/run.sh quit - if [ $piggyback -eq 1 ]; then - (cd openadk && make v) - elif [ $disk -eq 1 ]; then - (cd openadk && ./scripts/create.sh -i 256 qemu-${march}.img firmware/${emulator}-${march}_${lib}_${cpu_arch}/${emulator}-${march}-${libc}-archive+kernel.tar.gz) - else - echo "Creating initramfs filesystem" - (cd $root; find . | cpio -o -C512 -Hnewc |gzip -c > ${topdir}/initramfs.${arch}) - rm -rf $root - qemu_args="$qemu_args -initrd initramfs.${arch}" - fi + (cd openadk && make v) # qemu-ppc overwrites existing commandline if [ $noappend -eq 0 ]; then @@ -1562,13 +1521,8 @@ runtest() { echo "Now running the test ${test} in ${emulator} for architecture ${arch} and ${lib}" case $emulator in qemu) - if [ $disk -eq 1 ]; then - echo "${qemu} -M ${qemu_machine} ${qemu_args} -kernel ${kernel} -qmp tcp:127.0.0.1:4444,server,nowait -no-reboot openadk/qemu-${march}.img" - ${qemu} -M ${qemu_machine} ${qemu_args} -kernel ${kernel} -qmp tcp:127.0.0.1:4444,server,nowait -no-reboot openadk/qemu-${march}.img | tee $report - else - echo "${qemu} -M ${qemu_machine} ${qemu_args} -kernel ${kernel} -qmp tcp:127.0.0.1:4444,server,nowait -no-reboot" - ${qemu} -M ${qemu_machine} ${qemu_args} -kernel ${kernel} -qmp tcp:127.0.0.1:4444,server,nowait -no-reboot | tee $report - fi + echo "${qemu} -M ${qemu_machine} ${qemu_args} -kernel ${kernel} -qmp tcp:127.0.0.1:4444,server,nowait -no-reboot" + ${qemu} -M ${qemu_machine} ${qemu_args} -kernel ${kernel} -qmp tcp:127.0.0.1:4444,server,nowait -no-reboot | tee $report ;; gdb) echo "$emulator ${arch} ${kernel}" @@ -1733,7 +1687,7 @@ for lib in ${libc}; do if [[ $libcversion ]]; then version=$libcversion else - version=1.0.47 + version=1.0.52 fi libver=uClibc-ng-${version} libdir=uClibc-ng @@ -1743,7 +1697,7 @@ for lib in ${libc}; do if [[ $libcversion ]]; then version=$libcversion else - version=2.39 + version=2.41 fi libver=glibc-${version} libdir=glibc |