Example 13. The UNION Statement

SECTIONS { .text: load = SLOW_MEM UNION: run = FAST_MEM { .bss:part1: { file1.c.obj(.bss) } .bss:part2: { file2.c.obj(.bss) } } .bss:part3: run = FAST_MEM { globals.c.obj(.bss) } }

Allocation of a section as part of a union affects only its run address. Under no circumstances can sections be overlaid for loading. If an initialized section is a union member (an initialized section, such as .text, has raw data), its load allocation must be separately specified. See Example 14. (There is an exception to this rule when combining an initialized section with uninitialized sections; see Section 8.5.7.3.)