mirror of
https://github.com/apache/nuttx.git
synced 2026-08-15 01:13:29 +00:00
arch/sim: add custom data section support
The link script of NuttX Simulator is generated through compilation
options. This PR will support configure special data sections in
kconfig to meet the support of 3rd party applications.
we need to follow the syntax of linker script. In 3rd-party applications, some data will be labeled as section:
| a.c:
| struct task_s a __attribute__((section(".data.custom.taska")));
| b.c:
| struct task_s b __attribute__((section(".data.custom.taskb")));
Data of the same type struct can be placed in a fixed location to reduce the overhead caused by searching:
| .data :
| {
| _custom_data_table_start = .;
| KEEP(*(.data.custom.*))
| _custom_data_table_end = .;
| }
Such section declare can be configured via Kconfig in the PR:
| CONFIG_SIM_CUSTOM_DATA_SECTION=" .data : { _custom_data_table_start = .; KEEP(*(.data.custom.*)) _custom_data_table_end = .; } "
Signed-off-by: chao an <anchao@lixiang.com>
This commit is contained in:
parent
b008653ac0
commit
9915b80e30
3 changed files with 13 additions and 1 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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),\
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue