Booting L4Re with qemu-system-arm: Panic in sigma0

Leslie Zhai lesliezhai at llvm.org.cn
Wed Nov 1 05:37:45 CET 2017


Work :)

I changed to Codesourcery / Mentor cross-compilers GNU toolchain:

$ make qemu 
CROSS_COMPILE=/data/download/arm-2014.05/bin/arm-none-linux-gnueabi- 
E=hello 
MODULE_SEARCH_PATH=/data/project/xiangzhai/l4re/kernel/fiasco/build-arm
make[1]: Entering directory '/data/project/xiangzhai/l4re/l4'
=========== Updating RAM_BASE for platform integrator to 0 =========
   ... Regenerating RAM_BASE settings
   [sigma0] ==> Linking sigma0
   [sigma0] ==> sigma0 built
   [sigma0] ==> Installing sigma0 to local build-tree
   [moe] ==> Linking moe
   [moe] ==> moe built
   [moe] ==> Installing moe to local build-tree
   [bootstrap] ... Building Dependencies
Building entry "hello".
Merging image 
/data/project/xiangzhai/l4re/kernel/fiasco/build-arm/fiasco to mod00 [545kB]
Merging image 
/data/project/xiangzhai/l4re/l4/build-arm/bin/arm_armv5te/l4f/sigma0 to 
mod01 [728kB]
Merging image 
/data/project/xiangzhai/l4re/l4/build-arm/bin/arm_armv5te/l4f/moe to 
mod02 [5591kB]
Merging image 
/data/project/xiangzhai/l4re/l4/build-arm/bin/arm_armv5te/l4f/l4re to 
mod03 [1847kB]
Merging image 
/data/project/xiangzhai/l4re/l4/build-arm/bin/arm_armv5te/l4f/hello to 
mod04 [1292kB]
   [bootstrap] ... Generating bootstrap.ld
   [bootstrap] ... Compiling ARCH-arm/crt0.o
   [bootstrap] ... Compiling exec.o
   [bootstrap] ... Compiling module.o
   [bootstrap] ... Compiling region.o
   [bootstrap] ... Compiling startup.o
   [bootstrap] ... Compiling init_kip_f.o
   [bootstrap] ... Compiling libc_support+.o
   [bootstrap] ... Compiling patch.o
   [bootstrap] ... Compiling koptions.o
   [bootstrap] ... Compiling platform_common.o
   [bootstrap] ... Compiling memory.o
   [bootstrap] ... Compiling boot_modules.o
   [bootstrap] ... Compiling platform/integrator.o
   [bootstrap] ... Compiling ARCH-arm/reboot.o
   [bootstrap] ... Compiling ARCH-arm/head.o
   [bootstrap] ==> Linking bootstrap.elf
   ==> Post-processing bootstrap.elf
   [bootstrap] ==> bootstrap.elf built
   ==> Installing bootstrap.elf in image directory
   ==> Installing bootstrap_hello in image directory
   ==> Installing bootstrap_hello.elf in image directory
   Image size(s) in bytes:
             bootstrap_hello.elf:  1188148
   Start address: 0x1000000
   --> Build-Nr: 2
   [bootstrap] ==> Installing bootstrap.elf to local build-tree
   [bootstrap] ==> Installing bootstrap_hello to local build-tree
   [bootstrap] ==> Installing bootstrap_hello.elf to local build-tree
QEMU-cmd: qemu-system-arm -kernel 
/data/project/xiangzhai/l4re/l4/build-arm/images/bootstrap.elf -serial 
stdio -M integratorcp -m 256

