libc: exclude arm_initfini.c

This compilation unit contains a global constructor, which violates our
assumption that the libc is free of global constructors on ARMv7.
Specifically, the graphical terminal fails with the following message:

[init -> terminal] Error: Component::construct() returned without executing
                          pending static constructors (fix by calling
                          Genode::Env::exec_static_constructors())
[init -> terminal] Error: Uncaught exception of type 'Linker::Fatal'

In this case, the libc-less terminal uses the VFS. The VFS mounts the
ttf VFS plugin. The ttf VFS plugin depends on the libc.

The compilation unit 'arm_initfini.c' can safely be excluded because it
merely initializes the global '_libc_arm_fpu_present' variable, which
is not used by the current version of our libc/libm.

Fixes #4080
This commit is contained in:
Norman Feske 2021-04-19 14:48:39 +02:00
parent efbed6f7bf
commit d73eaaa14c

View File

@ -4,7 +4,7 @@ LIBC_GEN_ARM_DIR = $(LIBC_DIR)/lib/libc/arm/gen
#FILTER_OUT_S += rfork_thread.S sigsetjmp.S setjmp.S _setjmp.S divsi3.S
FILTER_OUT_S += rfork_thread.S divsi3.S setjmp.S _setjmp.S
FILTER_OUT_C += _set_tp.c fabs.c frexp.c modf.c
FILTER_OUT_C += _set_tp.c fabs.c frexp.c modf.c arm_initfini.c
INC_DIR += $(LIBC_DIR)/lib/libc/arm/softfloat
INC_DIR += $(LIBC_DIR)/lib/libc/softfloat