#### 3.6.4.5 Input Section Example

The following example is a complete linker script. It tells the linker to read all of the sections from file `all.o` and place them at the start of output section ‘`outputa`’ which starts at location ‘`0x10000`’. All of section ‘`.input1`’ from file `foo.o` follows immediately, in the same output section. All of section ‘`.input2`’ from `foo.o` goes into output section ‘`outputb`’, followed by section ‘`.input1`’ from `foo1.o`. All of the remaining ‘`.input1`’ and ‘`.input2`’ sections from any files are written to output section ‘`outputc`’.

    SECTIONS {
      outputa 0x10000 :
        {
        all.o
        foo.o (.input1)
        }

      outputb :
        {
        foo.o (.input2)
        foo1.o (.input1)
        }

      outputc :
        {
        *(.input1)
        *(.input2)
        }
    }

If an output section’s name is the same as the input section’s name and is representable as a C identifier, then the linker will automatically see PROVIDE two symbols: __start_SECNAME and __stop_SECNAME, where SECNAME is the name of the section. These indicate the start address and end address of the output section respectively. Note: most section names are not representable as C identifiers because they contain a ‘`.`’ character.