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