]> git.karo-electronics.de Git - karo-tx-redboot.git/blobdiff - packages/hal/arm/arch/v2_0/src/arm.ld
RedBoot Release TX53-v3 2012-02-08
[karo-tx-redboot.git] / packages / hal / arm / arch / v2_0 / src / arm.ld
index 38f9d636f46d9e288e6ead8ee2ea52362fd0e987..649828a2a0ed08f0b822badc912d67cb8bbbacbe 100644 (file)
@@ -38,6 +38,7 @@
 //=============================================================================
 
 #include <pkgconf/system.h>
+#include <pkgconf/hal_arm.h>
 
 STARTUP(vectors.o)
 ENTRY(reset_vector)
@@ -160,6 +161,14 @@ OUTPUT_FORMAT(elf32-bigarm)
        . = . + 8;                                     \
     } > _region_ = 0
 
+#ifdef CYGBLD_ARM_EABI
+#define __CTORS                init_array
+#define __DTORS                fini_array
+#else
+#define __CTORS                ctors
+#define __DTORS                dtors
+#endif
+
 #define SECTION_RELOCS(_region_, _vma_, _lma_)                              \
   .rel.text      :                                                          \
     {                                                                       \
@@ -199,10 +208,10 @@ OUTPUT_FORMAT(elf32-bigarm)
     } > _region_                                                            \
   .rel.got       :   { *(.rel.got)    } > _region_                          \
   .rela.got      :   { *(.rela.got)   } > _region_                          \
-  .rel.ctors     :   { *(.rel.ctors)  } > _region_                          \
-  .rela.ctors    :   { *(.rela.ctors) } > _region_                          \
-  .rel.dtors     :   { *(.rel.dtors)  } > _region_                          \
-  .rela.dtors    :   { *(.rela.dtors) } > _region_                          \
+  .rel.__CTORS   :   { *(.rel.__CTORS) } > _region_                         \
+  .rela.__CTORS  :   { *(.rela.__CTORS) } > _region_                        \
+  .rel.__DTORS   :   { *(.rel.__DTORS) } > _region_                         \
+  .rela.__DTORS  :   { *(.rela.__DTORS) } > _region_                        \
   .rel.init      :   { *(.rel.init)   } > _region_                          \
   .rela.init     :   { *(.rela.init)  } > _region_                          \
   .rel.fini      :   { *(.rel.fini)   } > _region_                          \
@@ -238,8 +247,8 @@ OUTPUT_FORMAT(elf32-bigarm)
     . = ALIGN (4); \
     KEEP(*( SORT (.ecos.table.*))) ;            \
     . = ALIGN (4); \
-    __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) __CTOR_END__ = ABSOLUTE (.); \
-    __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) __DTOR_END__ = ABSOLUTE (.); \
+    __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.__CTORS*))) __CTOR_END__ = ABSOLUTE (.); \
+    __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.__DTORS*))) __DTOR_END__ = ABSOLUTE (.); \
     *(.dynamic) *(.sdata*) *(.gnu.linkonce.s.*) \
     . = ALIGN (4); *(.2ram.*) } \
     > _region_ \