Mercurial > ecos
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_ |
