kernel: generate placeholders for kobj tables before final build
Due to the use of gperf to generate hash table for kobjects, the addresses of these kobjects cannot change during the last few phases of linking (especially between zephyr_prebuilt.elf and zephyr.elf). Because of this, the gperf generated data needs to be placed at the end of memory to avoid pushing symbols around in memory. This prevents moving these generated blocks to earlier sections, for example, pinned data section needed for demand paging. So create placeholders for use in intermediate linking to reserve space for these generated blocks. Due to uncertainty on the size of these blocks, more space is being reserved which could result in wasted space. Though, this retains the use of hash table for faster lookup. Signed-off-by: Daniel Leung <daniel.leung@intel.com>
This commit is contained in:
parent
317dcd908f
commit
1117169980
19 changed files with 488 additions and 97 deletions
|
@ -188,7 +188,7 @@ SECTIONS {
|
|||
__data_rom_start = LOADADDR(_DATA_SECTION_NAME);
|
||||
|
||||
#include <linker/common-ram.ld>
|
||||
#include <linker/kobject.ld>
|
||||
#include <linker/kobject-data.ld>
|
||||
|
||||
#ifdef __MWDT_LINKER_CMD__
|
||||
/* TODO: add mwdt specific RAM C++ sections */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue