aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2001-10-20 09:56:29 +0000
committerNick Clifton <nickc@redhat.com>2001-10-20 09:56:29 +0000
commitfd521b4750cb0df1c841700637de89a7b25cccf3 (patch)
treecb5fb06a4f2a93f81f36a247ba59ec68e42c86c0 /ld
parentd66b75d138505fc96fa32b065d0dbb440d09ee69 (diff)
downloadfsf-binutils-gdb-fd521b4750cb0df1c841700637de89a7b25cccf3.zip
fsf-binutils-gdb-fd521b4750cb0df1c841700637de89a7b25cccf3.tar.gz
fsf-binutils-gdb-fd521b4750cb0df1c841700637de89a7b25cccf3.tar.bz2
Define __EH_FRAME_{BEGIN|END}__
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/scripttempl/armcoff.sc21
2 files changed, 27 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 0c0a882..1ff2d26 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,9 @@
+2001-10-20 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * scripttempl/armcoff.sc: Define __EH_FRAME_BEGIN__ and
+ __EH_FRAME_END__ and accept eh frames into data section.
+ Add ctor and dtor sections.
+
2001-10-19 Danny Smith <danny_r_smith_2001@yahoo.co.nz>
* pe-dll.c (autofilter_objectlist): Add gcrt0.o.
diff --git a/ld/scripttempl/armcoff.sc b/ld/scripttempl/armcoff.sc
index 4311f10..c61f734 100644
--- a/ld/scripttempl/armcoff.sc
+++ b/ld/scripttempl/armcoff.sc
@@ -6,6 +6,18 @@ if test -z "${DATA_ADDR}"; then
DATA_ADDR=.
fi
fi
+
+# These are substituted in as variables in order to get '}' in a shell
+# conditional expansion.
+CTOR='.ctor : {
+ *(SORT(.ctors.*))
+ *(.ctor)
+ }'
+DTOR='.dtor : {
+ *(SORT(.dtors.*))
+ *(.dtor)
+ }'
+
cat <<EOF
OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}", "${LITTLE_OUTPUT_FORMAT}")
${LIB_SEARCH_DIRS}
@@ -35,10 +47,19 @@ SECTIONS
.data ${RELOCATING+${DATA_ADDR-0x40000 + (. & 0xfffc0fff)}} : {
${RELOCATING+ __data_start__ = . ;}
*(.data*)
+
+ ${RELOCATING+*(.gcc_exc*)}
+ ${RELOCATING+___EH_FRAME_BEGIN__ = . ;}
+ ${RELOCATING+*(.eh_fram*)}
+ ${RELOCATING+___EH_FRAME_END__ = . ;}
+ ${RELOCATING+LONG(0);}
+
${RELOCATING+ __data_end__ = . ;}
${RELOCATING+ edata = .;}
${RELOCATING+ _edata = .;}
}
+ ${CONSTRUCTING+${RELOCATING-$CTOR}}
+ ${CONSTRUCTING+${RELOCATING-$DTOR}}
.bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} :
{
${RELOCATING+ __bss_start__ = . ;}