Subversion Repositories HomeAutomation

Rev

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

Rev 299 Rev 307
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
    __bootloader_start = . ;
118
    __bootloader_start = . ;
119
    *(.bootloader)
119
    *(.bootloader)
120
    __bootloader_end = . ;
-
 
121
  }  > text
-
 
122
  .flash_code 0x1f80 : /* Locate code for BIOS update in the last two pages of flash */
120
    . = 0x2000 - __boot_start - 0x80; /* Locate code for BIOS update in the last two pages of flash */
123
  {
-
 
124
    __flash_code_start = . ;
121
    __flash_code_start = . ;
125
    *(.flash_code)
122
    *(.flash_code)
-
 
123
    __bootloader_end = . ;
126
  }  > text
124
  }  > text
127
  .data	 : AT (ADDR (.text) + SIZEOF (.text))
125
  .data	 : AT (ADDR (.text) + SIZEOF (.text))
128
  {
126
  {
129
     PROVIDE (__data_start = .) ;
127
     PROVIDE (__data_start = .) ;
130
    *(.bios_interface)
128
    *(.bios_interface)
131
    *(.data)
129
    *(.data)
132
    *(.gnu.linkonce.d*)
130
    *(.gnu.linkonce.d*)
133
    . = ALIGN(2);
131
    . = ALIGN(2);
134
     _edata = . ;
132
     _edata = . ;
135
     PROVIDE (__data_end = .) ;
133
     PROVIDE (__data_end = .) ;
136
  }  > data
134
  }  > data
137
  .bss  SIZEOF(.data) + ADDR(.data) :
135
  .bss  SIZEOF(.data) + ADDR(.data) :
138
  {
136
  {
139
     PROVIDE (__bss_start = .) ;
137
     PROVIDE (__bss_start = .) ;
140
    *(.bss)
138
    *(.bss)
141
    *(COMMON)
139
    *(COMMON)
142
     PROVIDE (__bss_end = .) ;
140
     PROVIDE (__bss_end = .) ;
143
  }  > data
141
  }  > data
144
   __data_load_start = LOADADDR(.data);
142
   __data_load_start = LOADADDR(.data);
145
   __data_load_end = __data_load_start + SIZEOF(.data);
143
   __data_load_end = __data_load_start + SIZEOF(.data);
146
  /* Global data not cleared after reset.  */
144
  /* Global data not cleared after reset.  */
147
  .noinit  SIZEOF(.bss) + ADDR(.bss) :
145
  .noinit  SIZEOF(.bss) + ADDR(.bss) :
148
  {
146
  {
149
     PROVIDE (__noinit_start = .) ;
147
     PROVIDE (__noinit_start = .) ;
150
    *(.noinit*)
148
    *(.noinit*)
151
     PROVIDE (__noinit_end = .) ;
149
     PROVIDE (__noinit_end = .) ;
152
     _end = . ;
150
     _end = . ;
153
     PROVIDE (__bios_ram_end = .) ;
151
     PROVIDE (__bios_ram_end = .) ;
154
  }  > data
152
  }  > data
155
  .eeprom  :
153
  .eeprom  :
156
  {
154
  {
157
    *(.eeprom*)
155
    *(.eeprom*)
158
     __eeprom_end = . ;
156
     __eeprom_end = . ;
159
  }  > eeprom
157
  }  > eeprom
160
  /* Stabs debugging sections.  */
158
  /* Stabs debugging sections.  */
161
  .stab 0 : { *(.stab) }
159
  .stab 0 : { *(.stab) }
162
  .stabstr 0 : { *(.stabstr) }
160
  .stabstr 0 : { *(.stabstr) }
163
  .stab.excl 0 : { *(.stab.excl) }
161
  .stab.excl 0 : { *(.stab.excl) }
164
  .stab.exclstr 0 : { *(.stab.exclstr) }
162
  .stab.exclstr 0 : { *(.stab.exclstr) }
165
  .stab.index 0 : { *(.stab.index) }
163
  .stab.index 0 : { *(.stab.index) }
166
  .stab.indexstr 0 : { *(.stab.indexstr) }
164
  .stab.indexstr 0 : { *(.stab.indexstr) }
167
  .comment 0 : { *(.comment) }
165
  .comment 0 : { *(.comment) }
168
  /* DWARF debug sections.
166
  /* DWARF debug sections.
169
     Symbols in the DWARF debugging sections are relative to the beginning
167
     Symbols in the DWARF debugging sections are relative to the beginning
170
     of the section so we begin them at 0.  */
168
     of the section so we begin them at 0.  */
171
  /* DWARF 1 */
169
  /* DWARF 1 */
172
  .debug          0 : { *(.debug) }
170
  .debug          0 : { *(.debug) }
173
  .line           0 : { *(.line) }
171
  .line           0 : { *(.line) }
174
  /* GNU DWARF 1 extensions */
172
  /* GNU DWARF 1 extensions */
175
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
173
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
176
  .debug_sfnames  0 : { *(.debug_sfnames) }
174
  .debug_sfnames  0 : { *(.debug_sfnames) }
177
  /* DWARF 1.1 and DWARF 2 */
175
  /* DWARF 1.1 and DWARF 2 */
178
  .debug_aranges  0 : { *(.debug_aranges) }
176
  .debug_aranges  0 : { *(.debug_aranges) }
179
  .debug_pubnames 0 : { *(.debug_pubnames) }
177
  .debug_pubnames 0 : { *(.debug_pubnames) }
180
  /* DWARF 2 */
178
  /* DWARF 2 */
181
  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
179
  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
182
  .debug_abbrev   0 : { *(.debug_abbrev) }
180
  .debug_abbrev   0 : { *(.debug_abbrev) }
183
  .debug_line     0 : { *(.debug_line) }
181
  .debug_line     0 : { *(.debug_line) }
184
  .debug_frame    0 : { *(.debug_frame) }
182
  .debug_frame    0 : { *(.debug_frame) }
185
  .debug_str      0 : { *(.debug_str) }
183
  .debug_str      0 : { *(.debug_str) }
186
  .debug_loc      0 : { *(.debug_loc) }
184
  .debug_loc      0 : { *(.debug_loc) }
187
  .debug_macinfo  0 : { *(.debug_macinfo) }
185
  .debug_macinfo  0 : { *(.debug_macinfo) }
188
}
186
}