X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=ld%2Fscripttempl%2Favr.sc;h=05c0b890f050fe3cb2bc3db04178fef69cfbb02a;hb=77486630b13e9e586b0a1556cba9876a0ede99da;hp=74f7ae4009dd7a792e20555d5676cc26d0a6f94a;hpb=0c9b4fee1ceae98658e8553555d0e23ec5be6e64;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/scripttempl/avr.sc b/ld/scripttempl/avr.sc index 74f7ae4009..05c0b890f0 100644 --- a/ld/scripttempl/avr.sc +++ b/ld/scripttempl/avr.sc @@ -1,14 +1,53 @@ +# 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. + +# RODATA_PM_OFFSET +# If empty, .rodata sections will be part of .data. This is for +# devices where it is not possible to use LD* instructions to read +# from flash. +# +# If non-empty, .rodata is not part of .data and the .rodata +# objects are assigned addresses at an offest of RODATA_PM_OFFSET. +# This is for devices that feature reading from flash by means of +# LD* instructions, provided the addresses are offset by +# __RODATA_PM_OFFSET__ (which defaults to RODATA_PM_OFFSET). + cat < text} +EOF - .data ${RELOCATING-0} : ${RELOCATING+AT (ADDR (.text) + SIZEOF (.text))} +# Devices like ATtiny816 allow to read from flash memory by means of LD* +# instructions provided we add an offset of __RODATA_PM_OFFSET__ to the +# flash addresses. + +if test -n "$RODATA_PM_OFFSET"; then + cat < text} +EOF +fi + +cat < data} + } ${RELOCATING+ > data ${RELOCATING+AT> text}} - .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} : + .bss ${RELOCATING+ ADDR(.data) + SIZEOF (.data)} ${RELOCATING-0} :${RELOCATING+ AT (ADDR (.bss))} { ${RELOCATING+ PROVIDE (__bss_start = .) ; } *(.bss) - *(COMMON) + ${RELOCATING+ *(.bss*)} + ${RELOCATING+ *(COMMON)} ${RELOCATING+ PROVIDE (__bss_end = .) ; } } ${RELOCATING+ > data} @@ -135,7 +268,7 @@ SECTIONS ${RELOCATING+ __data_load_end = __data_load_start + SIZEOF(.data); } /* Global data not cleared after reset. */ - .noinit ${RELOCATING+ SIZEOF(.bss) + ADDR(.bss)} : + .noinit ${RELOCATING+ ADDR(.bss) + SIZEOF (.bss)} ${RELOCATING-0}: ${RELOCATING+ AT (ADDR (.noinit))} { ${RELOCATING+ PROVIDE (__noinit_start = .) ; } *(.noinit*) @@ -143,13 +276,57 @@ SECTIONS ${RELOCATING+ _end = . ; } ${RELOCATING+ PROVIDE (__heap_start = .) ; } } ${RELOCATING+ > data} +EOF + +if test -n "${EEPROM_LENGTH}"; then +cat < eeprom} +EOF +fi + +if test "$FUSE_NAME" = "fuse" ; then +cat < fuse} +EOF +fi + +cat < lock} + + .signature ${RELOCATING-0}: + { + KEEP(*(.signature*)) + } ${RELOCATING+ > signature} +EOF + +if test "$FUSE_NAME" = "config" ; then +cat < config} +EOF +fi + +cat <