From fceba08e0e4b64dde6b6a0df80261a221ff4a38d Mon Sep 17 00:00:00 2001 From: liwenxiang1 Date: Sun, 17 Aug 2025 15:22:30 +0800 Subject: [PATCH] arch/x64:Fix the abnormal backtrace display issue Need to wait until nuttx and allsymbols linking is completed before generating nuttx.mb1. Signed-off-by: liwenxiang1 --- arch/x86_64/src/cmake/platform.cmake | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/arch/x86_64/src/cmake/platform.cmake b/arch/x86_64/src/cmake/platform.cmake index 30b1047094b..705f0613edd 100644 --- a/arch/x86_64/src/cmake/platform.cmake +++ b/arch/x86_64/src/cmake/platform.cmake @@ -84,3 +84,34 @@ endif() nuttx_add_extra_library(${EXTRA_LIB}) set(PREPROCESS ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} -E -P -x c) + +if(CONFIG_ARCH_MULTIBOOT1) + message(STATUS "Generating: nuttx.mb1 in ELF32/multiboot1") + if(CONFIG_ALLSYMS) + set(FINAL_NUTTX_ELF "${CMAKE_BINARY_DIR}/final_nuttx") + else() + set(FINAL_NUTTX_ELF "${CMAKE_BINARY_DIR}/nuttx") + endif() + set(NUTTX_ELF "${CMAKE_BINARY_DIR}/nuttx") + set(NUTTX_BIN "${NUTTX_ELF}.bin") + set(NUTTX_REALMODE_BIN "${NUTTX_ELF}_realmode.bin") + set(NUTTX_MB1 "${NUTTX_ELF}.mb1") + add_custom_command( + OUTPUT ${NUTTX_BIN} ${NUTTX_REALMODE_BIN} + COMMAND ${CMAKE_OBJCOPY} -R .realmode -R .note.* -O binary + ${FINAL_NUTTX_ELF} ${NUTTX_BIN} + COMMAND ${CMAKE_OBJCOPY} -j .realmode -O binary ${FINAL_NUTTX_ELF} + ${NUTTX_REALMODE_BIN} + DEPENDS ${FINAL_NUTTX_ELF} + COMMENT "Generating binary and realmode segments from nuttx ELF") + add_custom_command( + OUTPUT ${NUTTX_MB1} + COMMAND + ${CMAKE_C_COMPILER} -m32 -no-pie -nostdlib -DNUTTX_BIN='"${NUTTX_BIN}"' + -DNUTTX_REALMODE_BIN='"${NUTTX_REALMODE_BIN}"' + ${CMAKE_SOURCE_DIR}/arch/x86_64/src/common/multiboot1.S -T + ${CMAKE_SOURCE_DIR}/arch/x86_64/src/common/multiboot1.ld -o ${NUTTX_MB1} + DEPENDS ${NUTTX_BIN} ${NUTTX_REALMODE_BIN} + COMMENT "Building nuttx.mb1 multiboot1 image") + add_custom_target(multiboot1 ALL DEPENDS ${NUTTX_MB1}) +endif()