Загрузка данных


if(CONFIG_BUILD_OUTPUT_ADJUST_LMA)
  math(EXPR adjustment "${CONFIG_BUILD_OUTPUT_ADJUST_LMA}" OUTPUT_FORMAT DECIMAL)
  
  # Компактный однострочный Python-скрипт (разделен через ';'), безопасный для Ninja
  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); lma_args=[]; lines=res.stdout.splitlines();\nfor l in lines:\n    p=l.split()\n    if len(p)>=4 and p[3].startswith('8'):\n        sec=p[1].replace('[','').replace(']','')\n        if 'bss' not in sec and 'noinit' not in sec:\n            lma_args.extend(['--change-section-lma', f'{sec}+{adj}'])\nif lma_args: subprocess.run([bin_obj] + lma_args + [elf, elf], check=True)")

  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()