X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=ld%2Fscripttempl%2Felf32crx.sc;h=7d5289a0ab14982d76d6fa68403151282cc9b2cf;hb=acdf84a65400f416c60a0c9c14953ba5a73fb0cd;hp=b69bc24e1cb58c6fe8ffaed7e4060c2a76a1d435;hpb=6f2750feaf2827ef8a1a0a5b2f90c1e9a6cabbd1;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/scripttempl/elf32crx.sc b/ld/scripttempl/elf32crx.sc index b69bc24e1c..7d5289a0ab 100644 --- a/ld/scripttempl/elf32crx.sc +++ b/ld/scripttempl/elf32crx.sc @@ -1,11 +1,15 @@ # Linker Script for National Semiconductor's CRX-ELF32. # -# Copyright (C) 2014-2016 Free Software Foundation, Inc. -# +# Copyright (C) 2014-2020 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. +# Using an empty script for ld -r is better than mashing together +# sections. This hack likely leaves ld -Ur broken. +test -n "${RELOCATING}" || exit 0 + # The next line should be uncommented if it is desired to link # without libstart.o and directly enter main. @@ -16,7 +20,7 @@ cat < rom .fini : - { - __FINI_START = .; - KEEP (*(.fini)) - __FINI_END = .; + { + __FINI_START = .; + KEEP (*(SORT_NONE(.fini))) + __FINI_END = .; } > rom .jcr : - { + { KEEP (*(.jcr)) } > rom - .text : + .text : { __TEXT_START = .; *(.text) *(.text.*) *(.gnu.linkonce.t.*) @@ -84,9 +88,9 @@ SECTIONS __RDATA_END = .; } > rom - .ctor ALIGN(4) : - { - __CTOR_START = .; + .ctor ALIGN(4) : + { + __CTOR_START = .; /* The compiler uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it @@ -99,7 +103,7 @@ SECTIONS KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) - + /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the @@ -108,18 +112,18 @@ SECTIONS KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) - __CTOR_END = .; + __CTOR_END = .; } > rom - .dtor ALIGN(4) : - { - __DTOR_START = .; + .dtor ALIGN(4) : + { + __DTOR_START = .; KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) - __DTOR_END = .; + __DTOR_END = .; } > rom .data :