Ich habe benutzerdefinierte Hardware, auf der eingebettetes Linux (OpenWrt) wie am Schnürchen läuft. CPU – ist IMX6ULL (ArmV7), daher wird es von Jlink unterstützt, um über die JTAG-Schnittstelle zu debuggen. Beim Starten des GDB-Servers und schrittweisen Debuggen des Linux-Kernels werden viele optimized out
Meldungen angezeigt, da der Kernel mit KBUILD_CFLAGS += -O2 -fno-reorder-blocks -fno-tree-ch $(EXTRA_OPTIMIZATION)
Flag kompiliert wurde. Also versuche ich, ihn damit zu kompilieren, -O0
was mir folgende Option bietet:
$ make -j64 V=s all
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CC scripts/mod/empty.o
....
AR built-in.o
LD vmlinux.o
MODPOST vmlinux.o
WARNING: modpost: Found 4 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
arm-openwrt-linux-muslgnueabi-ld: arch/arm/kernel/setup.o: in function `setup_arch':
/opt/eclipse/imx6ull-openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-imx6ull_cortexa7/linux-4.14.199/arch/arm/kernel/setup.c:1134: undefined reference to `psci_smp_ops'
arm-openwrt-linux-muslgnueabi-ld: /opt/eclipse/imx6ull-openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-imx6ull_cortexa7/linux-4.14.199/arch/arm/kernel/setup.c:1134: undefined reference to `psci_smp_ops'
arm-openwrt-linux-muslgnueabi-ld: kernel/panic.o: in function `__xchg':
/opt/eclipse/imx6ull-openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-imx6ull_cortexa7/linux-4.14.199/./arch/arm/include/asm/cmpxchg.h:110: undefined reference to `__bad_xchg'
arm-openwrt-linux-muslgnueabi-ld: kernel/exit.o: in function `__xchg':
Geprüft aufWARNING: modpost: Found x section mismatch(es).
Hier. Es scheint, dass die resultierende Binärdatei mehr Platz benötigt als durch einige Einstellungen konfiguriert. Die vmlinux
mit der Option erstellte Größe -O2
ist 39Mb
. Durch die Verwendung -O1
erhalte ich 37Mb
ein Bild, daher hoffe ich, dass in meinem DDR3-RAM (128 MB) in Fuß genügend Platz für ein noch größeres, mit -O0
der Konfiguration kompiliertes Bild ist. Daher frage ich mich, wie ich mehr Platz für Abschnitte schaffen kann. Kann mir bitte jemand einen Ort zeigen, an dem ich das tun kann? Ich habe nur begrenzte Kenntnisse über den Linux-Kernel und konnte daher kein dafür verwendetes Linker-Skript finden.