comparison packages/hal/sh/arch/current/src/sh.ld @ 184:022f1e506033

Merge from eCos master repository on 2001-10-02-17:59:22-BST
author jlarmour
date Tue, 02 Oct 2001 18:28:24 +0000
parents 9160a8005d76
children e0c0827131d1
comparison
equal deleted inserted replaced
183:9160a8005d76 184:022f1e506033
21 // The Original Code is eCos - Embedded Configurable Operating System, 21 // The Original Code is eCos - Embedded Configurable Operating System,
22 // released September 30, 1998. 22 // released September 30, 1998.
23 // 23 //
24 // The Initial Developer of the Original Code is Red Hat. 24 // The Initial Developer of the Original Code is Red Hat.
25 // Portions created by Red Hat are 25 // Portions created by Red Hat are
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc. 26 // Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc.
27 // All Rights Reserved. 27 // All Rights Reserved.
28 // ------------------------------------------- 28 // -------------------------------------------
29 // 29 //
30 //####COPYRIGHTEND#### 30 //####COPYRIGHTEND####
31 //========================================================================== 31 //==========================================================================
43 #include <pkgconf/system.h> 43 #include <pkgconf/system.h>
44 #include <cyg/hal/basetype.h> 44 #include <cyg/hal/basetype.h>
45 45
46 STARTUP(vectors.o) 46 STARTUP(vectors.o)
47 ENTRY(CYG_LABEL_DEFN(_reset)) 47 ENTRY(CYG_LABEL_DEFN(_reset))
48 #ifdef EXTRAS
49 INPUT(extras.o) 48 INPUT(extras.o)
49 #if (__GNUC__ >= 3)
50 GROUP(libtarget.a libgcc.a libsupc++.a)
51 #else
52 GROUP(libtarget.a libgcc.a)
50 #endif 53 #endif
51 GROUP(libtarget.a libgcc.a)
52 54
53 #define ALIGN_LMA 16 55 #define ALIGN_LMA 16
54 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1)) 56 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
55 #define LMA_EQ_VMA 57 #define LMA_EQ_VMA
56 #define FORCE_OUTPUT . = . 58 #define FORCE_OUTPUT . = .
80 KEEP(*(SORT(.ctors*))) CYG_LABEL_DEFN(__CTOR_END__) = ABSOLUTE(.); \ 82 KEEP(*(SORT(.ctors*))) CYG_LABEL_DEFN(__CTOR_END__) = ABSOLUTE(.); \
81 CYG_LABEL_DEFN(__DTOR_LIST__) = ABSOLUTE(.); \ 83 CYG_LABEL_DEFN(__DTOR_LIST__) = ABSOLUTE(.); \
82 KEEP(*(SORT(.dtors*))) CYG_LABEL_DEFN(__DTOR_END__) = ABSOLUTE(.); \ 84 KEEP(*(SORT(.dtors*))) CYG_LABEL_DEFN(__DTOR_END__) = ABSOLUTE(.); \
83 . = ALIGN(8); \ 85 . = ALIGN(8); \
84 KEEP(*( SORT (.ecos.table.*))) ; \ 86 KEEP(*( SORT (.ecos.table.*))) ; \
85 *(.got*) *(.rela.got) *(.rel.got) \
86 . = ALIGN(4); \ 87 . = ALIGN(4); \
87 } > _region_ \ 88 } > _region_ \
88 CYG_LABEL_DEFN(_rom_data_start) = LOADADDR(.data); \ 89 CYG_LABEL_DEFN(_rom_data_start) = LOADADDR(.data); \
89 CYG_LABEL_DEFN(_ram_data_end) = .; PROVIDE(_ram_data_end = .); \ 90 CYG_LABEL_DEFN(_ram_data_end) = .; PROVIDE(_ram_data_end = .); \
90 CYG_LABEL_DEFN(edata) = .; PROVIDE (edata = .); 91 CYG_LABEL_DEFN(edata) = .; PROVIDE (edata = .);
91 92
92 93
94 #define SECTION_eh_frame(_region_, _vma_, _lma_) \
95 .eh_frame _vma_ : _lma_ \
96 { \
97 FORCE_OUTPUT; __EH_FRAME_BEGIN__ = .; \
98 KEEP(*(.eh_frame)) \
99 __FRAME_END__ = .; \
100 . = . + 8; \
101 } > _region_ = 0
102
103 #define SECTION_RELOCS(_region_, _vma_, _lma_) \
104 .rel.text : \
105 { \
106 *(.rel.text) \
107 *(.rel.text.*) \
108 *(.rel.gnu.linkonce.t*) \
109 } > _region_ \
110 .rela.text : \
111 { \
112 *(.rela.text) \
113 *(.rela.text.*) \
114 *(.rela.gnu.linkonce.t*) \
115 } > _region_ \
116 .rel.data : \
117 { \
118 *(.rel.data) \
119 *(.rel.data.*) \
120 *(.rel.gnu.linkonce.d*) \
121 } > _region_ \
122 .rela.data : \
123 { \
124 *(.rela.data) \
125 *(.rela.data.*) \
126 *(.rela.gnu.linkonce.d*) \
127 } > _region_ \
128 .rel.rodata : \
129 { \
130 *(.rel.rodata) \
131 *(.rel.rodata.*) \
132 *(.rel.gnu.linkonce.r*) \
133 } > _region_ \
134 .rela.rodata : \
135 { \
136 *(.rela.rodata) \
137 *(.rela.rodata.*) \
138 *(.rela.gnu.linkonce.r*) \
139 } > _region_ \
140 .rel.got : { *(.rel.got) } > _region_ \
141 .rela.got : { *(.rela.got) } > _region_ \
142 .rel.ctors : { *(.rel.ctors) } > _region_ \
143 .rela.ctors : { *(.rela.ctors) } > _region_ \
144 .rel.dtors : { *(.rel.dtors) } > _region_ \
145 .rela.dtors : { *(.rela.dtors) } > _region_ \
146 .rel.init : { *(.rel.init) } > _region_ \
147 .rela.init : { *(.rela.init) } > _region_ \
148 .rel.fini : { *(.rel.fini) } > _region_ \
149 .rela.fini : { *(.rela.fini) } > _region_ \
150 .rel.bss : { *(.rel.bss) } > _region_ \
151 .rela.bss : { *(.rela.bss) } > _region_ \
152 .rel.plt : { *(.rel.plt) } > _region_ \
153 .rela.plt : { *(.rela.plt) } > _region_ \
154 .rel.dyn : { *(.rel.dyn) } > _region_
155
156 #define SECTION_got(_region_, _vma_, _lma_) \
157 .got _vma_ : _lma_ \
158 { \
159 FORCE_OUTPUT; *(.got.plt) *(.got) \
160 } > _region_
93 161
94 #define SECTION_fini(_region_, _vma_, _lma_) \ 162 #define SECTION_fini(_region_, _vma_, _lma_) \
95 .fini _vma_ : _lma_ \ 163 .fini _vma_ : _lma_ \
96 { FORCE_OUTPUT; *(.fini) } \ 164 { FORCE_OUTPUT; *(.fini) } \
97 > _region_ 165 > _region_