L4 Bootstrapper
   Build: #2 Wed Nov  1 12:34:00 CST 2017, 4.8.3 20140320 (prerelease)
   Scanning up to 256 MB RAM, starting at offset 32MB
   Memory size is 256MB (00000000 - 0fffffff)
   RAM: 0000000000000000 - 000000000fffffff: 262144kB
   Total RAM: 256MB
   Scanning fiasco
   Scanning sigma0
   Scanning moe
   Moving up to 5 modules behind 1100000
   moving module 02 { 10e7000-11184bf } -> { 11d7000-12084bf } [201920]
   moving module 01 { 10d5000-10e6387 } -> { 11c5000-11d6387 } [70536]
   moving module 00 { 104c000-10d4073 } -> { 113c000-11c4073 } [557172]
   moving module 04 { 1032000-104b597 } -> { 1122000-113b597 } [103832]
   moving module 03 { 1010000-1031483 } -> { 1100000-1121483 } [136324]
   Loading fiasco
   Loading sigma0
   Loading moe
   find kernel info page...
   found kernel info page (via ELF) at 2000
Regions of list 'regions'
     [     1000,      197f] {      980} Kern   fiasco
     [     2000,     96fff] {    95000} Kern   fiasco
     [    97000,     970eb] {       ec} Root   mbi_rt
     [    e0000,     eba17] {     ba18} Sigma0 sigma0
     [    f0000,     f6177] {     6178} Sigma0 sigma0
     [   140000,    16d3ef] {    2d3f0} Root   moe
     [   170000,    18242b] {    1242c} Root   moe
     [  1000000,   100f4f7] {     f4f8} Boot   bootstrap
     [  1100000,   113bfff] {    3c000} Root   Module
   found kernel options (via ELF) at 3000
   Sigma0 config    ip:000e0100 sp:00000000
   Roottask config  ip:00140260 sp:00000000
   Starting kernel fiasco at 0000113c
Hello from Startup::stage2
FPU: Initialize
FPU0: Subarch: 1, Part: 10, Rev: 0, Var: 9, Impl: 41

KERNEL: Warning: Buddy::alloc: Size mismatch: 1c000 v 20000
SERIAL ESC: allocated IRQ 1 for serial uart
Not using serial hack in slow timer handler.
Welcome to L4/Fiasco.OC!
L4/Fiasco.OC microkernel on arm
Rev: 362fdae-dirty compiled with gcc 4.8.3 20140320 (prerelease) for 
Integrator    []
Build: #1 Wed Nov  1 12:16:10 CST 2017

Calibrating timer loop... done.
MDB: use page size: 20
MDB: use page size: 12
SIGMA0: Hello!
   KIP @ 2000
   allocated 4KB for maintenance structures
SIGMA0: Dump of all resource maps
RAM:------------------------
[0:0;fff]
[4:97000;97fff]
[0:98000;dffff]
[0:ec000;effff]
[0:f7000;13ffff]
[4:140000;16dfff]
[0:16e000;16ffff]
[4:170000;182fff]
[0:183000;10fffff]
[4:1100000;113bfff]
[0:113c000;effffff]
IOMEM:----------------------
[0:10000000;ffffffff]
MOE: Hello world
MOE: found 244588 KByte free memory
MOE: found RAM from 97000 to f000000
MOE: allocated 239 KByte for the page array @0x98000
MOE: virtual user address space [0-bfffffff]
MOE: rom name space cap -> [C:103000]
MOE: rwfs name space cap -> [C:105000]
   BOOTFS: [1100000-1121484] [C:107000] l4re
   BOOTFS: [1122000-113b598] [C:109000] hello
MOE: cmdline: moe --init=rom/hello
MOE: Starting: rom/hello
MOE: loading 'rom/hello'
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!


