OSDN Git Service

* scripttempl/elf.sc (NO_REL_RELOCS, NO_RELA_RELOCS, NON_ALLOC_DYN):
authoramodra <amodra>
Wed, 22 Oct 2008 05:20:43 +0000 (05:20 +0000)
committeramodra <amodra>
Wed, 22 Oct 2008 05:20:43 +0000 (05:20 +0000)
Handle these defines.
* emulparams/criself.sh, * emulparams/crislinux.sh,
* emulparams/elf32am33lin.sh, * emulparams/elf32fr30.sh,
* emulparams/elf32_i860.sh, * emulparams/elf32ip2k.sh,
* emulparams/elf32mcore.sh, * emulparams/elf32ppccommon.sh,
* emulparams/elf32ppcwindiss.sh, * emulparams/elf32_sparc.sh,
* emulparams/elf32_spu.sh, * emulparams/elf32vax.sh,
* emulparams/elf64alpha.sh, * emulparams/elf64mmix.sh,
* emulparams/elf64ppc.sh, * emulparams/elf64_s390.sh,
* emulparams/elf64_sparc.sh, * emulparams/elf_s390.sh,
* emulparams/elf_x86_64.sh, * emulparams/h8300elf.sh,
* emulparams/hppa64linux.sh, * emulparams/hppalinux.sh,
* emulparams/m68kelf.sh, * emulparams/mn10200.sh,
* emulparams/pjelf.sh, * emulparams/ppclynx.sh,
* emulparams/shelf32.sh, * emulparams/shelf_nto.sh,
* emulparams/shelf.sh, * emulparams/shelf_vxworks.sh,
* emulparams/shlelf32_linux.sh, * emulparams/shlelf_linux.sh,
* emulparams/shlelf_nto.sh (NO_REL_RELOCS): Set.
* emulparams/arcelf.sh, * emulparams/elf32_i960.sh,
* emulparams/elf32openrisc.sh, * emulparams/elf_i386_be.sh,
* emulparams/elf_i386_ldso.sh, * emulparams/elf_i386.sh,
* emulparams/elf_i386_vxworks.sh, * emulparams/i386lynx.sh,
* emulparams/i386moss.sh, * emulparams/i386nto.sh,
* emulparams/or32elf.sh, * emulparams/scoreelf.sh (NO_RELA_RELOCS): Set.

47 files changed:
ld/ChangeLog
ld/emulparams/arcelf.sh
ld/emulparams/criself.sh
ld/emulparams/crislinux.sh
ld/emulparams/elf32_i860.sh
ld/emulparams/elf32_i960.sh
ld/emulparams/elf32_sparc.sh
ld/emulparams/elf32_spu.sh
ld/emulparams/elf32am33lin.sh
ld/emulparams/elf32fr30.sh
ld/emulparams/elf32ip2k.sh
ld/emulparams/elf32mcore.sh
ld/emulparams/elf32openrisc.sh
ld/emulparams/elf32ppccommon.sh
ld/emulparams/elf32ppcwindiss.sh
ld/emulparams/elf32vax.sh
ld/emulparams/elf64_s390.sh
ld/emulparams/elf64_sparc.sh
ld/emulparams/elf64alpha.sh
ld/emulparams/elf64mmix.sh
ld/emulparams/elf64ppc.sh
ld/emulparams/elf_i386.sh
ld/emulparams/elf_i386_be.sh
ld/emulparams/elf_i386_ldso.sh
ld/emulparams/elf_i386_vxworks.sh
ld/emulparams/elf_s390.sh
ld/emulparams/elf_x86_64.sh
ld/emulparams/h8300elf.sh
ld/emulparams/hppa64linux.sh
ld/emulparams/hppalinux.sh
ld/emulparams/i386lynx.sh
ld/emulparams/i386moss.sh
ld/emulparams/i386nto.sh
ld/emulparams/m68kelf.sh
ld/emulparams/mn10200.sh
ld/emulparams/or32elf.sh
ld/emulparams/pjelf.sh
ld/emulparams/ppclynx.sh
ld/emulparams/scoreelf.sh
ld/emulparams/shelf.sh
ld/emulparams/shelf32.sh
ld/emulparams/shelf_nto.sh
ld/emulparams/shelf_vxworks.sh
ld/emulparams/shlelf32_linux.sh
ld/emulparams/shlelf_linux.sh
ld/emulparams/shlelf_nto.sh
ld/scripttempl/elf.sc

