6.8 ld and MSP430

For the MSP430 it is possible to select the MPU architecture. The flag ‘-m [mpu type]’ will select an appropriate linker script for selected MPU type. (To get a list of known MPUs just pass ‘-m help’ option to the linker).

The linker will recognize some extra sections which are MSP430 specific:

.vectors

Defines a portion of ROM where interrupt vectors located.

.bootloader

Defines the bootloader portion of the ROM (if applicable). Any code in this section will be uploaded to the MPU.

.infomem

Defines an information memory section (if applicable). Any code in this section will be uploaded to the MPU.

.infomemnobits

This is the same as the ‘.infomem’ section except that any code in this section will not be uploaded to the MPU.

.noinit

Denotes a portion of RAM located above ‘.bss’ section.

The last two sections are used by gcc.

--code-region=[either,lower,upper,none]

This will transform .text* sections to [either,lower,upper].text* sections. The argument passed to GCC for -mcode-region is propagated to the linker using this option.

--data-region=[either,lower,upper,none]

This will transform .data*, .bss* and .rodata* sections to [either,lower,upper].[data,bss,rodata]* sections. The argument passed to GCC for -mdata-region is propagated to the linker using this option.

--disable-sec-transformation

Prevent the transformation of sections as specified by the --code-region and --data-region options. This is useful if you are compiling and linking using a single call to the GCC wrapper, and want to compile the source files using -m[code,data]-region but not transform the sections for prebuilt libraries and objects.