Replace multiple AVR scripts with a single, customizable linker script.
PR ld/21569 * scripttempl/avrtiny.sc: Remove file. * Makefile.am (eavrtiny.c): Depend on avr.sc, no more on avrtiny.sc. * Makefile.in: Regenerate. * emulparams/avrtiny.sh (SCRIPT_NAME): Set var to "avr". (TEXT_ORIGIN): Remove var. (FUSE_NAME, FUSE_LENGTH, LOCK_LENGTH, SIGNATURE_LENGTH) (RODATA_PM_OFFSET): Set new vars. * emulparams/avr1.sh (FUSE_NAME, EEPROM_LENGTH, FUSE_LENGTH) (LOCK_LENGTH, SIGNATURE_LENGTH, USER_SIGNATURE_LENGTH): Set new vars. * emulparams/avr2.sh: Same. * emulparams/avr25.sh: Same. * emulparams/avr3.sh: Same. * emulparams/avr31.sh: Same. * emulparams/avr35.sh: Same. * emulparams/avr4.sh: Same. * emulparams/avr5.sh: Same. * emulparams/avr51.sh: Same. * emulparams/avr6.sh: Same. * emulparams/avrxmega1.sh: Same. * emulparams/avrxmega2.sh: Same. * emulparams/avrxmega3.sh: Same. * emulparams/avrxmega4.sh: Same. * emulparams/avrxmega5.sh: Same. * emulparams/avrxmega6.sh: Same. * emulparams/avrxmega7.sh: Same. * scripttempl/avr.sc (__EEPROM_REGION_LENGTH__): Only define if EEPROM_LENGTH is set. (MEMORY) [eeprom]: Same. (SECTIONS) [.eeprom]: Same for output section. (__USER_SIGNATURE_REGION_LENGTH__): Only define if USER_SIGNATURE_LENGTH is set. (MEMORY) [user_signatures]: Same. (SECTIONS) [.fuse]: Only define output section if FUSE_NAME = fuse. (SECTIONS) [.config]: Only define output section if FUSE_NAME = config.
This commit is contained in:
parent
dc74becf49
commit
6490dc678b
@ -922,7 +922,7 @@ eavrxmega7.c: $(srcdir)/emulparams/avrxmega7.sh \
|
||||
${GEN_DEPENDS}
|
||||
|
||||
eavrtiny.c: $(srcdir)/emulparams/avrtiny.sh \
|
||||
$(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avrtiny.sc \
|
||||
$(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
|
||||
${GEN_DEPENDS}
|
||||
|
||||
ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
|
||||
|
@ -2486,7 +2486,7 @@ eavrxmega7.c: $(srcdir)/emulparams/avrxmega7.sh \
|
||||
${GEN_DEPENDS}
|
||||
|
||||
eavrtiny.c: $(srcdir)/emulparams/avrtiny.sh \
|
||||
$(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avrtiny.sc \
|
||||
$(srcdir)/emultempl/avrelf.em $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
|
||||
${GEN_DEPENDS}
|
||||
|
||||
ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=8K
|
||||
DATA_ORIGIN=0x800060
|
||||
DATA_LENGTH=0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=8K
|
||||
DATA_ORIGIN=0x800060
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=8K
|
||||
DATA_ORIGIN=0x800060
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=128K
|
||||
DATA_ORIGIN=0x800060
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=128K
|
||||
DATA_ORIGIN=0x800060
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=64K
|
||||
DATA_ORIGIN=0x800060
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=8K
|
||||
DATA_ORIGIN=0x800060
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=128K
|
||||
DATA_ORIGIN=0x800060
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=128K
|
||||
DATA_ORIGIN=0x800100
|
||||
DATA_LENGTH=0xff00
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=1024K
|
||||
DATA_ORIGIN=0x800200
|
||||
DATA_LENGTH=0xfe00
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -1,13 +1,19 @@
|
||||
ARCH=avr:100
|
||||
MACHINE=
|
||||
SCRIPT_NAME=avrtiny
|
||||
SCRIPT_NAME=avr
|
||||
OUTPUT_FORMAT="elf32-avr"
|
||||
MAXPAGESIZE=1
|
||||
EMBEDDED=yes
|
||||
TEMPLATE_NAME=elf32
|
||||
|
||||
TEXT_ORIGIN=0x0
|
||||
TEXT_LENGTH=4K
|
||||
DATA_ORIGIN=0x0800040
|
||||
DATA_LENGTH=0x100
|
||||
RODATA_PM_OFFSET=0x4000
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=config
|
||||
|
||||
FUSE_LENGTH=2
|
||||
LOCK_LENGTH=2
|
||||
SIGNATURE_LENGTH=4
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=1024K
|
||||
DATA_ORIGIN=0x802000
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=1024K
|
||||
DATA_ORIGIN=0x802000
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -11,3 +11,11 @@ DATA_ORIGIN=0x802000
|
||||
DATA_LENGTH=0xffa0
|
||||
RODATA_PM_OFFSET=0x8000
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=1024K
|
||||
DATA_ORIGIN=0x802000
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=1024K
|
||||
DATA_ORIGIN=0x802000
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=1024K
|
||||
DATA_ORIGIN=0x802000
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -10,3 +10,11 @@ TEXT_LENGTH=1024K
|
||||
DATA_ORIGIN=0x802000
|
||||
DATA_LENGTH=0xffa0
|
||||
EXTRA_EM_FILE=avrelf
|
||||
|
||||
FUSE_NAME=fuse
|
||||
|
||||
EEPROM_LENGTH=64K
|
||||
FUSE_LENGTH=1K
|
||||
LOCK_LENGTH=1K
|
||||
SIGNATURE_LENGTH=1K
|
||||
USER_SIGNATURE_LENGTH=1K
|
||||
|
@ -27,29 +27,21 @@ OUTPUT_ARCH(${ARCH})
|
||||
|
||||
__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : $TEXT_LENGTH;
|
||||
__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : $DATA_LENGTH;
|
||||
__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : 64K;
|
||||
__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 1K;
|
||||
__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 1K;
|
||||
__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 1K;
|
||||
__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K;
|
||||
EOF
|
||||
|
||||
if test -n "$RODATA_PM_OFFSET"; then
|
||||
cat <<EOF
|
||||
__RODATA_PM_OFFSET__ = DEFINED(__RODATA_PM_OFFSET__) ? __RODATA_PM_OFFSET__ : $RODATA_PM_OFFSET;
|
||||
EOF
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
${EEPROM_LENGTH+__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : $EEPROM_LENGTH;}
|
||||
__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : $FUSE_LENGTH;
|
||||
__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : $LOCK_LENGTH;
|
||||
__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : $SIGNATURE_LENGTH;
|
||||
${USER_SIGNATURE_LENGTH+__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : $USER_SIGNATURE_LENGTH;}
|
||||
${RODATA_PM_OFFSET+__RODATA_PM_OFFSET__ = DEFINED(__RODATA_PM_OFFSET__) ? __RODATA_PM_OFFSET__ : $RODATA_PM_OFFSET;}
|
||||
MEMORY
|
||||
{
|
||||
text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__
|
||||
data (rw!x) : ORIGIN = $DATA_ORIGIN, LENGTH = __DATA_REGION_LENGTH__
|
||||
eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__
|
||||
fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__
|
||||
${EEPROM_LENGTH+ eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__}
|
||||
$FUSE_NAME (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__
|
||||
lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__
|
||||
signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__
|
||||
user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__
|
||||
${USER_SIGNATURE_LENGTH+ user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__}
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
@ -271,6 +263,10 @@ cat <<EOF
|
||||
${RELOCATING+ _end = . ; }
|
||||
${RELOCATING+ PROVIDE (__heap_start = .) ; }
|
||||
} ${RELOCATING+ > data}
|
||||
EOF
|
||||
|
||||
if test -n "${EEPROM_LENGTH}"; then
|
||||
cat <<EOF
|
||||
|
||||
.eeprom ${RELOCATING-0}:
|
||||
{
|
||||
@ -278,6 +274,11 @@ cat <<EOF
|
||||
KEEP(*(.eeprom*))
|
||||
${RELOCATING+ __eeprom_end = . ; }
|
||||
} ${RELOCATING+ > eeprom}
|
||||
EOF
|
||||
fi
|
||||
|
||||
if test "$FUSE_NAME" = "fuse" ; then
|
||||
cat <<EOF
|
||||
|
||||
.fuse ${RELOCATING-0}:
|
||||
{
|
||||
@ -286,6 +287,10 @@ cat <<EOF
|
||||
KEEP(*(.hfuse))
|
||||
KEEP(*(.efuse))
|
||||
} ${RELOCATING+ > fuse}
|
||||
EOF
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
|
||||
.lock ${RELOCATING-0}:
|
||||
{
|
||||
@ -296,6 +301,19 @@ cat <<EOF
|
||||
{
|
||||
KEEP(*(.signature*))
|
||||
} ${RELOCATING+ > signature}
|
||||
EOF
|
||||
|
||||
if test "$FUSE_NAME" = "config" ; then
|
||||
cat <<EOF
|
||||
|
||||
.config ${RELOCATING-0}:
|
||||
{
|
||||
KEEP(*(.config*))
|
||||
} ${RELOCATING+ > config}
|
||||
EOF
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
|
@ -1,262 +0,0 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
||||
cat <<EOF
|
||||
/* Copyright (C) 2014-2017 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}","${OUTPUT_FORMAT}","${OUTPUT_FORMAT}")
|
||||
OUTPUT_ARCH(${ARCH})
|
||||
|
||||
__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : $TEXT_LENGTH;
|
||||
__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : $DATA_LENGTH;
|
||||
__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 2;
|
||||
__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 2;
|
||||
__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 4;
|
||||
__RODATA_PM_OFFSET__ = DEFINED(__RODATA_PM_OFFSET__) ? __RODATA_PM_OFFSET__ : 0x4000;
|
||||
|
||||
MEMORY
|
||||
{
|
||||
text (rx) : ORIGIN = $TEXT_ORIGIN, LENGTH = __TEXT_REGION_LENGTH__
|
||||
data (rw!x) : ORIGIN = $DATA_ORIGIN, LENGTH = __DATA_REGION_LENGTH__
|
||||
|
||||
/* Provide offsets for config, lock and signature to match
|
||||
production file format. Ignore offsets in datasheet. */
|
||||
|
||||
config (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__
|
||||
lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__
|
||||
signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
/* Read-only sections, merged into text segment: */
|
||||
${TEXT_DYNAMIC+${DYNAMIC}}
|
||||
.hash ${RELOCATING-0} : { *(.hash) }
|
||||
.dynsym ${RELOCATING-0} : { *(.dynsym) }
|
||||
.dynstr ${RELOCATING-0} : { *(.dynstr) }
|
||||
.gnu.version ${RELOCATING-0} : { *(.gnu.version) }
|
||||
.gnu.version_d ${RELOCATING-0} : { *(.gnu.version_d) }
|
||||
.gnu.version_r ${RELOCATING-0} : { *(.gnu.version_r) }
|
||||
|
||||
.rel.init ${RELOCATING-0} : { *(.rel.init) }
|
||||
.rela.init ${RELOCATING-0} : { *(.rela.init) }
|
||||
.rel.text ${RELOCATING-0} :
|
||||
{
|
||||
*(.rel.text)
|
||||
${RELOCATING+*(.rel.text.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.t*)}
|
||||
}
|
||||
.rela.text ${RELOCATING-0} :
|
||||
{
|
||||
*(.rela.text)
|
||||
${RELOCATING+*(.rela.text.*)}
|
||||
${RELOCATING+*(.rela.gnu.linkonce.t*)}
|
||||
}
|
||||
.rel.fini ${RELOCATING-0} : { *(.rel.fini) }
|
||||
.rela.fini ${RELOCATING-0} : { *(.rela.fini) }
|
||||
.rel.rodata ${RELOCATING-0} :
|
||||
{
|
||||
*(.rel.rodata)
|
||||
${RELOCATING+*(.rel.rodata.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.r*)}
|
||||
}
|
||||
.rela.rodata ${RELOCATING-0} :
|
||||
{
|
||||
*(.rela.rodata)
|
||||
${RELOCATING+*(.rela.rodata.*)}
|
||||
${RELOCATING+*(.rela.gnu.linkonce.r*)}
|
||||
}
|
||||
.rel.data ${RELOCATING-0} :
|
||||
{
|
||||
*(.rel.data)
|
||||
${RELOCATING+*(.rel.data.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.d*)}
|
||||
}
|
||||
.rela.data ${RELOCATING-0} :
|
||||
{
|
||||
*(.rela.data)
|
||||
${RELOCATING+*(.rela.data.*)}
|
||||
${RELOCATING+*(.rela.gnu.linkonce.d*)}
|
||||
}
|
||||
.rel.ctors ${RELOCATING-0} : { *(.rel.ctors) }
|
||||
.rela.ctors ${RELOCATING-0} : { *(.rela.ctors) }
|
||||
.rel.dtors ${RELOCATING-0} : { *(.rel.dtors) }
|
||||
.rela.dtors ${RELOCATING-0} : { *(.rela.dtors) }
|
||||
.rel.got ${RELOCATING-0} : { *(.rel.got) }
|
||||
.rela.got ${RELOCATING-0} : { *(.rela.got) }
|
||||
.rel.bss ${RELOCATING-0} : { *(.rel.bss) }
|
||||
.rela.bss ${RELOCATING-0} : { *(.rela.bss) }
|
||||
.rel.plt ${RELOCATING-0} : { *(.rel.plt) }
|
||||
.rela.plt ${RELOCATING-0} : { *(.rela.plt) }
|
||||
|
||||
/* Internal text space or external memory. */
|
||||
.text ${RELOCATING-0} :
|
||||
{
|
||||
*(.vectors)
|
||||
KEEP(*(.vectors))
|
||||
|
||||
/* For data that needs to reside in the lower 64k of progmem. */
|
||||
${RELOCATING+ *(.progmem.gcc*)}
|
||||
|
||||
/* PR 13812: Placing the trampolines here gives a better chance
|
||||
that they will be in range of the code that uses them. */
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
${CONSTRUCTING+ __trampolines_start = . ; }
|
||||
/* The jump trampolines for the 16-bit limited relocs will reside here. */
|
||||
*(.trampolines)
|
||||
${RELOCATING+ *(.trampolines*)}
|
||||
${CONSTRUCTING+ __trampolines_end = . ; }
|
||||
|
||||
/* avr-libc expects these data to reside in lower 64K. */
|
||||
${RELOCATING+ *libprintf_flt.a:*(.progmem.data)}
|
||||
${RELOCATING+ *libc.a:*(.progmem.data)}
|
||||
|
||||
${RELOCATING+ *(.progmem*)}
|
||||
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
|
||||
/* For future tablejump instruction arrays for 3 byte pc devices.
|
||||
We don't relax jump/call instructions within these sections. */
|
||||
*(.jumptables)
|
||||
${RELOCATING+ *(.jumptables*)}
|
||||
|
||||
/* For code that needs to reside in the lower 128k progmem. */
|
||||
*(.lowtext)
|
||||
${RELOCATING+ *(.lowtext*)}
|
||||
|
||||
${CONSTRUCTING+ __ctors_start = . ; }
|
||||
${CONSTRUCTING+ *(.ctors) }
|
||||
${CONSTRUCTING+ __ctors_end = . ; }
|
||||
${CONSTRUCTING+ __dtors_start = . ; }
|
||||
${CONSTRUCTING+ *(.dtors) }
|
||||
${CONSTRUCTING+ __dtors_end = . ; }
|
||||
KEEP(SORT(*)(.ctors))
|
||||
KEEP(SORT(*)(.dtors))
|
||||
|
||||
/* From this point on, we don't bother about wether the insns are
|
||||
below or above the 16 bits boundary. */
|
||||
*(.init0) /* Start here after reset. */
|
||||
KEEP (*(.init0))
|
||||
*(.init1)
|
||||
KEEP (*(.init1))
|
||||
*(.init2) /* Clear __zero_reg__, set up stack pointer. */
|
||||
KEEP (*(.init2))
|
||||
*(.init3)
|
||||
KEEP (*(.init3))
|
||||
*(.init4) /* Initialize data and BSS. */
|
||||
KEEP (*(.init4))
|
||||
*(.init5)
|
||||
KEEP (*(.init5))
|
||||
*(.init6) /* C++ constructors. */
|
||||
KEEP (*(.init6))
|
||||
*(.init7)
|
||||
KEEP (*(.init7))
|
||||
*(.init8)
|
||||
KEEP (*(.init8))
|
||||
*(.init9) /* Call main(). */
|
||||
KEEP (*(.init9))
|
||||
*(.text)
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
${RELOCATING+ *(.text.*)}
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
*(.fini9) /* _exit() starts here. */
|
||||
KEEP (*(.fini9))
|
||||
*(.fini8)
|
||||
KEEP (*(.fini8))
|
||||
*(.fini7)
|
||||
KEEP (*(.fini7))
|
||||
*(.fini6) /* C++ destructors. */
|
||||
KEEP (*(.fini6))
|
||||
*(.fini5)
|
||||
KEEP (*(.fini5))
|
||||
*(.fini4)
|
||||
KEEP (*(.fini4))
|
||||
*(.fini3)
|
||||
KEEP (*(.fini3))
|
||||
*(.fini2)
|
||||
KEEP (*(.fini2))
|
||||
*(.fini1)
|
||||
KEEP (*(.fini1))
|
||||
*(.fini0) /* Infinite loop after program termination. */
|
||||
KEEP (*(.fini0))
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > text}
|
||||
|
||||
.rodata ${RELOCATING+ ADDR(.text) + SIZEOF (.text) + __RODATA_PM_OFFSET__ } ${RELOCATING-0} :
|
||||
{
|
||||
*(.rodata)
|
||||
${RELOCATING+ *(.rodata*)}
|
||||
*(.gnu.linkonce.r*)
|
||||
} ${RELOCATING+AT> text}
|
||||
|
||||
.data ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+ PROVIDE (__data_start = .) ; }
|
||||
*(.data)
|
||||
${RELOCATING+ *(.data*)}
|
||||
*(.gnu.linkonce.d*)
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
${RELOCATING+ _edata = . ; }
|
||||
${RELOCATING+ PROVIDE (__data_end = .) ; }
|
||||
} ${RELOCATING+ > data ${RELOCATING+AT> text}}
|
||||
|
||||
.bss ${RELOCATING+ ADDR(.data) + SIZEOF (.data)} ${RELOCATING-0} :${RELOCATING+ AT (ADDR (.bss))}
|
||||
{
|
||||
${RELOCATING+ PROVIDE (__bss_start = .) ; }
|
||||
*(.bss)
|
||||
${RELOCATING+ *(.bss*)}
|
||||
*(COMMON)
|
||||
${RELOCATING+ PROVIDE (__bss_end = .) ; }
|
||||
} ${RELOCATING+ > data}
|
||||
|
||||
${RELOCATING+ __data_load_start = LOADADDR(.data); }
|
||||
${RELOCATING+ __data_load_end = __data_load_start + SIZEOF(.data); }
|
||||
|
||||
/* Global data not cleared after reset. */
|
||||
.noinit ${RELOCATING+ ADDR(.bss) + SIZEOF (.bss)} ${RELOCATING-0} : ${RELOCATING+ AT (ADDR (.noinit))}
|
||||
{
|
||||
${RELOCATING+ PROVIDE (__noinit_start = .) ; }
|
||||
*(.noinit*)
|
||||
${RELOCATING+ PROVIDE (__noinit_end = .) ; }
|
||||
${RELOCATING+ _end = . ; }
|
||||
${RELOCATING+ PROVIDE (__heap_start = .) ; }
|
||||
} ${RELOCATING+ > data}
|
||||
|
||||
.lock ${RELOCATING-0}:
|
||||
{
|
||||
KEEP(*(.lock*))
|
||||
} ${RELOCATING+ > lock}
|
||||
|
||||
.signature ${RELOCATING-0}:
|
||||
{
|
||||
KEEP(*(.signature*))
|
||||
} ${RELOCATING+ > signature}
|
||||
|
||||
.config ${RELOCATING-0}:
|
||||
{
|
||||
KEEP(*(.config*))
|
||||
} ${RELOCATING+ > config}
|
||||
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
.note.gnu.build-id : { *(.note.gnu.build-id) }
|
||||
EOF
|
||||
|
||||
. $srcdir/scripttempl/DWARF.sc
|
||||
|
||||
cat <<EOF
|
||||
}
|
||||
EOF
|
Loading…
x
Reference in New Issue
Block a user