index 7677999..8e8cfa1 100644 (file)
@@ -1,5 +1,33 @@
 2008-10-22  Alan Modra  <amodra@bigpond.net.au>
 
+       * scripttempl/elf.sc (NO_REL_RELOCS, NO_RELA_RELOCS, NON_ALLOC_DYN): 
+       Handle these defines.
+       * emulparams/criself.sh, * emulparams/crislinux.sh,
+       * emulparams/elf32am33lin.sh, * emulparams/elf32fr30.sh,
+       * emulparams/elf32_i860.sh, * emulparams/elf32ip2k.sh,
+       * emulparams/elf32mcore.sh, * emulparams/elf32ppccommon.sh,
+       * emulparams/elf32ppcwindiss.sh, * emulparams/elf32_sparc.sh,
+       * emulparams/elf32_spu.sh, * emulparams/elf32vax.sh,
+       * emulparams/elf64alpha.sh, * emulparams/elf64mmix.sh,
+       * emulparams/elf64ppc.sh, * emulparams/elf64_s390.sh,
+       * emulparams/elf64_sparc.sh, * emulparams/elf_s390.sh,
+       * emulparams/elf_x86_64.sh, * emulparams/h8300elf.sh,
+       * emulparams/hppa64linux.sh, * emulparams/hppalinux.sh,
+       * emulparams/m68kelf.sh, * emulparams/mn10200.sh,
+       * emulparams/pjelf.sh, * emulparams/ppclynx.sh,
+       * emulparams/shelf32.sh, * emulparams/shelf_nto.sh,
+       * emulparams/shelf.sh, * emulparams/shelf_vxworks.sh,
+       * emulparams/shlelf32_linux.sh, * emulparams/shlelf_linux.sh,
+       * emulparams/shlelf_nto.sh (NO_REL_RELOCS): Set.
+       * emulparams/arcelf.sh, * emulparams/elf32_i960.sh,
+       * emulparams/elf32openrisc.sh, * emulparams/elf_i386_be.sh,
+       * emulparams/elf_i386_ldso.sh, * emulparams/elf_i386.sh,
+       * emulparams/elf_i386_vxworks.sh, * emulparams/i386lynx.sh,
+       * emulparams/i386moss.sh, * emulparams/i386nto.sh,
+       * emulparams/or32elf.sh, * emulparams/scoreelf.sh (NO_RELA_RELOCS): Set.
+
+2008-10-22  Alan Modra  <amodra@bigpond.net.au>
+
        * ldlang.c (lang_output_section_find_by_flags): Handle non-alloc
        sections.
        * emultempl/elf32.em (enum orphan_save_index): Add orphan_nonalloc.
index 31db4a9..cd334d6 100644 (file)
@@ -4,6 +4,7 @@ EXTRA_EM_FILE=genelf
 OUTPUT_FORMAT="elf32-littlearc"
 LITTLE_OUTPUT_FORMAT="elf32-littlearc"
 BIG_OUTPUT_FORMAT="elf32-bigarc"
+NO_RELA_RELOCS=yes
 TEXT_START_ADDR=0x0
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 ARCH=arc
index 1d374ae..f709a1b 100644 (file)
@@ -5,6 +5,7 @@ TEMPLATE_NAME=elf32
 
 # Symbols have underscore prepended.
 OUTPUT_FORMAT="elf32-us-cris"
+NO_REL_RELOCS=yes
 ARCH=cris
 MAXPAGESIZE=32
 ENTRY=__start
index e41024c..8a1a5b8 100644 (file)
@@ -2,6 +2,7 @@
 MACHINE=
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-cris"
+NO_REL_RELOCS=yes
 ARCH=cris
 TEMPLATE_NAME=elf32
 
