Hello:
On Thu, Oct 29, 2020 at 8:30 AM Sachin More sachinsureshmore@gmail.com wrote:
On Wed, Oct 28, 2020 at 8:27 PM Nick Spinale Nick.Spinale@arm.com wrote:
Can I prepare, say seL4 11.0 and then apply your patches and then
compile using seL4's build system (or your build system if it is in public domain)?
At the moment, I’m unable to share the rest of the code for this particular project. I have, however, published our Raspberry Pi 4-related patches to public branches of 'seL4' [1] and ‘seL4_tools' [2]. These patches, which are the extent of our Raspberry Pi 4-related patches for upstream seL4 repositories, only encompasses the bootloader (“elfloader”) and the seL4 kernel itself. The projects that you might use for getting started, such as ‘sel4test’ [3], depend on platform support for userland libraries such as those found in ’seL4_libs’ [4].
Thanks for the detailed explanation.
I started with the seL4 kernel link that you provided. I am using Ubuntu 20 running on the RP4 to build the kernel:
git clone https://github.com/nspin/seL4.git
git checkout origin/rpi4
mkdir build ; cd build
cmake -C /home/smore/seL4/configs/ARM_verified.cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=/home/smore/seL4/gcc.cmake /home/smore/seL4
However, when I compile, I get the following errors.
ninja kernel.elf
[9/30] Building C object CMakeFiles/kernel_bf_..._lib.dir/kernel_bf_gen_target_1_pbf_temp.c.obj
FAILED: CMakeFiles/kernel_bf_gen_target_1_pbf_temp_lib.dir/kernel_bf_gen_target_1_pbf_temp.c.obj
/usr/bin/ccache /usr/bin/gcc --sysroot=/home/smore/seL4/build -I../include/plat/default -I../include -I../include/32 -I../include/arch/arm -I../include/arch/arm/arch/32 -I../include/plat/imx6 -I../include/plat/imx6/plat/32 -I../include/arch/arm/armv/armv7-a -I../include/arch/arm/armv/armv7-a/32 -I../libsel4/include -I../libsel4/arch_include/arm -I../libsel4/sel4_arch_include/aarch32 -I../libsel4/sel4_plat_include/imx6 -I../libsel4/mode_include/32 -Igen_config -Iautoconf -Igen_headers -march=armv7-a -marm -D__KERNEL_32__ -O3 -DNDEBUG -nostdinc -nostdlib -O2 -DHAVE_AUTOCONF -mfloat-abi=soft -fno-pic -fno-pie -fno-stack-protector -fno-asynchronous-unwind-tables -std=c99 -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wmissing-declarations -Wundef -Wpointer-arith -Wno-nonnull -ffreestanding -E -P -MD -MT CMakeFiles/kernel_bf_gen_target_1_pbf_temp_lib.dir/kernel_bf_gen_target_1_pbf_temp.c.obj -MF CMakeFiles/kernel_bf_gen_target_1_pbf_temp_lib.dir/kernel_bf_gen_target_1_pbf_temp.c.obj.d -o CMakeFiles/kernel_bf_gen_target_1_pbf_temp_lib.dir/kernel_bf_gen_target_1_pbf_temp.c.obj -c kernel_bf_gen_target_1_pbf_temp.c
gcc: error: unrecognized command-line option '-marm'
gcc: error: unrecognized command-line option '-mfloat-abi=soft'
[10/30] Building C object CMakeFiles/kernel_al...lib.dir/kernel_all_pp_prune_wrapper_temp.c.obj
FAILED: CMakeFiles/kernel_all_pp_prune_wrapper_temp_lib.dir/kernel_all_pp_prune_wrapper_temp.c.obj
/usr/bin/ccache /usr/bin/gcc --sysroot=/home/smore/seL4/build -I../include/plat/default -I../include -I../include/32 -I../include/arch/arm -I../include/arch/arm/arch/32 -I../include/plat/imx6 -I../include/plat/imx6/plat/32 -I../include/arch/arm/armv/armv7-a -I../include/arch/arm/armv/armv7-a/32 -I../libsel4/include -I../libsel4/arch_include/arm -I../libsel4/sel4_arch_include/aarch32 -I../libsel4/sel4_plat_include/imx6 -I../libsel4/mode_include/32 -Igen_config -Iautoconf -Igen_headers -march=armv7-a -marm -D__KERNEL_32__ -O3 -DNDEBUG -nostdinc -nostdlib -O2 -DHAVE_AUTOCONF -mfloat-abi=soft -fno-pic -fno-pie -fno-stack-protector -fno-asynchronous-unwind-tables -std=c99 -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wmissing-declarations -Wundef -Wpointer-arith -Wno-nonnull -ffreestanding -E -CC -I/home/smore/seL4/build/generated_prune -MD -MT CMakeFiles/kernel_all_pp_prune_wrapper_temp_lib.dir/kernel_all_pp_prune_wrapper_temp.c.obj -MF CMakeFiles/kernel_all_pp_prune_wrapper_temp_lib.dir/kernel_all_pp_prune_wrapper_temp.c.obj.d -o CMakeFiles/kernel_all_pp_prune_wrapper_temp_lib.dir/kernel_all_pp_prune_wrapper_temp.c.obj -c kernel_all_pp_prune_wrapper_temp.c
gcc: error: unrecognized command-line option '-marm'
gcc: error: unrecognized command-line option '-mfloat-abi=soft'
ninja: build stopped: subcommand failed.
It seems that I am using the wrong toolchain for compilation. Any ideas?
thanks, Sachin
If you decide to add Raspberry Pi 4 support to those userland libraries,
I’d be happy to help out with that.
I am not confident if I will be able to add RP4 support for the userland libraries. But I will give it a try and keep everyone posted if I get somewhere.
thanks, Sachin
[1] https://github.com/nspin/seL4/tree/rpi4 [2] https://github.com/nspin/seL4_tools/tree/rpi4 [3] https://github.com/seL4/sel4test-manifest [4] https://github.com/seL4/seL4_libs
Nick Spinale (nickspinale.com) Arm Research, Cambridge UK
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.