if(CONFIG_BUILD_OUTPUT_ADJUST_LMA)
math(EXPR adjustment "${CONFIG_BUILD_OUTPUT_ADJUST_LMA}" OUTPUT_FORMAT DECIMAL)
# Абсолютно плоский однострочный Python-скрипт без переносов строк и двоеточий
set(PY_LMA_FILTER "import sys, subprocess; elf=sys.argv[1]; adj=sys.argv[2]; bin_obj=sys.argv[3]; res=subprocess.run(['arm-zephyr-eabi-readelf', '-S', elf], capture_output=True, text=True); lines=[l.split() for l in res.stdout.splitlines() if len(l.split())>=4]; secs=[p[1].replace('[','').replace(']','') for p in lines if p[2].startswith('8') and 'bss' not in p[1] and 'noinit' not in p[1]]; args=[]; [args.extend(['--change-section-lma', f'{s}+{adj}']) for s in secs]; subprocess.run([bin_obj] + args + [elf, elf], check=True) if args else sys.exit(0)")
list(APPEND
post_build_commands
COMMAND ${PYTHON_EXECUTABLE} -c "${PY_LMA_FILTER}"
${PROJECT_BINARY_DIR}/${KERNEL_ELF_NAME}
${adjustment}
$<TARGET_PROPERTY:bintools,elfconvert_command>
)
endif()