index 589067f..482e3d1 100644 (file)
@@ -5,6 +5,7 @@ EXTRA_EM_FILE=genelf
 OUTPUT_FORMAT="elf32-i860-little"
 BIG_OUTPUT_FORMAT="elf32-i860"
 LITTLE_OUTPUT_FORMAT="elf32-i860-little"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0
 PAGE_SIZE=0x1000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
index 1ef7292..56d91d7 100644 (file)
@@ -1,6 +1,7 @@
 SCRIPT_NAME=elf
 TEMPLATE_NAME=elf32
 OUTPUT_FORMAT="elf32-i960"
+NO_RELA_RELOCS=yes
 ARCH=i960
 MACHINE=
 TEXT_START_ADDR=0
index 3db6d88..aef813e 100644 (file)
@@ -3,6 +3,7 @@
 
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-sparc"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x10000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
index 8248d5d..1ed58c3 100644 (file)
@@ -2,6 +2,7 @@ SCRIPT_NAME=elf
 TEMPLATE_NAME=elf32
 EXTRA_EM_FILE=spuelf
 OUTPUT_FORMAT="elf32-spu"
+NO_REL_RELOCS=yes
 ARCH=spu
 MACHINE=
 ALIGNMENT=16
index 2f8b962..b34d2b8 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-am33lin"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x8000000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 ARCH=mn10300
index d078155..1764a32 100755 (executable)
@@ -3,6 +3,7 @@ SCRIPT_NAME=elf
 TEMPLATE_NAME=generic
 EXTRA_EM_FILE=genelf
 OUTPUT_FORMAT="elf32-fr30"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x10000
 ARCH=fr30
 MAXPAGESIZE=256
index 17fb7ab..0db227f 100644 (file)
@@ -2,6 +2,7 @@ TEMPLATE_NAME=elf32
 MACHINE=
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-ip2k"
+NO_REL_RELOCS=yes
 # See also `include/elf/ip2k.h'
 DATA_ADDR=0x01000100
 TEXT_START_ADDR=0x02010000
index 31d65dc..6047950 100644 (file)
@@ -2,6 +2,7 @@ SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-mcore-little"
 BIG_OUTPUT_FORMAT="elf32-mcore-big"
 LITTLE_OUTPUT_FORMAT="elf32-mcore-little"
+NO_REL_RELOCS=yes
 PAGE_SIZE=0x1000
 TARGET_PAGE_SIZE=0x400
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
index 53e88dd..bbe9a3e 100755 (executable)
@@ -1,6 +1,7 @@
 MACHINE=
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-openrisc"
+NO_RELA_RELOCS=yes
 TEXT_START_ADDR=0x10000
 ARCH=openrisc
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
index 1a12890..15cb3b1 100644 (file)
@@ -5,6 +5,7 @@ GENERATE_SHLIB_SCRIPT=yes
 GENERATE_PIE_SCRIPT=yes
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-powerpc"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x01800000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
index d217de9..b40d782 100644 (file)
@@ -1,6 +1,7 @@
 TEMPLATE_NAME=elf32
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-powerpc"
+NO_REL_RELOCS=yes
 ARCH=powerpc
 MACHINE=
 EMBEDDED=yes
index 4c6ef39..9ddc754 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-vax"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x10000
 case ${LD_FLAG} in
     n|N)       TEXT_START_ADDR=0x1000 ;;
index ede836c..ae8f26e 100644 (file)
@@ -1,6 +1,7 @@
 SCRIPT_NAME=elf
 ELFSIZE=64
 OUTPUT_FORMAT="elf64-s390"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x80000000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
index 03cab9e..9397b87 100644 (file)
@@ -2,6 +2,7 @@ SCRIPT_NAME=elf
 ELFSIZE=64
 TEMPLATE_NAME=elf32
 OUTPUT_FORMAT="elf64-sparc"
+NO_REL_RELOCS=yes
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
 ARCH="sparc:v9"
index a42e75d..82f505d 100644 (file)
@@ -4,6 +4,7 @@ ELFSIZE=64
 TEMPLATE_NAME=elf32
 EXTRA_EM_FILE=alphaelf
 OUTPUT_FORMAT="elf64-alpha"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR="0x120000000"
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
index 7f867fb..787b50d 100644 (file)
@@ -3,6 +3,7 @@ GENERATE_SHLIB_SCRIPT=yes
 ELFSIZE=64
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf64-mmix"
+NO_REL_RELOCS=yes
 ENTRY=_start.
 
 # Default to 0 as mmixal does.
index 8b0c587..b9631b6 100644 (file)
@@ -5,6 +5,7 @@ GENERATE_SHLIB_SCRIPT=yes
 GENERATE_PIE_SCRIPT=yes
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf64-powerpc"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x10000000
 #SEGMENT_SIZE=0x10000000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
index 908515a..05d31a8 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-i386"
+NO_RELA_RELOCS=yes
 TEXT_START_ADDR=0x08048000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
index b61738c..efe1a86 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-i386"
+NO_RELA_RELOCS=yes
 TEXT_START_ADDR=0x80000000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 ARCH=i386
index b4ac960..4b0d3fb 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-i386"
+NO_RELA_RELOCS=yes
 TEXT_START_ADDR=0x08048000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 ARCH=i386
index 90a98b3..6933128 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-i386-vxworks"
+NO_RELA_RELOCS=yes
 TEXT_START_ADDR=0x08048000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
index e252e8e..218558b 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-s390"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x00400000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
index cdd4119..4b24710 100644 (file)
@@ -1,6 +1,7 @@
 SCRIPT_NAME=elf
 ELFSIZE=64
 OUTPUT_FORMAT="elf64-x86-64"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x400000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
index fb4db40..38b8a36 100644 (file)
@@ -3,6 +3,7 @@
 
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-h8300"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x100
 MAXPAGESIZE=2
 TARGET_PAGE_SIZE=128
index 1af8e37..92939bf 100644 (file)
@@ -5,6 +5,7 @@ SCRIPT_NAME=elf
 ELFSIZE=64
 # FIXME: this output format is for hpux.
 OUTPUT_FORMAT="elf64-hppa-linux"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x10000
 TARGET_PAGE_SIZE=0x10000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
index 4c4f943..9fa4615 100644 (file)
@@ -4,6 +4,7 @@
 SCRIPT_NAME=elf
 ELFSIZE=32
 OUTPUT_FORMAT="elf32-hppa-linux"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x10000
 TARGET_PAGE_SIZE=0x10000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
index 6d9d9fe..93afb3d 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-i386"
+NO_RELA_RELOCS=yes
 ENTRY=_main
 TEXT_BASE=0x0
 DYN_TEXT_BASE=0x00400000
index 81161b7..095d85a 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-i386"
+NO_RELA_RELOCS=yes
 TEXT_START_ADDR=0x00002000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 ARCH=i386
index 078289c..626f9c1 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-i386"
+NO_RELA_RELOCS=yes
 TEXT_START_ADDR=0x08048000
 TEXT_START_SYMBOLS='_btext = .;'
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
index f8dab2b..66da648 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-m68k"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x80000000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
index 74f48d0..9cec0b5 100644 (file)
@@ -5,6 +5,7 @@ SCRIPT_NAME=elf
 TEMPLATE_NAME=generic
 EXTRA_EM_FILE=genelf
 OUTPUT_FORMAT="elf32-mn10200"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x0
 ARCH=mn10200
 MACHINE=
index 5cb3208..5d85b04 100644 (file)
@@ -2,6 +2,7 @@ SCRIPT_NAME=elf
 TEMPLATE_NAME=generic
 EXTRA_EM_FILE=genelf
 OUTPUT_FORMAT="elf32-or32"
+NO_RELA_RELOCS=yes
 TEXT_START_ADDR=0x1000000
 TARGET_PAGE_SIZE=0x1000000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
