Subversion Repositories HomeAutomation

Rev

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

Rev 223 Rev 228
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 = 0x1800, LENGTH = 2K
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/ :
-
 
71
  {
-
 
72
    *(.vectors)
-
 
73
  }
70
  .app_vectors 0 :
74
  .app_vectors 0x0 :
71
  {
75
  {
72
    *(.app_vectors)
76
    *(.app_vectors)
73
  }
77
  }
74
  .text :
78
  .text __bios_start :
75
  {
79
  {
76
    *(.vectors)
-
 
77
     __ctors_start = . ;
80
    __ctors_start = . ;
78
     *(.ctors)
81
    *(.ctors)
79
     __ctors_end = . ;
82
    __ctors_end = . ;
80
     __dtors_start = . ;
83
    __dtors_start = . ;
81
     *(.dtors)
84
    *(.dtors)
82
     __dtors_end = . ;
85
    __dtors_end = . ;
83
    *(.progmem.gcc*)
86
    *(.progmem.gcc*)
84
    *(.progmem*)
87
    *(.progmem*)
85
    . = ALIGN(2);
88
    . = ALIGN(2);
86
    *(.init0)  /* Start here after reset.  */
89
    *(.init0)  /* Start here after reset.  */
87
    *(.init1)
90
    *(.init1)
88
    *(.init2)  /* Clear __zero_reg__, set up stack pointer.  */
91
    *(.init2)  /* Clear __zero_reg__, set up stack pointer.  */
89
    *(.init3)
92
    *(.init3)
90
    *(.init4)  /* Initialize data and BSS.  */
93
    *(.init4)  /* Initialize data and BSS.  */
91
    *(.init5)
94
    *(.init5)
92
    *(.init6)  /* C++ constructors.  */
95
    *(.init6)  /* C++ constructors.  */
93
    *(.init7)
96
    *(.init7)
94
    *(.init8)
97
    *(.init8)
95
    *(.init9)  /* Call main().  */
98
    *(.init9)  /* Call main().  */
96
    *(.text)
99
    *(.text)
97
    . = ALIGN(2);
100
    . = ALIGN(2);
98
    *(.text.*)
101
    *(.text.*)
99
    . = ALIGN(2);
102
    . = ALIGN(2);
100
    *(.fini9)  /* _exit() starts here.  */
103
    *(.fini9)  /* _exit() starts here.  */
101
    *(.fini8)
104
    *(.fini8)
102
    *(.fini7)
105
    *(.fini7)
103
    *(.fini6)  /* C++ destructors.  */
106
    *(.fini6)  /* C++ destructors.  */
104
    *(.fini5)
107
    *(.fini5)
105
    *(.fini4)
108
    *(.fini4)
106
    *(.fini3)
109
    *(.fini3)
107
    *(.fini2)
110
    *(.fini2)
108
    *(.fini1)
111
    *(.fini1)
109
    *(.fini0)  /* Infinite loop after program termination.  */
112
    *(.fini0)  /* Infinite loop after program termination.  */
110
     _etext = . ;
113
     _etext = . ;
-
 
114
  }  > text
-
 
115
  .bootloader __boot_start :
-
 
116
  {
-
 
117
    *(.boot_vectors)
-
 
118
    __bootloader_start = . ;
-
 
119
    *(.bootloader)
-
 
120
    __bootloader_end = . ;
111
  }  > text
121
  }  > text
112
  .data	 : AT (ADDR (.text) + SIZEOF (.text))
122
  .data	 : AT (ADDR (.text) + SIZEOF (.text))
113
  {
123
  {
114
     PROVIDE (__data_start = .) ;
124
     PROVIDE (__data_start = .) ;
115
    *(.bios_interface)
125
    *(.bios_interface)
116
    *(.data)
126
    *(.data)
117
    *(.gnu.linkonce.d*)
127
    *(.gnu.linkonce.d*)
118
    . = ALIGN(2);
128
    . = ALIGN(2);
119
     _edata = . ;
129
     _edata = . ;
120
     PROVIDE (__data_end = .) ;
130
     PROVIDE (__data_end = .) ;
121
  }  > data
131
  }  > data
122
  .bss  SIZEOF(.data) + ADDR(.data) :
132
  .bss  SIZEOF(.data) + ADDR(.data) :
123
  {
133
  {
124
     PROVIDE (__bss_start = .) ;
134
     PROVIDE (__bss_start = .) ;
125
    *(.bss)
135
    *(.bss)
126
    *(COMMON)
136
    *(COMMON)
127
     PROVIDE (__bss_end = .) ;
137
     PROVIDE (__bss_end = .) ;
128
  }  > data
138
  }  > data
