Linux-Kernel kann zu Debugzwecken nicht mit der Option -Og/-O0 kompiliert werden

Linux-Kernel kann zu Debugzwecken nicht mit der Option -Og/-O0 kompiliert werden

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 outMeldungen 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, -O0was 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 vmlinuxmit der Option erstellte Größe -O2ist 39Mb. Durch die Verwendung -O1erhalte ich 37Mbein Bild, daher hoffe ich, dass in meinem DDR3-RAM (128 MB) in Fuß genügend Platz für ein noch größeres, mit -O0der 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.

verwandte Informationen