index e4d2fa5..37f0034 100644 (file)
@@ -2,6 +2,7 @@ SCRIPT_NAME=elf
 TEMPLATE_NAME=generic
 EXTRA_EM_FILE=genelf
 OUTPUT_FORMAT="elf32-pj"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x1000000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 ARCH=pj
index 4203908..76aefd6 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-powerpc"
+NO_REL_RELOCS=yes
 TEXT_BASE=0x00002000
 DYN_TEXT_BASE=0x00400000
 TEXT_START_ADDR="(DEFINED(_DYNAMIC) ? ${DYN_TEXT_BASE} : ${TEXT_BASE})"
index 0ca5e56..dfb5aca 100644 (file)
@@ -4,6 +4,7 @@ TEMPLATE_NAME=elf32
 OUTPUT_FORMAT="elf32-bigscore"
 BIG_OUTPUT_FORMAT="elf32-bigscore"
 LITTLE_OUTPUT_FORMAT="elf32-littlescore"
+NO_RELA_RELOCS=yes
 GROUP="-lm -lc -lglsim -lgcc -lstdc++"
 
 TEXT_START_ADDR=0x00000000
index 6f66bf5..5757b81 100644 (file)
@@ -3,6 +3,7 @@
 
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-sh"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x1000
 MAXPAGESIZE=128
 ARCH=sh
index c72fadb..966bd30 100644 (file)
@@ -2,6 +2,7 @@
 # sh[l]elf(32|64).sh parameter scripts.
 SCRIPT_NAME=elf
 OUTPUT_FORMAT=${OUTPUT_FORMAT-"elf32-sh64"}
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x1000
 MAXPAGESIZE=128
 ARCH=sh
index 70a0610..c4d71aa 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-sh"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x08040000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 ARCH=sh
index a87d529..77619cb 100644 (file)
@@ -2,6 +2,7 @@
 # shlelf_vxworks.sh
 
 SCRIPT_NAME=elf
+NO_REL_RELOCS=yes
 BIG_OUTPUT_FORMAT="elf32-sh-vxworks"
 LITTLE_OUTPUT_FORMAT="elf32-shl-vxworks"
 OUTPUT_FORMAT="$BIG_OUTPUT_FORMAT"
index ba32e79..81aea39 100644 (file)
@@ -3,6 +3,7 @@
 
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-sh64-linux"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x400000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
index f91bb52..95b6acc 100644 (file)
@@ -3,6 +3,7 @@
 
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-sh-linux"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x400000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
index c6c04f6..16f6508 100644 (file)
@@ -1,5 +1,6 @@
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-shl"
+NO_REL_RELOCS=yes
 TEXT_START_ADDR=0x08040000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 ARCH=sh
index 5c35e4f..120db06 100644 (file)
@@ -36,6 +36,9 @@
 #      DATA_PLT - .plt should be in data segment, not text segment.
 #      PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement.
 #      BSS_PLT - .plt should be in bss segment
+#      NO_REL_RELOCS - Don't include .rel.* sections in script
+#      NO_RELA_RELOCS - Don't include .rela.* sections in script
+#      NON_ALLOC_DYN - Place dynamic sections after data segment.
 #      TEXT_DYNAMIC - .dynamic in text segment, not data segment.
 #      EMBEDDED - whether this is for an embedded system. 
 #      SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
@@ -268,6 +271,11 @@ SECTIONS
   ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
   ${INITIAL_READONLY_SECTIONS}
   .note.gnu.build-id : { *(.note.gnu.build-id) }
+EOF
+
+test -n "${RELOCATING+0}" || unset NON_ALLOC_DYN
+test -z "${NON_ALLOC_DYN}" || TEXT_DYNAMIC=
+cat > ldscripts/dyntmp.$$ <<EOF
   ${TEXT_DYNAMIC+${DYNAMIC}}
   .hash         ${RELOCATING-0} : { *(.hash) }
   .gnu.hash     ${RELOCATING-0} : { *(.gnu.hash) }
