Subversion Repositories HomeAutomation

Rev

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

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