2d3181c7c4
The special case for .init and .fini in update_wild_statements is ineffective for .init or .fini wildcards inside other output sections. The special case needs to be on the wildcard, not the output section. This patch is belt and braces, both fixing update_wild_statements and the scripts. * scripttempl/alpha.sc, * scripttempl/armbpabi.sc, * scripttempl/crisaout.sc, * scripttempl/elf32cr16.sc, * scripttempl/elf32crx.sc, * scripttempl/elf32xc16x.sc, * scripttempl/elf32xc16xl.sc, * scripttempl/elf32xc16xs.sc, * scripttempl/elf64hppa.sc, * scripttempl/elf_chaos.sc, * scripttempl/elfarc.sc, * scripttempl/elfarcv2.sc, * scripttempl/elfd30v.sc, * scripttempl/elfm68hc11.sc, * scripttempl/elfm68hc12.sc, * scripttempl/elfm9s12z.sc, * scripttempl/elfmicroblaze.sc, * scripttempl/elfxgate.sc, * scripttempl/elfxtensa.sc, * scripttempl/epiphany_4x4.sc, * scripttempl/ft32.sc, * scripttempl/i386beos.sc, * scripttempl/iq2000.sc, * scripttempl/mcorepe.sc, * scripttempl/mep.sc, * scripttempl/mips.sc, * scripttempl/moxie.sc, * scripttempl/pe.sc, * scripttempl/pep.sc, * scripttempl/ppcpe.sc, * scripttempl/tic4xcoff.sc, * scripttempl/tic80coff.sc, * scripttempl/v850.sc, * scripttempl/v850_rh850.sc, * scripttempl/visium.sc, * scripttempl/xstormy16.sc: Add KEEP and SORT_NONE to .init and .fini wildcards. * scripttempl/elf32xc16x.sc, * scripttempl/elf32xc16xl.sc, * scripttempl/elf32xc16xs.sc: Add .fini wildcard. * scripttempl/elf_chaos.sc: Add .init output section. * scripttempl/elfd30v.sc: Remove duplicate .init. * scripttempl/elfm68hc11.sc, * scripttempl/elfm68hc12.sc, * scripttempl/elfm9s12z.sc, * scripttempl/elfxgate.sc: Remove duplicate .init, and add .fini wildcard. * scripttempl/ppcpe.sc (INIT, FINI): Delete. * ldlang.c (update_wild_statements): Special case .init and .fini in the wildcard, not the output section.
87 lines
2.4 KiB
Scala
87 lines
2.4 KiB
Scala
# Linker script for TI TMS320C80 (tic80) COFF.
|
|
#
|
|
# Copyright (C) 2014-2019 Free Software Foundation, Inc.
|
|
#
|
|
# Copying and distribution of this file, with or without modification,
|
|
# are permitted in any medium without royalty provided the copyright
|
|
# notice and this notice are preserved.
|
|
#
|
|
# Besides the shell variables set by the emulparams script, and the LD_FLAG
|
|
# variable, the genscripts.sh script will set the following variables for each
|
|
# time this script is run to generate one of the linker scripts for ldscripts:
|
|
#
|
|
# RELOCATING: Set to a non-empty string when the linker is going to be doing
|
|
# a final relocation.
|
|
#
|
|
# CONSTRUCTING: Set to a non-empty string when the linker is going to be
|
|
# building global constructor and destructor tables.
|
|
#
|
|
# DATA_ALIGNMENT: Set to an ALIGN expression when the output should be page
|
|
# aligned, or to "." when generating the -N script.
|
|
#
|
|
# CREATE_SHLIB: Set to a non-empty string when generating a script for
|
|
# the -shared linker arg.
|
|
|
|
test -z "$TEXT_START_ADDR" && TEXT_START_ADDR="0x80000 + SIZEOF_HEADERS"
|
|
test -z "$ENTRY" && ENTRY=__start
|
|
|
|
cat <<EOF
|
|
/* Copyright (C) 2014-2019 Free Software Foundation, Inc.
|
|
|
|
Copying and distribution of this script, with or without modification,
|
|
are permitted in any medium without royalty provided the copyright
|
|
notice and this notice are preserved. */
|
|
|
|
OUTPUT_FORMAT("${OUTPUT_FORMAT}")
|
|
${LIB_SEARCH_DIRS}
|
|
|
|
${RELOCATING+ENTRY (${ENTRY})}
|
|
|
|
SECTIONS
|
|
{
|
|
.text ${RELOCATING+ $TEXT_START_ADDR} : {
|
|
${RELOCATING+KEEP (*(SORT_NONE(.init)))
|
|
KEEP (*(SORT_NONE(.fini)))}
|
|
*(.text)
|
|
}
|
|
.const ALIGN(4) : {
|
|
*(.const)
|
|
}
|
|
.ctors ALIGN(4) : {
|
|
${CONSTRUCTING+ . = ALIGN(4);}
|
|
${CONSTRUCTING+ ___CTOR_LIST__ = .;}
|
|
${CONSTRUCTING+ LONG(-1)}
|
|
*(.ctors)
|
|
${CONSTRUCTING+ ___CTOR_END__ = .;}
|
|
${CONSTRUCTING+ LONG(0)}
|
|
}
|
|
.dtors ALIGN(4) : {
|
|
${CONSTRUCTING+ ___DTOR_LIST__ = .;}
|
|
${CONSTRUCTING+ LONG(-1)}
|
|
${CONSTRUCTING+ *(.dtors)}
|
|
${CONSTRUCTING+ ___DTOR_END__ = .;}
|
|
${CONSTRUCTING+ LONG(0)}
|
|
}
|
|
${RELOCATING+ etext = .;}
|
|
.data : {
|
|
*(.data)
|
|
${RELOCATING+ __edata = .};
|
|
}
|
|
.bss : {
|
|
${RELOCATING+ __bss_start = .};
|
|
*(.bss)
|
|
*(COMMON)
|
|
${RELOCATING+ _end = ALIGN(0x8)};
|
|
${RELOCATING+ __end = ALIGN(0x8)};
|
|
}
|
|
.stab 0 ${RELOCATING+(NOLOAD)} :
|
|
{
|
|
[ .stab ]
|
|
}
|
|
.stabstr 0 ${RELOCATING+(NOLOAD)} :
|
|
{
|
|
[ .stabstr ]
|
|
}
|
|
}
|
|
EOF
|