@@ -276,10 +284,10 @@ SECTIONS
   .gnu.version  ${RELOCATING-0} : { *(.gnu.version) }
   .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }
   .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }
-
 EOF
+
 if [ "x$COMBRELOC" = x ]; then
-  COMBRELOCCAT=cat
+  COMBRELOCCAT="cat >> ldscripts/dyntmp.$$"
 else
   COMBRELOCCAT="cat > $COMBRELOC"
 fi
@@ -316,27 +324,45 @@ eval $COMBRELOCCAT <<EOF
   .rela.bss     ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }
   ${REL_LARGE}
 EOF
+
 if [ -n "$COMBRELOC" ]; then
-cat <<EOF
+cat >> ldscripts/dyntmp.$$ <<EOF
   .rel.dyn      ${RELOCATING-0} :
     {
 EOF
-sed -e '/^[    ]*[{}][         ]*$/d;/:[       ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/      \1/' $COMBRELOC
-cat <<EOF
+sed -e '/^[    ]*[{}][         ]*$/d;/:[       ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/      \1/' $COMBRELOC >> ldscripts/dyntmp.$$
+cat >> ldscripts/dyntmp.$$ <<EOF
     }
   .rela.dyn     ${RELOCATING-0} :
     {
 EOF
-sed -e '/^[    ]*[{}][         ]*$/d;/:[       ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/      \1/' $COMBRELOC
-cat <<EOF
+sed -e '/^[    ]*[{}][         ]*$/d;/:[       ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/      \1/' $COMBRELOC >> ldscripts/dyntmp.$$
+cat >> ldscripts/dyntmp.$$ <<EOF
     }
 EOF
 fi
-cat <<EOF
+
+cat >> ldscripts/dyntmp.$$ <<EOF
   .rel.plt      ${RELOCATING-0} : { *(.rel.plt) }
   .rela.plt     ${RELOCATING-0} : { *(.rela.plt) }
   ${OTHER_PLT_RELOC_SECTIONS}
+EOF
 
+if test -z "${NON_ALLOC_DYN}"; then
+  if test -z "${NO_REL_RELOCS}${NO_RELA_RELOCS}"; then
+    cat ldscripts/dyntmp.$$
+  else
+    if test -z "${NO_REL_RELOCS}"; then
+      sed -e '/^[      ]*\.rela\.[^}]*$/,/}/d' -e '/^[         ]*\.rela\./d' ldscripts/dyntmp.$$
+    fi
+    if test -z "${NO_RELA_RELOCS}"; then
+      sed -e '/^[      ]*\.rel\.[^}]*$/,/}/d' -e '/^[  ]*\.rel\./d' ldscripts/dyntmp.$$
+    fi
+  fi
+  rm -f ldscripts/dyntmp.$$
+fi
+
+cat <<EOF
   .init         ${RELOCATING-0} : 
   { 
     ${RELOCATING+${INIT_START}}
@@ -464,7 +490,23 @@ cat <<EOF
   ${RELOCATING+${OTHER_END_SYMBOLS}}
   ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}}
   ${RELOCATING+${DATA_SEGMENT_END}}
+EOF
 
+if test -n "${NON_ALLOC_DYN}"; then
+  if test -z "${NO_REL_RELOCS}${NO_RELA_RELOCS}"; then
+    cat ldscripts/dyntmp.$$
+  else
+    if test -z "${NO_REL_RELOCS}"; then
+      sed -e '/^[      ]*\.rela\.[^}]*$/,/}/d' -e '/^[         ]*\.rela\./d' ldscripts/dyntmp.$$
+    fi
+    if test -z "${NO_RELA_RELOCS}"; then
+      sed -e '/^[      ]*\.rel\.[^}]*$/,/}/d' -e '/^[  ]*\.rel\./d' ldscripts/dyntmp.$$
+    fi
+  fi
+  rm -f ldscripts/dyntmp.$$
+fi
+
+cat <<EOF
   /* Stabs debugging sections.  */
   .stab          0 : { *(.stab) }
   .stabstr       0 : { *(.stabstr) }