129
   __data_load_start = LOADADDR(.data);
139
   __data_load_start = LOADADDR(.data);
130
   __data_load_end = __data_load_start + SIZEOF(.data);
140
   __data_load_end = __data_load_start + SIZEOF(.data);
131
  /* Global data not cleared after reset.  */
141
  /* Global data not cleared after reset.  */
132
  .noinit  SIZEOF(.bss) + ADDR(.bss) :
142
  .noinit  SIZEOF(.bss) + ADDR(.bss) :
133
  {
143
  {
134
     PROVIDE (__noinit_start = .) ;
144
     PROVIDE (__noinit_start = .) ;
135
    *(.noinit*)
145
    *(.noinit*)
136
     PROVIDE (__noinit_end = .) ;
146
     PROVIDE (__noinit_end = .) ;
137
     _end = . ;
147
     _end = . ;
138
     PROVIDE (__heap_start = .) ;
148
     PROVIDE (__bios_ram_end = .) ;
139
  }  > data
149
  }  > data
140
  .eeprom  :
150
  .eeprom  :
141
  {
151
  {
142
    *(.eeprom*)
152
    *(.eeprom*)
143
     __eeprom_end = . ;
153
     __eeprom_end = . ;
144
  }  > eeprom
154
  }  > eeprom
145
  /* Stabs debugging sections.  */
155
  /* Stabs debugging sections.  */
146
  .stab 0 : { *(.stab) }
156
  .stab 0 : { *(.stab) }
147
  .stabstr 0 : { *(.stabstr) }
157
  .stabstr 0 : { *(.stabstr) }
148
  .stab.excl 0 : { *(.stab.excl) }
158
  .stab.excl 0 : { *(.stab.excl) }
149
  .stab.exclstr 0 : { *(.stab.exclstr) }
159
  .stab.exclstr 0 : { *(.stab.exclstr) }
150
  .stab.index 0 : { *(.stab.index) }
160
  .stab.index 0 : { *(.stab.index) }
151
  .stab.indexstr 0 : { *(.stab.indexstr) }
161
  .stab.indexstr 0 : { *(.stab.indexstr) }
152
  .comment 0 : { *(.comment) }
162
  .comment 0 : { *(.comment) }
153
  /* DWARF debug sections.
163
  /* DWARF debug sections.
154
     Symbols in the DWARF debugging sections are relative to the beginning
164
     Symbols in the DWARF debugging sections are relative to the beginning
155
     of the section so we begin them at 0.  */
165
     of the section so we begin them at 0.  */
156
  /* DWARF 1 */
166
  /* DWARF 1 */
157
  .debug          0 : { *(.debug) }
167
  .debug          0 : { *(.debug) }
158
  .line           0 : { *(.line) }
168
  .line           0 : { *(.line) }
159
  /* GNU DWARF 1 extensions */
169
  /* GNU DWARF 1 extensions */
160
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
170
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
161
  .debug_sfnames  0 : { *(.debug_sfnames) }
171
  .debug_sfnames  0 : { *(.debug_sfnames) }
162
  /* DWARF 1.1 and DWARF 2 */
172
  /* DWARF 1.1 and DWARF 2 */
163
  .debug_aranges  0 : { *(.debug_aranges) }
173
  .debug_aranges  0 : { *(.debug_aranges) }
164
  .debug_pubnames 0 : { *(.debug_pubnames) }
174
  .debug_pubnames 0 : { *(.debug_pubnames) }
165
  /* DWARF 2 */
175
  /* DWARF 2 */
166
  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
176
  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
167
  .debug_abbrev   0 : { *(.debug_abbrev) }
177
  .debug_abbrev   0 : { *(.debug_abbrev) }
168
  .debug_line     0 : { *(.debug_line) }
178
  .debug_line     0 : { *(.debug_line) }
169
  .debug_frame    0 : { *(.debug_frame) }
179
  .debug_frame    0 : { *(.debug_frame) }
170
  .debug_str      0 : { *(.debug_str) }
180
  .debug_str      0 : { *(.debug_str) }
171
  .debug_loc      0 : { *(.debug_loc) }
181
  .debug_loc      0 : { *(.debug_loc) }
172
  .debug_macinfo  0 : { *(.debug_macinfo) }
182
  .debug_macinfo  0 : { *(.debug_macinfo) }
173
}
183
}