Migration Steps
Review linker scripts for exact user-defined section matches
Search the linker script for patterns that reference only an exact input section name, for example:
*(.start)
*(.my_code)
*(.my_data)
KEEP(*(.init_code))
These patterns may no longer match the generated subsection names emitted by TriCore v11.0.0.
Replace exact matches with wildcard patterns
Update affected linker script entries to also match generated subsections.
For the iLLD startup case, change:
.start_tc0 (LCF_STARTPTR_NC_CPU0) : { KEEP (*(.start)); } > prram0_nc
to:
.start_tc0 (LCF_STARTPTR_NC_CPU0) : { KEEP (*(.start*)); } > prram0_nc
Alternatively, if a more restrictive pattern is desired, use:
.start_tc0 (LCF_STARTPTR_NC_CPU0) : { KEEP (*(.start .start.*)); } > prram0_nc
Using this pattern is recommended because it strictly matches the .start input section. If the code includes other sections — like .start1 or .start_application — this pattern won’t match them.
Apply the same update to all similar linker script sections
Review all custom code and data sections used by the application, MCAL, iLLD, bootloader, or safety libraries.
For example, change patterns like:
*(.my_code)
*(.my_data)
KEEP(*(.my_init))
to wildcard-capable forms such as:
*(.my_code*)
*(.my_data*)
KEEP(*(.my_init*))
or, more selectively:
*(.my_code .my_code.*)
*(.my_data .my_data.*)
KEEP(*(.my_init .my_init.*))
The second form is usually safer if there is a risk that .my_code* could unintentionally match unrelated sections.
Pay special attention to startup and reset sections
Startup sections are critical because missing startup code may prevent the application from booting.
At minimum, verify all linker script sections related to:
.start
.reset
.trap
.init
.startup
and any project-specific startup or boot sections.
For iLLD-based projects, ensure that the section containing _START is correctly matched and placed at the expected address.
Rebuild and inspect the linker map file
After updating the linker script, rebuild the project and check the linker map file.
Confirm that the expected input sections are included in the intended output sections.
For example, verify that:
.start._START
is mapped into:
.start_tc0
Also confirm that the output startup section is not empty.
No change is required if suitable wildcards are already used
Projects that already use wildcard patterns in their linker scripts may not require any modification.
For example, these patterns are generally compatible with the TriCore v11.0.0 behavior:
*(.text .text.*)
*(.data .data.*)
*(.bss .bss.*)
*(.my_section .my_section.*)
KEEP (*(.start .start.*))
The migration is only required where the linker script uses exact input section names for user-defined sections and therefore does not match the new suffixed subsection names.