sel4bench
sel4bench copied to clipboard
sel4bench build is failing for Quartz64
I thought I had seen this building successfully before, but it seems that was not the case.
Error message is:
In file included from /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a/sel4bench/armv/private.h:9,
from /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a/sel4bench/armv/sel4bench.h:10,
from /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/sel4bench/arch/sel4bench.h:12,
from /github/workspace/projects/seL4_libs/libsel4bench/include/sel4bench/sel4bench.h:13,
from /github/workspace/projects/seL4_libs/libsel4bench/src/arch/arm/event_counters.h:8,
from /github/workspace/projects/seL4_libs/libsel4bench/src/arch/arm/event_counters.c:6:
/github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a/sel4bench/armv/events.h:74:10: fatal error: sel4bench/cpu/events.h: No such file or directory
74 | #include <sel4bench/cpu/events.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Also here: https://github.com/seL4/sel4bench/actions/runs/3527176346/jobs/5915946235
As a meta observation: it looks like we need a better see all minimally necessary checks passing when we accept a platform port. Currently, we need the platform to exist in the platform list for a build check to appear on GitHub, but once that platform is in the list, CI will fail until all necessary patches are merged and will block other builds.
Something that could potentially help is a way of switching on a disabled platform for a specific pull request only.
For this specific case: the platform doesn't have a timer yet, so it doesn't really make sense to build sel4bench for it. There is probably a mechanism for that already somewhere that is just not used here.
It is still failing with another issue:
[182/299] Building C object apps/sel4bench/seL4_libs/libsel4bench/CMakeFiles/sel4bench.dir/src/arch/arm/armv/armv8-a/event_counters.c.obj
FAILED: apps/sel4bench/seL4_libs/libsel4bench/CMakeFiles/sel4bench.dir/src/arch/arm/armv/armv8-a/event_counters.c.obj
/usr/bin/ccache /usr/bin/aarch64-linux-gnu-gcc --sysroot=/github/workspace/build -I/github/workspace/projects/seL4_libs/libsel4bench/include -I/github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a -I/github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/cpu/cortex-a55 -I/github/workspace/projects/seL4_libs/libsel4bench/sel4_arch_include/aarch64 -I/github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm -I/github/workspace/projects/seL4_libs/libsel4bench/src -Iapps/sel4bench/musllibc/build-temp/stage/include -I/github/workspace/kernel/libsel4/include -I/github/workspace/kernel/libsel4/arch_include/arm -I/github/workspace/kernel/libsel4/sel4_arch_include/aarch64 -I/github/workspace/kernel/libsel4/sel4_plat_include/quartz64 -I/github/workspace/kernel/libsel4/mode_include/64 -Ilibsel4/include -Ilibsel4/arch_include/arm -Ilibsel4/sel4_arch_include/aarch64 -I/github/workspace/projects/util_libs/libutils/include -I/github/workspace/projects/util_libs/libutils/arch_include/arm -Iapps/sel4bench/util_libs/libutils/gen_config -Ilibsel4/autoconf -Ikernel/gen_config -Ilibsel4/gen_config -march=armv8-a -D__KERNEL_64__ -O3 -DNDEBUG -ffunction-sections -fdata-sections -nostdinc -fno-pic -fno-pie -fno-stack-protector -fno-asynchronous-unwind-tables -ftls-model=local-exec -mstrict-align -mno-outline-atomics -std=gnu11 -MD -MT apps/sel4bench/seL4_libs/libsel4bench/CMakeFiles/sel4bench.dir/src/arch/arm/armv/armv8-a/event_counters.c.obj -MF apps/sel4bench/seL4_libs/libsel4bench/CMakeFiles/sel4bench.dir/src/arch/arm/armv/armv8-a/event_counters.c.obj.d -o apps/sel4bench/seL4_libs/libsel4bench/CMakeFiles/sel4bench.dir/src/arch/arm/armv/armv8-a/event_counters.c.obj -c /github/workspace/projects/seL4_libs/libsel4bench/src/arch/arm/armv/armv8-a/event_counters.c
In file included from /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a/sel4bench/armv/private.h:9,
from /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a/sel4bench/armv/sel4bench.h:10,
from /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/sel4bench/arch/sel4bench.h:12,
from /github/workspace/projects/seL4_libs/libsel4bench/include/sel4bench/sel4bench.h:13,
from /github/workspace/projects/seL4_libs/libsel4bench/src/arch/arm/armv/armv8-a/../../event_counters.h:8,
from /github/workspace/projects/seL4_libs/libsel4bench/src/arch/arm/armv/armv8-a/event_counters.c:9:
/github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a/sel4bench/armv/events.h:74:10: fatal error: sel4bench/cpu/events.h: No such file or directory
74 | #include <sel4bench/cpu/events.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
This could be a fix: https://github.com/seL4/seL4_libs/pull/71
Seem this patch gets us a bit further in the build., see https://github.com/seL4/sel4bench/actions/runs/3602291771/jobs/6069082715 Now the linker fails because the (missing) timer needs to be configured
FAILED: apps/sel4bench/irquser/irquser
: && /usr/bin/ccache /usr/bin/aarch64-linux-gnu-gcc --sysroot=/github/workspace/build -march=armv8-a -D__KERNEL_64__ -O3 -DNDEBUG -D__KERNEL_64__ -Wl,--gc-sections -static -nostdlib -z max-page-size=0x1000 -Wl,-umuslcsys_init_muslc /github/workspace/build/lib/crt0.o /github/workspace/build/lib/crti.o /usr/lib/gcc-cross/aarch64-linux-gnu/10/crtbegin.o apps/sel4bench/irquser/CMakeFiles/irquser.dir/src/main.c.obj -Wl,--start-group -lgcc -lgcc_eh libsel4/libsel4.a apps/sel4bench/seL4_libs/libsel4vka/libsel4vka.a apps/sel4bench/seL4_libs/libsel4allocman/libsel4allocman.a apps/sel4bench/seL4_libs/libsel4utils/libsel4utils.a apps/sel4bench/seL4_libs/libsel4simple/libsel4simple.a apps/sel4bench/seL4_libs/libsel4muslcsys/libsel4muslcsys.a apps/sel4bench/seL4_libs/libsel4platsupport/libsel4platsupport.a apps/sel4bench/util_libs/libplatsupport/libplatsupport.a apps/sel4bench/seL4_libs/libsel4vspace/libsel4vspace.a apps/sel4bench/libsel4benchsupport/libsel4benchsupport.a apps/sel4bench/seL4_libs/libsel4debug/libsel4debug.a apps/sel4bench/seL4_libs/libsel4allocman/libsel4allocman.a apps/sel4bench/seL4_libs/libsel4muslcsys/libsel4muslcsys.a -Wl,-u -Wl,__vsyscall_ptr apps/sel4bench/seL4_libs/libsel4bench/libsel4bench.a apps/sel4bench/sel4_projects_libs/libsel4rpc/libsel4rpc.a apps/sel4bench/sel4_projects_libs/libsel4nanopb/libsel4nanopb.a apps/sel4bench/sel4_projects_libs/libsel4nanopb/libnanopb.a apps/sel4bench/seL4_libs/libsel4serialserver/libsel4serialserver.a apps/sel4bench/seL4_libs/libsel4utils/libsel4utils.a apps/sel4bench/util_libs/libelf/libelf.a apps/sel4bench/util_libs/libcpio/libcpio.a apps/sel4bench/seL4_libs/libsel4platsupport/libsel4platsupport.a apps/sel4bench/util_libs/libplatsupport/libplatsupport.a apps/sel4bench/util_libs/libfdt/libfdt.a -Wl,--undefined=arm_gic_ptr,--undefined=tegra_ictlr_ptr,--undefined=arm_gicv3_ptr,--undefined=fsl_avic_ptr,--undefined=ti_omap3_ptr apps/sel4bench/sel4runtime/libsel4runtime.a apps/sel4bench/seL4_libs/libsel4simple-default/libsel4simple-default.a apps/sel4bench/seL4_libs/libsel4simple/libsel4simple.a apps/sel4bench/seL4_libs/libsel4debug/libsel4debug.a apps/sel4bench/seL4_libs/libsel4vspace/libsel4vspace.a apps/sel4bench/seL4_libs/libsel4vka/libsel4vka.a libsel4/libsel4.a apps/sel4bench/util_libs/libutils/libutils.a apps/sel4bench/musllibc/build-temp/stage/lib/libc.a -Wl,--end-group /usr/lib/gcc-cross/aarch64-linux-gnu/10/crtend.o /github/workspace/build/lib/crtn.o -o apps/sel4bench/irquser/irquser && :
/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: apps/sel4bench/libsel4benchsupport/libsel4benchsupport.a(support.c.obj): in function `benchmark_init_timer':
support.c:(.text.benchmark_init_timer+0x70): undefined reference to `ltimer_default_init'
Now the linker fails because the (missing) timer needs to be configured
The generic timer ltimer driver can be used if the KernelArmExportPCNTUser AND KernelArmExportPTMRUser kernel features are enabled. These features are only for development, but could work for sel4bench.
I'm temporarily switching off QUARTZ64 until this issues is resolved, so that we can get sel4bench results in the meantime.