Commit Graph

12 Commits

Author SHA1 Message Date
Robin Kastberg
1601a7d696 iar: linker_script: zero-init BSS
CONFIG_IAR_DATA_INIT did inadvertently not initialize BSS.

Signed-off-by: Robin Kastberg <robin.kastberg@iar.com>
2025-06-30 15:18:30 -05:00
Robin Kastberg
e572e8f491 iar: linker_script: fix bug with alphabetical order
Having alphabetical order on an init block causes a linker error.
So it is one of the things replaced when translating a block to its
corresponding init block.
The recent changes in ff8b24b6bd caused
iterable sections having ONLY alphabetical order as an attribute,
triggering a bug in this regexp.

Signed-off-by: Robin Kastberg <robin.kastberg@iar.com>
2025-06-25 15:53:01 -10:00
Björn Bergman
a9ed11c3f6 toolchain: iar: Implement MIN_SIZE and MAX_SIZE for IAR linker
Implement the MIN_SIZE and MAX_SIZE options to
zephyr_linker_section_configurefor the IAR icf linker file
generator

Signed-off-by: Björn Bergman <bjorn.bergman@iar.com>
2025-06-18 09:10:46 -04:00
Björn Bergman
4b3cd02e6a toolchain: iar: Put KEEP on init-blocks
To circumvent peculiarities in the linker, the _init blocks
(as well as their content) needs to be tagged with keep.

Signed-off-by: Björn Bergman <bjorn.bergman@iar.com>
2025-06-18 11:20:58 +01:00
Björn Bergman
dff0dbaf34 toolchain: iar: use zephyr_linker_generate_linker_settings_file() to ilink
Use the standard function to generate the input file to the linker
generator.

Signed-off-by: Björn Bergman <bjorn.bergman@iar.com>
2025-06-18 11:20:35 +01:00
Robin Kastberg
0fc490956b iar: linker: Do --whole_archive linking
Instead of getting names of all object files, link
against libraries using `--whole_archive`
Signed-off-by: Robin Kastberg <robin.kastberg@iar.com>
2025-06-09 14:37:05 -07:00
Björn Bergman
01d3316810 linker generator: Handle .last_section
Add  cmake linker generator things for .last_section.

Follow up to #88970. Fixes bug #89719, for gcc/ld & iar

Signed-off-by: Björn Bergman <bjorn.bergman@iar.com>
2025-05-26 14:17:21 +02:00
Robin Kastberg
5a92e46c92 iar: toolchain: Implement IAR static init routine
This will implement a way of doing static initialization
the "IAR" way. This is done by calling __iar_data_init3
which handles all static initialization that is mentioned
in the linker file "initialize by copy".

Signed-off-by: Robin Kastberg <robin.kastberg@iar.com>
2025-05-12 19:18:56 +02:00
Björn Bergman
1e1f94405f toolchain: iar: Fix sections placed at address
zephyr_linker_section(... ADDRESS 0xF00) was broken. The fixed
placement was using their parent group address.

This also removes some dead code in config_file_script.cmake that
helped confuse what is going on with fixed sections.

Signed-off-by: Björn Bergman <bjorn.bergman@iar.com>
2025-04-15 11:25:07 +02:00
Josh DeWitt
0f46359cbf linker: Add underscore between the init level and priority
Ensure the priority is surrounded by underscores for clarity. This makes
sections show up as
z_init_PRE_KERNEL_1_0_0_ instead of
z_init_PRE_KERNEL_10_0_

Signed-off-by: Josh DeWitt <josh.dewitt@garmin.com>
2025-03-19 18:53:22 -04:00
Björn Bergman
f70e72ae69 toolchain: iar: Fixes for iar linker generator
I have found a number of problems that shows up for CONFIG_USERSPACE,
but may ake effect even without it.

 * Output the x_init block even if x dont have any content. This is
   rather common if you have sections guarded with PASS.
 * Put KEEP on init-blocks. To circumvent peculiarities in ilink,
   the _init blocks (as well as their content) needs to be tagged
   with keep.
 * Handle noinit linker sections. zephyr_linker_section( NOINIT )
   has been ignored so far. This change fixes that and puts it as
   do not initialize { }

Signed-off-by: Björn Bergman <bjorn.bergman@iar.com>
2025-02-26 15:06:15 +01:00
Robin Kastberg
9ab06ec667 toolchain: iar: Add experimental IAR support
This adds experimental support for the IAR toolchain.

Signed-off-by: Robin Kastberg <robin.kastberg@iar.com>
2025-02-14 19:12:44 +00:00