mgmt: mcumgr: make mcumgr handler variable const #100547
Open
+1
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.



Similar story to #100541
When using modern versions (e.g. 13.2) of the gcc-arm-none-eabi toolchain the following linker warning is emitted when building the mcumgr example:
This can be reproduced with the following commands:
Taking a quick look at the program headers I found the following:
The linker is unhappy that our ROM region (code, rodata, etc) has the W (write) flag set when it should only be R (read) and E (execute).
Looking further to figure out why it's getting the W (write) flag:
From this we see that
mcumgr_handler_areahas the WRITE flag. Looking further in to the zephyr.map file I found the exact variables being put in this section:So ultimately the issue boils down to the fact we are putting a non-const (writeable!) data in a ROM region (linker script snippet for mcumgr: https://github.com/zephyrproject-rtos/zephyr/blob/main/include/zephyr/linker/common-rom/common-rom-misc.ld#L30). With this change the warning is no longer present and the program headers look correct:
Additionally, this
constkeyword requirement forSTRUCT_SECTION_ITERABLEin ROM is documented here: https://github.com/zephyrproject-rtos/zephyr/blob/main/include/zephyr/sys/iterable_sections.h#L213