-OVERRUN_FETCH


This option prevents reading of uninitialized areas due to overrun fetch.

[Specification format]

-OVERRUN_FETCH

 

-

Interpretation when omitted

None

[Detailed description]

-

When a 128-byte or larger vacant area exists immediately after a ROM section, NOP instructions for 128 bytes are inserted in the vacant area because the uninitialized code flash area may be prefetched when that ROM section is read from.

Note

The amount of 128 bytes is a rough indication for the size independent of the prefetch size of each microcontroller. If the vacant area between a ROM section and its subsequent section is less than 128 bytes, NOP instructions are not inserted because an uninitialized area will not exist due to the fact that the unit for programming the code flash area is 256 bytes.

 

NOP instructions are inserted according to the allocation specified by the -start option and output with the following section name obtained from the name of the section immediately before the inserted NOP instructions.

$sss_fetch??

sss: Name of the section immediately before the inserted NOP instructions

??: 0199

(1)

Insert between sections

-

NOP instructions are inserted when a 128-byte or larger vacant area exists between two ROM sections (executable program sections or sections (except program sections) allocated to the ROM area) or between a ROM section and a RAM section (a section allocated to the RAM area).

-

For insertion between a ROM section and RAM section, NOP instructions are inserted only when the RAM section is allocated to larger addresses than the ROM section addresses (When the RAM section addresses are smaller than the ROM section addresses, NOP instructions are not inserted between them).

(2)

Insert immediately after the end section

-

NOP instructions are inserted immediately after the end ROM section.

-

When an address range is specified by the -cpu option, if the vacant area between the end address of the end section and the end address of the specified range is smaller than 128 bytes, NOP instructions will not be inserted.

-

If the vacant area between the end address of the end section and an 8-Mbyte address boundary is smaller than 128 bytes, NOP instructions will not be inserted.

[Example of use]

-

To prevent reading of vacant areas due to overrun fetch, describe as:

>rlink a.obj b.obj -overrun_fetch

[Remark]

-

When no address range is specified by the -cpu option and the end section is a ROM section, NOP instructions are always inserted immediately after the end ROM section.

-

If a load module file is input, this option will be invalid.

-

If the -form={object|relocate|library} option is specified, this option will be invalid.

-

When overlaid sections are specified by the -start option, NOP instructions are not inserted for a string of sections specified as being overlaid by the -start option.

Example 1.

When option -start=A,B,E/400,C,D:F:G/8000 is specified, NOP instructions are not inserted between sections C, D, F, and G and after the end code section because overlaid sections are specified.

Example 2.

When a 128-byte or larger vacant area exists immediately after a section with size 0, NOP instructions are not inserted.

Example 3.

NOP instructions are inserted when a 128-byte or larger vacant area including a section with size 0 exists immediately after a ROM section.