在 2017年10月31日 20:41, Matthias Lange 写道:
> Hi,
>
> this looks like an undefined instruction. Maybe the build and the
> emulated CPU model does not match? Have you tried changing the CPU model
> with the '-cpu" option?
>
> Best,
> Matthias.
>
>
> On 10/31/2017 09:24 AM, Leslie Zhai wrote:
>> Hi L4 hackers,
>>
>>
>> $ svn info
>> Path: .
>> Working Copy Root Path: /data/project/l4re
>> URL: https://svn.l4re.org/repos/oc/l4re/trunk
>> Relative URL: ^/trunk
>> Repository Root: https://svn.l4re.org/repos/oc/l4re
>> Repository UUID: d050ee49-bd90-4346-b210-929a50b99cfc
>> Revision: 75
>> Node Kind: directory
>> Schedule: normal
>> Last Changed Author: l4check
>> Last Changed Rev: 75
>> Last Changed Date: 2017-10-15 19:49:39 +0800 (Sun, 15 Oct 2017)
>>
>>
>> My Fiasco build config:
>>
>> #
>> # Automatically generated file; DO NOT EDIT.
>> # Fiasco configuration
>> #
>> CONFIG_HAS_FPU_OPTION=y
>> CONFIG_HAS_SERIAL_OPTION=y
>> CONFIG_HAS_JDB_GZIP_OPTION=y
>>
>> #
>> # Target configuration
>> #
>> # CONFIG_IA32 is not set
>> # CONFIG_AMD64 is not set
>> CONFIG_ARM=y
>> # CONFIG_MIPS is not set
>> CONFIG_PF_INTEGRATOR=y
>> # CONFIG_PF_REALVIEW is not set
>> # CONFIG_PF_SUNXI is not set
>> # CONFIG_PF_BCM283X is not set
>> # CONFIG_PF_SA1100 is not set
>> # CONFIG_PF_XSCALE is not set
>> # CONFIG_PF_ARMADA38X is not set
>> # CONFIG_PF_KIRKWOOD is not set
>> # CONFIG_PF_TEGRA is not set
>> # CONFIG_PF_LAYERSCAPE is not set
>> # CONFIG_PF_IMX is not set
>> # CONFIG_PF_RCAR3 is not set
>> # CONFIG_PF_EXYNOS is not set
>> # CONFIG_PF_S3C2410 is not set
>> # CONFIG_PF_OMAP is not set
>> # CONFIG_PF_ZYNQ is not set
>> CONFIG_BSP_NAME="integrator"
>> CONFIG_CAN_ARM_CPU_926=y
>> CONFIG_CAN_ARM_CPU_1176=y
>> CONFIG_ABI_VF=y
>> CONFIG_ARM_926=y
>> # CONFIG_ARM_1176 is not set
>> CONFIG_FPU=y
>> CONFIG_ARM_ALIGNMENT_CHECK=y
>> CONFIG_ARM_EM_STD=y
>> CONFIG_ARM_CPU_ERRATA=y
>>
>> #
>> # Kernel options
>> #
>> # CONFIG_CONTEXT_8K is not set
>> CONFIG_CONTEXT_4K=y
>> CONFIG_FINE_GRAINED_CPUTIME=y
>> CONFIG_SCHED_FIXED_PRIO=y
>> # CONFIG_SCHED_WFQ is not set
>> # CONFIG_SCHED_FP_WFQ is not set
>>
>> #
>> # Debugging
>> #
>> CONFIG_INLINE=y
>> # CONFIG_NDEBUG is not set
>> # CONFIG_NO_FRAME_PTR is not set
>> CONFIG_STACK_DEPTH=y
>> CONFIG_LIST_ALLOC_SANITY=y
>> CONFIG_SERIAL=y
>> CONFIG_JDB=y
>> CONFIG_JDB_LOGGING=y
>> CONFIG_JDB_GZIP=y
>> # CONFIG_JDB_ACCOUNTING is not set
>> # CONFIG_WARN_NONE is not set
>> # CONFIG_WARN_WARNING is not set
>> CONFIG_WARN_ANY=y
>>
>> #
>> # ARM debugging options
>> #
>> CONFIG_VMEM_ALLOC_TEST=y
>> CONFIG_DEBUG_KERNEL_PAGE_FAULTS=y
>>
>> #
>> # Compiling
>> #
>> CONFIG_CC="gcc"
>> CONFIG_CXX="g++"
>> CONFIG_HOST_CC="gcc"
>> CONFIG_HOST_CXX="g++"
>> CONFIG_MAINTAINER_MODE=y
>> CONFIG_LABEL=""
>> CONFIG_EXPERIMENTAL=y
>> CONFIG_PERF_CNT=y
>> CONFIG_BIT32=y
>> CONFIG_WARN_LEVEL=2
>> CONFIG_XARCH="arm"
>> CONFIG_ABI="vf"
>>
>>
>> My L4Re build config:
>>
>> # Automatically generated. Don't edit
>>
>> BID_COMPILER_TYPE=gcc
>> BUILD_SYSTEMS=arm_armv5te arm_armv5te-l4f
>> CONFIG_ARCH_ENABLE_STACK_PROTECTOR=y
>> CONFIG_BID_GCC_ENABLE_STACK_PROTECTOR=y
>> CONFIG_BID_GCC_STACK_PROTECTOR=y
>> CONFIG_BUILD_ABI="l4f"
>> CONFIG_BUILD_ABI_l4f=y
>> CONFIG_BUILD_ARCH="arm"
>> CONFIG_BUILD_ARCH_arm=y
>> CONFIG_CPU_ARM_ARMV5TE=y
>> CONFIG_CPU="armv5te"
>> CONFIG_CTAGS="ctags"
>> CONFIG_DROPS_INSTDIR="/path/to/l4re"
>> CONFIG_DROPS_STDDIR="/path/to/l4re"
>> CONFIG_ETAGS="etags"
>> CONFIG_LEX="flex"
>> CONFIG_MAKECONFS_ADD=""
>> CONFIG_YACC="yacc"
>> GCCDIR=/usr/lib/gcc/arm-linux-gnueabi/6.1.1
>> GCCFORTRANAVAIL=
>> GCC_HAS_ATOMICS=
>> GCCINCFIXEDPATH=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/include-fixed
>> GCCLIB_EH=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/libgcc_eh.a
>> GCCLIB_FILE_crtbegin.o=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/crtbegin.o
>> GCCLIB_FILE_crtbeginS.o=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/crtbeginS.o
>> GCCLIB_FILE_crtbeginT.o=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/crtbeginT.o
>> GCCLIB_FILE_crtend.o=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/crtend.o
>> GCCLIB_FILE_crtendS.o=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/crtendS.o
>> GCCLIB_HOST=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/libgcc.a
>> GCCLIB_S_SO=
>> GCCMAJORVERSION=6
>> GCCMINORVERSION=1
>> GCCNOSTACKPROTOPT=-fno-stack-protector
>> GCCPATCHLEVEL=1
>> GCCSTACKPROTALLOPT=-fstack-protector-all
>> GCCSTACKPROTOPT=-fstack-protector
>> GCCSYSLIBDIRS=-L/usr/lib/gcc/arm-linux-gnueabi/6.1.1/
>> -L/usr/lib/gcc/arm-linux-gnueabi/6.1.1/../../../../arm-linux-gnueabi/lib/arm-linux-gnueabi/6.1.1/
>> -L/usr/lib/gcc/arm-linux-gnueabi/6.1.1/../../../../arm-linux-gnueabi/lib/ -L/usr/arm-linux-gnu/sys-root/lib/arm-linux-gnueabi/6.1.1/
>> -L/usr/arm-linux-gnu/sys-root/lib/
>> -L/usr/arm-linux-gnu/sys-root/usr/lib/arm-linux-gnueabi/6.1.1/
>> -L/usr/arm-linux-gnu/sys-root/usr/lib/
>> GCCVERSION=6
>> HOST_SYSTEM=linux
>> INT_CPP_NAME=cc1
>> INT_CXX_NAME=cc1plus
>> INT_LD_NAME=arm-linux-gnu-ld
>> LD_EMULATION=armelf_linux_eabi
>> LD_GENDEP_PREFIX=LD_PRELOAD=libgendep.so
>> LD_LIBRARY_PATH=/data/project/xiangzhai/l4re/l4/build-arm/tool/gendep/64:/data/project/xiangzhai/l4re/l4/build-arm/tool/gendep/32
>>
>> LD_HAS_HASH_STYLE_OPTION=n
>> LDVERSION=227-3
>> include /data/project/xiangzhai/l4re/l4/build-arm/.config.indep
>> include /data/project/xiangzhai/l4re/l4/build-arm/.config.platform
>>
>>
>> Booting L4Re with qemu-system-arm:
>>
>> $ make qemu CROSS_COMPILE=arm-linux-gnu- E=hello
>> MODULE_SEARCH_PATH=/data/project/xiangzhai/l4re/kernel/fiasco/build-arm
>> make[1]: Entering directory '/data/project/xiangzhai/l4re/l4'
>>    Image size(s) in bytes:
>>              bootstrap_hello.elf:  1279488
>>    Start address: 0x1000000
>>    --> Build-Nr: 6
>> QEMU-cmd: qemu-system-arm -kernel
>> /data/project/xiangzhai/l4re/l4/build-arm/images/bootstrap.elf -serial
>> stdio -M integratorcp -m 256
>>
>> L4 Bootstrapper
>>    Build: #6 Tue Oct 31 15:50:55 CST 2017, 6.1.1 20160621 (Red Hat Cross
>> 6.1.1-2)
>>    Scanning up to 256 MB RAM, starting at offset 32MB
>>    Memory size is 256MB (00000000 - 0fffffff)
>>    RAM: 0000000000000000 - 000000000fffffff: 262144kB
>>    Total RAM: 256MB
>>    Scanning fiasco
>>    Scanning sigma0
>>    Scanning moe
>>    Moving up to 5 modules behind 1100000
>>    moving module 02 { 10e7000-11284af } -> { 11d8000-12194af } [267440]
>>    moving module 01 { 10d5000-10e6343 } -> { 11c6000-11d7343 } [70468]
>>    moving module 00 { 1053000-10d4edb } -> { 1144000-11c5edb } [532188]
>>    moving module 04 { 1031000-1052697 } -> { 1122000-1143697 } [136856]
>>    moving module 03 { 100f000-1030473 } -> { 1100000-1121473 } [136308]
>>    Loading fiasco
>>    Loading sigma0
>>    Loading moe
>>    find kernel info page...
>>    found kernel info page (via ELF) at 2000
>> Regions of list 'regions'
>>      [     1000,      193f] {      940} Kern   fiasco
>>      [     2000,     8efff] {    8d000} Kern   fiasco
>>      [    8f000,     8f0eb] {       ec} Root   mbi_rt
>>      [    e0000,     eb16b] {     b16c} Sigma0 sigma0
>>      [    f0000,     f517b] {     517c} Sigma0 sigma0
>>      [   140000,    1711df] {    311e0} Root   moe
>>      [   180000,    18c4eb] {     c4ec} Root   moe
>>      [  1000000,   100e4f7] {     e4f8} Boot   bootstrap
>>      [  1100000,   1143fff] {    44000} Root   Module
>>    found kernel options (via ELF) at 3000
>>    Sigma0 config    ip:000e0100 sp:00000000
>>    Roottask config  ip:00140254 sp:00000000
>>    Starting kernel fiasco at 00001118
>> Hello from Startup::stage2
>> FPU: Initialize
>> FPU0: Subarch: 1, Part: 10, Rev: 0, Var: 9, Impl: 41
>>
>> KERNEL: Warning: Buddy::alloc: Size mismatch: 1c000 v 20000
>> SERIAL ESC: allocated IRQ 1 for serial uart
>> Not using serial hack in slow timer handler.
>> Welcome to L4/Fiasco.OC!
>> L4/Fiasco.OC microkernel on arm
>> Rev: 362fdae-dirty compiled with gcc 6.1.1 20160621 (Red Hat Cross
>> 6.1.1-2) for Integrator    []
>> Build: #2 Tue Oct 31 15:39:15 CST 2017
>>
>> Calibrating timer loop... done.
>> MDB: use page size: 20
>> MDB: use page size: 12
>> EXCEPTION: (00) Why undef insn? pfa=00002000, error=00000000 psr=20000110
>> R[0]: 00002000 00000000 00000000 000e01d0  000f0004 00002000 000f0030
>> 00000000
>> R[8]: 00000000 00000000 00000000 000f281c  000f2808 00000000 00000000
>> 000e01d4
>>
>> KERNEL: Warning: Sigma0 raised an exception --> HALT
>> Panic: ...
>> ---------------------------------------------------------------------
>>      CPU 0 [f001519c]: abort
>> jdb:
>>
>>
>> Then how to use addr2line to find the root cause? please give me some
>> hint, thanks a lot!
>>
>> $ arm-linux-gnu-addr2line -p -i -e bin/arm_armv5te/bootstrap.elf -a
>> 00002000
>>
>>
>> Because 0001-Fix-invalid-initialization-in-new.patch has been already
>> merged into svn trunk, so this
>> http://os.inf.tu-dresden.de/pipermail/l4-hackers/2017/008111.html might
>> not fix my issue, but as Sarah mentioned "looks like a compiler issue"?
>>
>> $ arm-linux-gnu-gcc -v
>> Using built-in specs.
>> COLLECT_GCC=arm-linux-gnu-gcc
>> COLLECT_LTO_WRAPPER=/usr/libexec/gcc/arm-linux-gnueabi/6.1.1/lto-wrapper
>> Target: arm-linux-gnueabi
>> Configured with: ../gcc-6.1.1-20160621/configure --bindir=/usr/bin
>> --build=x86_64-redhat-linux-gnu --datadir=/usr/share
>> --disable-decimal-float --disable-dependency-tracking --disable-gold
>> --disable-libgcj --disable-libgomp --disable-libmpx
>> --disable-libquadmath --disable-libssp --disable-libunwind-exceptions
>> --disable-shared --disable-silent-rules --disable-sjlj-exceptions
>> --disable-threads --with-ld=/usr/bin/arm-linux-gnu-ld
>> --enable-__cxa_atexit --enable-checking=release
>> --enable-gnu-unique-object --enable-initfini-array
>> --enable-languages=c,c++ --enable-linker-build-id --enable-lto
>> --enable-nls --enable-obsolete --enable-plugin --enable-targets=all
>> --exec-prefix=/usr --host=x86_64-redhat-linux-gnu
>> --includedir=/usr/include --infodir=/usr/share/info
>> --libexecdir=/usr/libexec --localstatedir=/var --mandir=/usr/share/man
>> --prefix=/usr --program-prefix=arm-linux-gnu- --sbindir=/usr/sbin
>> --sharedstatedir=/var/lib --sysconfdir=/etc --target=arm-linux-gnueabi
>> --with-bugurl=http://bugzilla.redhat.com/bugzilla/ --with-isl
>> --with-newlib --with-plugin-ld=/usr/bin/arm-linux-gnu-ld
>> --with-sysroot=/usr/arm-linux-gnu/sys-root --with-system-libunwind
>> --with-system-zlib --without-headers --with-tune=cortex-a8
>> --with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16
>> --with-abi=aapcs-linux --enable-gnu-indirect-function
>> --with-linker-hash-style=gnu
>> Thread model: single
>> gcc version 6.1.1 20160621 (Red Hat Cross 6.1.1-2) (GCC)

-- 
Regards,
Leslie Zhai - https://reviews.llvm.org/p/xiangzhai/







More information about the l4-hackers mailing list