immediate segmentation fault with LLVM/Clang 9
David Demelier
markand at malikania.fr
Fri Oct 25 07:54:52 UTC 2019
Hello,
I don't know where is the appropriate place to ask. I've upgraded my
toolchain to LLVM 9 on my Clang based Linux distribution and everything
built and ran fine except... busybox.
I suspect busybox is built with some incompatible flags because it
immediately segfaults at startup of an applet (not all though). It works
like a charm with gcc though.
Built with :
# make CC=clang HOSTCC=clang CROSS_COMPILE=llvm-
The .config is the default. I've only added CONFIG_DEBUG=y and
CONFIG_STATIC=y. But applets crash even without those.
FWIW, the following warnings appear as well while building:
clang-9: warning: optimization flag '-finline-limit=0' is not supported
[-Wignored-optimization-argument]
clang-9: warning: optimization flag '-falign-jumps=1' is not supported
[-Wignored-optimization-argument]
clang-9: warning: optimization flag '-falign-labels=1' is not supported
[-Wignored-optimization-argument]
clang-9: warning: optimization flag '-falign-loops=1' is not supported
[-Wignored-optimization-argument]
clang-9: warning: argument unused during compilation: '-static-libgcc'
[-Wunused-command-line-argument]
I can debug but without many useful information:
(gdb) run sh
Starting program: /src/vanilla/core/busybox/busybox-1.30.1/busybox sh
Program received signal SIGSEGV, Segmentation fault.
0x00000000002ced34 in ash_main (argc=1, argv=0x7fffffffec80) at
shell/ash.c:14155
14155 INIT_G_misc();
(gdb) bt
#0 0x00000000002ced34 in ash_main (argc=1, argv=0x7fffffffec80) at
shell/ash.c:14155
#1 0x000000000022e3ea in run_applet_no_and_exit (applet_no=289,
name=<optimized out>, argv=0x7fffffffec80) at libbb/appletlib.c:996
#2 0x000000000022e9b5 in run_applet_and_exit (name=0x7fffffffee96 "sh",
argv=0x7fffffffec80) at libbb/appletlib.c:1014
#3 0x000000000022ed51 in busybox_main (argv=0x7fffffffec80) at
libbb/appletlib.c:957
#4 0x000000000022e9bd in run_applet_and_exit (name=0x7fffffffee8e
"busybox", argv=0x7fffffffec78) at libbb/appletlib.c:1007
#5 0x000000000022e5cb in main (argc=<optimized out>,
argv=0x7fffffffec78) at libbb/appletlib.c:1122
The trace is not meaningful though.
If I erase all CFLAGS using:
# make CC=clang HOSTCC=clang CROSS_COMPILE=llvm- CFLAGS=""
It works fine so I think there are too much options that are incompatible?
--
David
More information about the busybox
mailing list