Subversion Repositories HomeAutomation

Rev

Rev 228 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 228 Rev 283
1
/* Default linker script, for normal executables */
1
/* Default linker script, for normal executables */
2
OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr")
2
OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr")
3
OUTPUT_ARCH(avr:4)
3
OUTPUT_ARCH(avr:4)
4
MEMORY
4
MEMORY
5
{
5
{
6
  text   (rx)   : ORIGIN = 0x0, LENGTH = 8K
6
  text   (rx)   : ORIGIN = 0x0, LENGTH = 8K
7
  data   (rw!x) : ORIGIN = 0x800060, LENGTH = 1K
7
  data   (rw!x) : ORIGIN = 0x800060, LENGTH = 1K
8
  eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 512
8
  eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 512
9
}
9
}
10
SECTIONS
10
SECTIONS
11
{
11
{
12
  /* Read-only sections, merged into text segment: */
12
  /* Read-only sections, merged into text segment: */
13
  .hash          : { *(.hash)		}
13
  .hash          : { *(.hash)		}
14
  .dynsym        : { *(.dynsym)		}
14
  .dynsym        : { *(.dynsym)		}
15
  .dynstr        : { *(.dynstr)		}
15
  .dynstr        : { *(.dynstr)		}
16
  .gnu.version   : { *(.gnu.version)	}
16
  .gnu.version   : { *(.gnu.version)	}
17
  .gnu.version_d   : { *(.gnu.version_d)	}
17
  .gnu.version_d   : { *(.gnu.version_d)	}
18
  .gnu.version_r   : { *(.gnu.version_r)	}
18
  .gnu.version_r   : { *(.gnu.version_r)	}
19
  .rel.init      : { *(.rel.init)		}
19
  .rel.init      : { *(.rel.init)		}
20
  .rela.init     : { *(.rela.init)	}
20
  .rela.init     : { *(.rela.init)	}
21
  .rel.text      :
21
  .rel.text      :
22
    {
22
    {
23
      *(.rel.text)
23
      *(.rel.text)
24
      *(.rel.text.*)
24
      *(.rel.text.*)
25
      *(.rel.gnu.linkonce.t*)
25
      *(.rel.gnu.linkonce.t*)
26
    }
26
    }
27
  .rela.text     :
27
  .rela.text     :
28
    {
28
    {
29
      *(.rela.text)
29
      *(.rela.text)
30
      *(.rela.text.*)
30
      *(.rela.text.*)
31
      *(.rela.gnu.linkonce.t*)
31
      *(.rela.gnu.linkonce.t*)
32
    }
32
    }
33
  .rel.fini      : { *(.rel.fini)		}
33
  .rel.fini      : { *(.rel.fini)		}
34
  .rela.fini     : { *(.rela.fini)	}
34
  .rela.fini     : { *(.rela.fini)	}
35
  .rel.rodata    :
35
  .rel.rodata    :
36
    {
36
    {
37
      *(.rel.rodata)
37
      *(.rel.rodata)
38
      *(.rel.rodata.*)
38
      *(.rel.rodata.*)
39
      *(.rel.gnu.linkonce.r*)
39
      *(.rel.gnu.linkonce.r*)
40
    }
40
    }
41
  .rela.rodata   :
41
  .rela.rodata   :
42
    {
42
    {
43
      *(.rela.rodata)
43
      *(.rela.rodata)
44
      *(.rela.rodata.*)
44
      *(.rela.rodata.*)
45
      *(.rela.gnu.linkonce.r*)
45
      *(.rela.gnu.linkonce.r*)
46
    }
46
    }
47
  .rel.data      :
47
  .rel.data      :
48
    {
48
    {
49
      *(.rel.data)
49
      *(.rel.data)
50
      *(.rel.data.*)
50
      *(.rel.data.*)
51
      *(.rel.gnu.linkonce.d*)
51
      *(.rel.gnu.linkonce.d*)
52
    }
52
    }
53
  .rela.data     :
53
  .rela.data     :
54
    {
54
    {
55
      *(.rela.data)
55
      *(.rela.data)
56
      *(.rela.data.*)
56
      *(.rela.data.*)
57
      *(.rela.gnu.linkonce.d*)
57
      *(.rela.gnu.linkonce.d*)
58
    }
58
    }
59
  .rel.ctors     : { *(.rel.ctors)	}
59
  .rel.ctors     : { *(.rel.ctors)	}
60
  .rela.ctors    : { *(.rela.ctors)	}
60
  .rela.ctors    : { *(.rela.ctors)	}
61
  .rel.dtors     : { *(.rel.dtors)	}
61
  .rel.dtors     : { *(.rel.dtors)	}
62
  .rela.dtors    : { *(.rela.dtors)	}
62
  .rela.dtors    : { *(.rela.dtors)	}
63
  .rel.got       : { *(.rel.got)		}
63
  .rel.got       : { *(.rel.got)		}
64
  .rela.got      : { *(.rela.got)		}
64
  .rela.got      : { *(.rela.got)		}
65
  .rel.bss       : { *(.rel.bss)		}
65
  .rel.bss       : { *(.rel.bss)		}
66
  .rela.bss      : { *(.rela.bss)		}
66
  .rela.bss      : { *(.rela.bss)		}
67
  .rel.plt       : { *(.rel.plt)		}
67
  .rel.plt       : { *(.rel.plt)		}
68
  .rela.plt      : { *(.rela.plt)		}
68
  .rela.plt      : { *(.rela.plt)		}
69
  /* Internal text space or external memory */
69
  /* Internal text space or external memory */
70
  /DISCARD/ :
70
  /DISCARD/ :
71
  {
71
  {
72
    *(.vectors)
72
    *(.vectors)
73
  }
73
  }
74
  .app_vectors 0x0 :
74
  .app_vectors 0x0 :
75
  {
75
  {
76
    *(.app_vectors)
76
    *(.app_vectors)
77
  }
77
  }
78
  .text __bios_start :
78
  .text __bios_start :
79
  {
79
  {
80
    __ctors_start = . ;
80
    __ctors_start = . ;
81
    *(.ctors)
81
    *(.ctors)
82
    __ctors_end = . ;
82
    __ctors_end = . ;
83
    __dtors_start = . ;
83
    __dtors_start = . ;
84
    *(.dtors)
84
    *(.dtors)
85
    __dtors_end = . ;
85
    __dtors_end = . ;
86
    *(.progmem.gcc*)
86
    *(.progmem.gcc*)
87
    *(.progmem*)
87
    *(.progmem*)
88
    . = ALIGN(2);
88
    . = ALIGN(2);
89
    *(.init0)  /* Start here after reset.  */
89
    *(.init0)  /* Start here after reset.  */
90
    *(.init1)
90
    *(.init1)
91
    *(.init2)  /* Clear __zero_reg__, set up stack pointer.  */
91
    *(.init2)  /* Clear __zero_reg__, set up stack pointer.  */
92
    *(.init3)
92
    *(.init3)
93
    *(.init4)  /* Initialize data and BSS.  */
93
    *(.init4)  /* Initialize data and BSS.  */
94
    *(.init5)
94
    *(.init5)
95
    *(.init6)  /* C++ constructors.  */
95
    *(.init6)  /* C++ constructors.  */
96
    *(.init7)
96
    *(.init7)
97
    *(.init8)
97
    *(.init8)
98
    *(.init9)  /* Call main().  */
98
    *(.init9)  /* Call main().  */
99
    *(.text)
99
    *(.text)
100
    . = ALIGN(2);
100
    . = ALIGN(2);
101
    *(.text.*)
101
    *(.text.*)
102
    . = ALIGN(2);
102
    . = ALIGN(2);
103
    *(.fini9)  /* _exit() starts here.  */
103
    *(.fini9)  /* _exit() starts here.  */
104
    *(.fini8)
104
    *(.fini8)
105
    *(.fini7)
105
    *(.fini7)
106
    *(.fini6)  /* C++ destructors.  */
106
    *(.fini6)  /* C++ destructors.  */
107
    *(.fini5)
107
    *(.fini5)
108
    *(.fini4)
108
    *(.fini4)
109
    *(.fini3)
109
    *(.fini3)
110
    *(.fini2)
110
    *(.fini2)
111
    *(.fini1)
111
    *(.fini1)
112
    *(.fini0)  /* Infinite loop after program termination.  */
112
    *(.fini0)  /* Infinite loop after program termination.  */
113
     _etext = . ;
113
     _etext = . ;
114
  }  > text
114
  }  > text
115
  .bootloader __boot_start :
115
  .bootloader __boot_start :
116
  {
116
  {
117
    *(.boot_vectors)
117
    *(.boot_vectors)
-
 
118
    . = ALIGN(64); /* To locate the bootloader code in a different flash page than the vectors. */
118
    __bootloader_start = . ;
119
    __bootloader_start = . ;
119
    *(.bootloader)
120
    *(.bootloader)
120
    __bootloader_end = . ;
121
    __bootloader_end = . ;
121
  }  > text
122
  }  > text
122
  .data	 : AT (ADDR (.text) + SIZEOF (.text))
123
  .data	 : AT (ADDR (.text) + SIZEOF (.text))
123
  {
124
  {
124
     PROVIDE (__data_start = .) ;
125
     PROVIDE (__data_start = .) ;
125
    *(.bios_interface)
126
    *(.bios_interface)
126
    *(.data)
127
    *(.data)
127
    *(.gnu.linkonce.d*)
128
    *(.gnu.linkonce.d*)
128
    . = ALIGN(2);
129
    . = ALIGN(2);
129
     _edata = . ;
130
     _edata = . ;
130
     PROVIDE (__data_end = .) ;
131
     PROVIDE (__data_end = .) ;
131
  }  > data
132
  }  > data
132
  .bss  SIZEOF(.data) + ADDR(.data) :
133
  .bss  SIZEOF(.data) + ADDR(.data) :
133
  {
134
  {
134
     PROVIDE (__bss_start = .) ;
135
     PROVIDE (__bss_start = .) ;
135
    *(.bss)
136
    *(.bss)
136
    *(COMMON)
137
    *(COMMON)
137
     PROVIDE (__bss_end = .) ;
138
     PROVIDE (__bss_end = .) ;
138
  }  > data
139
  }  > data
139
   __data_load_start = LOADADDR(.data);
140
   __data_load_start = LOADADDR(.data);
140
   __data_load_end = __data_load_start + SIZEOF(.data);
141
   __data_load_end = __data_load_start + SIZEOF(.data);
141
  /* Global data not cleared after reset.  */
142
  /* Global data not cleared after reset.  */
142
  .noinit  SIZEOF(.bss) + ADDR(.bss) :
143
  .noinit  SIZEOF(.bss) + ADDR(.bss) :
143
  {
144
  {
144
     PROVIDE (__noinit_start = .) ;
145
     PROVIDE (__noinit_start = .) ;
145
    *(.noinit*)
146
    *(.noinit*)
146
     PROVIDE (__noinit_end = .) ;
147
     PROVIDE (__noinit_end = .) ;
147
     _end = . ;
148
     _end = . ;
148
     PROVIDE (__bios_ram_end = .) ;
149
     PROVIDE (__bios_ram_end = .) ;
149
  }  > data
150
  }  > data
150
  .eeprom  :
151
  .eeprom  :
151
  {
152
  {
152
    *(.eeprom*)
153
    *(.eeprom*)
153
     __eeprom_end = . ;
154
     __eeprom_end = . ;
154
  }  > eeprom
155
  }  > eeprom
155
  /* Stabs debugging sections.  */
156
  /* Stabs debugging sections.  */
156
  .stab 0 : { *(.stab) }
157
  .stab 0 : { *(.stab) }
157
  .stabstr 0 : { *(.stabstr) }
158
  .stabstr 0 : { *(.stabstr) }
158
  .stab.excl 0 : { *(.stab.excl) }
159
  .stab.excl 0 : { *(.stab.excl) }
159
  .stab.exclstr 0 : { *(.stab.exclstr) }
160
  .stab.exclstr 0 : { *(.stab.exclstr) }
160
  .stab.index 0 : { *(.stab.index) }
161
  .stab.index 0 : { *(.stab.index) }
161
  .stab.indexstr 0 : { *(.stab.indexstr) }
162
  .stab.indexstr 0 : { *(.stab.indexstr) }
162
  .comment 0 : { *(.comment) }
163
  .comment 0 : { *(.comment) }
163
  /* DWARF debug sections.
164
  /* DWARF debug sections.
164
     Symbols in the DWARF debugging sections are relative to the beginning
165
     Symbols in the DWARF debugging sections are relative to the beginning
165
     of the section so we begin them at 0.  */
166
     of the section so we begin them at 0.  */
166
  /* DWARF 1 */
167
  /* DWARF 1 */
167
  .debug          0 : { *(.debug) }
168
  .debug          0 : { *(.debug) }
168
  .line           0 : { *(.line) }
169
  .line           0 : { *(.line) }
169
  /* GNU DWARF 1 extensions */
170
  /* GNU DWARF 1 extensions */
170
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
171
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
171
  .debug_sfnames  0 : { *(.debug_sfnames) }
172
  .debug_sfnames  0 : { *(.debug_sfnames) }
172
  /* DWARF 1.1 and DWARF 2 */
173
  /* DWARF 1.1 and DWARF 2 */
173
  .debug_aranges  0 : { *(.debug_aranges) }
174
  .debug_aranges  0 : { *(.debug_aranges) }
174
  .debug_pubnames 0 : { *(.debug_pubnames) }
175
  .debug_pubnames 0 : { *(.debug_pubnames) }
175
  /* DWARF 2 */
176
  /* DWARF 2 */
176
  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
177
  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
177
  .debug_abbrev   0 : { *(.debug_abbrev) }
178
  .debug_abbrev   0 : { *(.debug_abbrev) }
178
  .debug_line     0 : { *(.debug_line) }
179
  .debug_line     0 : { *(.debug_line) }
179
  .debug_frame    0 : { *(.debug_frame) }
180
  .debug_frame    0 : { *(.debug_frame) }
180
  .debug_str      0 : { *(.debug_str) }
181
  .debug_str      0 : { *(.debug_str) }
181
  .debug_loc      0 : { *(.debug_loc) }
182
  .debug_loc      0 : { *(.debug_loc) }
182
  .debug_macinfo  0 : { *(.debug_macinfo) }
183
  .debug_macinfo  0 : { *(.debug_macinfo) }
183
}
184
}