From 24dd9f7582c1f717bd82df8c76bba82211fa164a Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Fri, 29 Sep 2000 19:03:57 +0000 Subject: [PATCH] * scripttempl/crisaout.sc (ENTRY): Now __start. (.text): Add default setting for __start. Remove CONSTRUCTORS handling. (/DISCARD/): Add .gnu.warning.*. * emulparams/crislinux.sh (ENTRY): Now __start. (TEXT_START_SYMBOLS): New; provide __Stext and __start default. * emulparams/criself.sh (OUTPUT_FORMAT): Now elf32-us-cris. (ENTRY): Now __start. (INITIAL_READONLY_SECTIONS): Add KEEP for .startup. (EXECUTABLE_SYMBOLS): Add default setting for __start. --- ld/ChangeLog | 13 +++++++++++++ ld/emulparams/criself.sh | 19 +++++++++++++++---- ld/emulparams/crislinux.sh | 10 ++++++++-- ld/scripttempl/crisaout.sc | 17 +++++++---------- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 58a6c87..8a14306 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,16 @@ +2000-09-29 Hans-Peter Nilsson + + * scripttempl/crisaout.sc (ENTRY): Now __start. + (.text): Add default setting for __start. + Remove CONSTRUCTORS handling. + (/DISCARD/): Add .gnu.warning.*. + * emulparams/crislinux.sh (ENTRY): Now __start. + (TEXT_START_SYMBOLS): New; provide __Stext and __start default. + * emulparams/criself.sh (OUTPUT_FORMAT): Now elf32-us-cris. + (ENTRY): Now __start. + (INITIAL_READONLY_SECTIONS): Add KEEP for .startup. + (EXECUTABLE_SYMBOLS): Add default setting for __start. + 2000-09-29 Kazu Hirata * deffile.h: Fix formatting. diff --git a/ld/emulparams/criself.sh b/ld/emulparams/criself.sh index 44d0a11..4acd56a 100644 --- a/ld/emulparams/criself.sh +++ b/ld/emulparams/criself.sh @@ -2,21 +2,32 @@ MACHINE= SCRIPT_NAME=elf TEMPLATE_NAME=elf32 -OUTPUT_FORMAT="elf32-cris" + +# Symbols have underscore prepended. +OUTPUT_FORMAT="elf32-us-cris" ARCH=cris MAXPAGESIZE=32 -ENTRY=_start +ENTRY=__start EMBEDDED=yes ALIGNMENT=32 TEXT_START_ADDR=0 # Put crt0 for flash/eprom etc. in this section. -INITIAL_READONLY_SECTIONS='.startup : { *(.startup) }' +INITIAL_READONLY_SECTIONS='.startup : { KEEP(*(.startup)) }' # TEXT_START_SYMBOLS doesn't get what we want which is the start of # all read-only sections; there's at least .init and .fini before it. # We have to resort to trickery. -EXECUTABLE_SYMBOLS='PROVIDE (__Stext = .);' +# +# The __start dance is to get us through assumptions about entry +# symbols, and to clear _start for normal use with sane programs. +EXECUTABLE_SYMBOLS=' +PROVIDE (__Stext = .); +__start = DEFINED(__start) ? __start : + DEFINED(_start) ? _start : + DEFINED(start) ? start : + DEFINED(.startup) ? .startup + 2 : 2; +' # Smuggle an "OTHER_TEXT_END_SYMBOLS" here. OTHER_READONLY_SECTIONS='PROVIDE (__Etext = .);' diff --git a/ld/emulparams/crislinux.sh b/ld/emulparams/crislinux.sh index 15af6cf..22ea9ea 100644 --- a/ld/emulparams/crislinux.sh +++ b/ld/emulparams/crislinux.sh @@ -4,7 +4,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-cris" ARCH=cris TEMPLATE_NAME=elf32 -ENTRY=_start +ENTRY=__start # Needed? Perhaps should be page-size alignment. ALIGNMENT=32 GENERATE_SHLIB_SCRIPT=yes @@ -12,11 +12,17 @@ GENERATE_SHLIB_SCRIPT=yes # Is this high enough and low enough? TEXT_START_ADDR=0x80000 -# Do we need to set this higher? MAXPAGESIZE=8192 # FIXME: GOT, PLT... +TEXT_START_SYMBOLS='PROVIDE (__Stext = .); +__start = DEFINED(__start) ? __start : + DEFINED(_start) ? _start : + DEFINED(start) ? start : + DEFINED(.startup) ? .startup + 2 : 2; +' + # Smuggle an "OTHER_TEXT_END_SYMBOLS" here. OTHER_READONLY_SECTIONS='PROVIDE (__Etext = .);' DATA_START_SYMBOLS='PROVIDE (__Sdata = .);' diff --git a/ld/scripttempl/crisaout.sc b/ld/scripttempl/crisaout.sc index 6777482..927ec9c 100644 --- a/ld/scripttempl/crisaout.sc +++ b/ld/scripttempl/crisaout.sc @@ -1,7 +1,7 @@ cat <