diff --git a/CMakeLists.txt b/CMakeLists.txt index c71f30fa0a6..b152fe01d2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -695,7 +695,9 @@ else() COMMAND echo ARGS '__init_array_start = .\; __init_array_end = .\; __fini_array_start = .\; __fini_array_end = .\;' - >> nuttx.ld) + >> nuttx.ld + COMMAND sed -i '/\\.data *:/i " ${CONFIG_SIM_CUSTOM_DATA_SECTION} " ' + nuttx.ld) endif() # conflicting symbols to rename diff --git a/arch/sim/Kconfig b/arch/sim/Kconfig index 29198010102..2be924136e5 100644 --- a/arch/sim/Kconfig +++ b/arch/sim/Kconfig @@ -794,4 +794,11 @@ config SIM_USB_PRIO endif +config SIM_CUSTOM_DATA_SECTION + string "Custom data section name for Simulator" + default "" + ---help--- + Custom data section name for Simulator to allow + developer to define special data sections. + endif # ARCH_SIM diff --git a/arch/sim/src/Makefile b/arch/sim/src/Makefile index 60cf7b8a4ea..d19c4b06dcb 100644 --- a/arch/sim/src/Makefile +++ b/arch/sim/src/Makefile @@ -414,6 +414,9 @@ ifeq ($(CONFIG_MM_KASAN_GLOBAL),y) .kasan.global : {KEEP(*(.data..LASAN0)) KEEP (*(.data.rel.local..LASAN0)) }\n \ .interp : {*(.interp)}/g' nuttx.ld endif +ifneq ($(CONFIG_SIM_CUSTOM_DATA_SECTION),"") + $(Q) sed -i '/\.data *:/i $(subst ",, $(CONFIG_SIM_CUSTOM_DATA_SECTION))' nuttx.ld +endif ifeq ($(CONFIG_ALLSYMS)$(CONFIG_MM_KASAN_GLOBAL),) $(if $(CONFIG_HAVE_CXX),\ $(Q) "$(CXX)" $(CFLAGS) $(LDFLAGS) -o $(TOPDIR)/$@ $(HEADOBJ) nuttx.rel $(HOSTOBJS) $(STDLIBS),\