From 8528c8e453eb42e21b503c38eda328e53f074b7f Mon Sep 17 00:00:00 2001 From: Dave Murphy Date: Thu, 11 Feb 2010 17:08:59 +0000 Subject: [PATCH] support sorted constructors/destructors --- dkarm-eabi/crtls/gba_cart.ld | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/dkarm-eabi/crtls/gba_cart.ld b/dkarm-eabi/crtls/gba_cart.ld index c2ae17b..b7a8783 100644 --- a/dkarm-eabi/crtls/gba_cart.ld +++ b/dkarm-eabi/crtls/gba_cart.ld @@ -190,7 +190,12 @@ SECTIONS __preinit_lma = __data_lma + SIZEOF(.data); PROVIDE (__preinit_array_start = .); - .preinit_array : AT (__preinit_lma) { KEEP (*(.preinit_array)) } >iwram + .preinit_array : AT (__preinit_lma) + .init_array : AT (__init_lma) + { + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + } >iwram PROVIDE (__preinit_array_end = .); __init_lma = __preinit_lma + SIZEOF(.preinit_array); @@ -202,8 +207,13 @@ SECTIONS __fini_lma = __init_lma + SIZEOF(.init_array); - .fini_array : AT (__fini_lma) { KEEP (*(.fini_array)) } >iwram - PROVIDE (__fini_array_end = .); + .fini_array : AT (__fini_lma) + { + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array)) + } >iwram + + PROVIDE (__fini_array_end = .); __jcr_lma = __fini_lma + SIZEOF(.fini_array); .jcr : AT (__jcr_lma) { KEEP (*(.jcr)) } >iwram