This is the mail archive of the binutils@sourceware.cygnus.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Patches to ld for vxWorks 6.0 targets.


The following patch (and new files) adds support to ld for vxWorks 6.0
targets. The vxw6*.sh emulations are derived from the stock ELF configs
and use vxw6_ram.sc, for RAM-based kernels using the 6.0 memory model.
The vxr6*.sh emulations use vxw6_rom.sc, and are for ROM-based kernels
and bootroms; these use the AT() directive to have .data-like sections
be loaded in ROM after _etext.

If there is a way to accomplish this without using so many new files,
I'd welcome suggestions on that. I don't normally work on the binutils
stuff, but I developed the AT() directive changes on another project.
After porting them up to 6.0, I was told to submit it all, since it's
about time we started collecting our 6.0 bits and sent them in.

-- 
Todd Whitesel
toddpw @ windriver.com
======================

Index: ld/ChangeLog
===================================================================
RCS file: /cvs/src/src/ld/ChangeLog,v
retrieving revision 1.154
diff -u -r1.154 ChangeLog
--- ChangeLog	2000/03/09 16:41:21	1.154
+++ ChangeLog	2000/03/23 01:16:21
@@ -1,3 +1,21 @@
+Tue Mar 14 17:37:44 PST 2000  Todd Whitesel  (todd.whitesel@windriver.com)
+
+	* configure.tgt (*-*-vxworks6*): add new emulations (see below).
+	* Makefile.am: ditto.
+	* Makefile.in: ditto.
+	* emulparams/vxr6arm.sh: New file.
+	* emulparams/vxr6ebmip.sh: New file.
+	* emulparams/vxr6i386.sh: New file.
+	* emulparams/vxr6ppc.sh: New file.
+	* emulparams/vxr6sparc.sh: New file.
+	* emulparams/vxw6arm.sh: New file.
+	* emulparams/vxw6ebmip.sh: New file.
+	* emulparams/vxw6i386.sh: New file.
+	* emulparams/vxw6ppc.sh: New file.
+	* emulparams/vxw6sparc.sh: New file.
+	* scripttempl/vxw6_rom.sc: New file.
+	* scripttempl/vxw6_ram.sc: New file.
+
 2000-03-09  Andreas Jaeger  <aj@suse.de>
 
 	* Makefile.am (check-DEJAGNU): Also unset LANG.
Index: ld/Makefile.am
===================================================================
RCS file: /cvs/src/src/ld/Makefile.am,v
retrieving revision 1.24
diff -u -r1.24 Makefile.am
--- Makefile.am	2000/03/09 16:41:21	1.24
+++ Makefile.am	2000/03/23 01:16:21
@@ -208,6 +208,16 @@
 	evanilla.o \
 	evax.o \
 	evsta.o \
+	evxr6arm.o \
+	evxr6ebmip.o \
+	evxr6i386.o \
+	evxr6ppc.o \
+	evxr6sparc.o \
+	evxw6arm.o \
+	evxw6ebmip.o \
+	evxw6i386.o \
+	evxw6ppc.o \
+	evxw6sparc.o \
 	ew65.o \
 	ez8001.o \
 	ez8002.o
@@ -638,6 +648,36 @@
 ev850.c: $(srcdir)/emulparams/v850.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/v850.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} v850 "$(tdir_v850)"
+evxr6arm.c: $(srcdir)/emulparams/vxr6arm.sh \
+  $(srcdir)/emultempl/armelf.em $(srcdir)/scripttempl/vxw6_rom.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxr6arm "$(tdir_vxr6arm)"
+evxr6ebmip.c: $(srcdir)/emulparams/vxr6ebmip.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_rom.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxr6ebmip "$(tdir_vxr6ebmip)"
+evxr6i386.c: $(srcdir)/emulparams/vxr6i386.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_rom.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxr6i386 "$(tdir_vxr6i386)"
+evxr6ppc.c: $(srcdir)/emulparams/vxr6ppc.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_rom.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxr6ppc "$(tdir_vxr6ppc)"
+evxr6sparc.c: $(srcdir)/emulparams/vxr6sparc.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_rom.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxr6sparc "$(tdir_vxr6sparc)"
+evxw6arm.c: $(srcdir)/emulparams/vxw6arm.sh \
+  $(srcdir)/emultempl/armelf.em $(srcdir)/scripttempl/vxw6_ram.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxw6arm "$(tdir_vxw6arm)"
+evxw6ebmip.c: $(srcdir)/emulparams/vxw6ebmip.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_ram.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxw6ebmip "$(tdir_vxw6ebmip)"
+evxw6i386.c: $(srcdir)/emulparams/vxw6i386.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_ram.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxw6i386 "$(tdir_vxw6i386)"
+evxw6ppc.c: $(srcdir)/emulparams/vxw6ppc.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_ram.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxw6ppc "$(tdir_vxw6ppc)"
+evxw6sparc.c: $(srcdir)/emulparams/vxw6sparc.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_ram.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxw6sparc "$(tdir_vxw6sparc)"
 ew65.c: $(srcdir)/emulparams/w65.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/w65.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} w65 "$(tdir_w65)"
Index: ld/Makefile.in
===================================================================
RCS file: /cvs/src/src/ld/Makefile.in,v
retrieving revision 1.26
diff -u -r1.26 Makefile.in
--- Makefile.in	2000/03/09 16:41:21	1.26
+++ Makefile.in	2000/03/23 01:16:22
@@ -311,6 +311,16 @@
 	evanilla.o \
 	evax.o \
 	evsta.o \
+	evxr6arm.o \
+	evxr6ebmip.o \
+	evxr6i386.o \
+	evxr6ppc.o \
+	evxr6sparc.o \
+	evxw6arm.o \
+	evxw6ebmip.o \
+	evxw6i386.o \
+	evxw6ppc.o \
+	evxw6sparc.o \
 	ew65.o \
 	ez8001.o \
 	ez8002.o
@@ -1337,6 +1347,36 @@
 ev850.c: $(srcdir)/emulparams/v850.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/v850.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} v850 "$(tdir_v850)"
+evxr6arm.c: $(srcdir)/emulparams/vxr6arm.sh \
+  $(srcdir)/emultempl/armelf.em $(srcdir)/scripttempl/vxw6_rom.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxr6arm "$(tdir_vxr6arm)"
+evxr6ebmip.c: $(srcdir)/emulparams/vxr6ebmip.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_rom.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxr6ebmip "$(tdir_vxr6ebmip)"
+evxr6i386.c: $(srcdir)/emulparams/vxr6i386.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_rom.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxr6i386 "$(tdir_vxr6i386)"
+evxr6ppc.c: $(srcdir)/emulparams/vxr6ppc.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_rom.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxr6ppc "$(tdir_vxr6ppc)"
+evxr6sparc.c: $(srcdir)/emulparams/vxr6sparc.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_rom.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxr6sparc "$(tdir_vxr6sparc)"
+evxw6arm.c: $(srcdir)/emulparams/vxw6arm.sh \
+  $(srcdir)/emultempl/armelf.em $(srcdir)/scripttempl/vxw6_ram.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxw6arm "$(tdir_vxw6arm)"
+evxw6ebmip.c: $(srcdir)/emulparams/vxw6ebmip.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_ram.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxw6ebmip "$(tdir_vxw6ebmip)"
+evxw6i386.c: $(srcdir)/emulparams/vxw6i386.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_ram.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxw6i386 "$(tdir_vxw6i386)"
+evxw6ppc.c: $(srcdir)/emulparams/vxw6ppc.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_ram.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxw6ppc "$(tdir_vxw6ppc)"
+evxw6sparc.c: $(srcdir)/emulparams/vxw6sparc.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/vxw6_ram.sc ${GEN_DEPENDS}
+	${GENSCRIPTS} vxw6sparc "$(tdir_vxw6sparc)"
 ew65.c: $(srcdir)/emulparams/w65.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/w65.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} w65 "$(tdir_w65)"
Index: ld/configure.tgt
===================================================================
RCS file: /cvs/src/src/ld/configure.tgt,v
retrieving revision 1.23
diff -u -r1.23 configure.tgt
--- configure.tgt	2000/03/02 01:35:52	1.23
+++ configure.tgt	2000/03/23 01:16:22
@@ -68,6 +68,7 @@
 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'`
 			;;
 sparc*-*-solaris2*)	targ_emul=elf32_sparc ;;
+sparc*-*-vxworks6*)	targ_emul=vxw6sparc ; targ_extra_emuls=vxr6sparc ;;
 sparc*-wrs-vxworks*)	targ_emul=sparcaout ;;
 sparc*-*-rtems*)	targ_emul=sparcaout ;;
 i960-wrs-vxworks5.0*)	targ_emul=gld960 ;;
@@ -137,6 +138,7 @@
  			targ_extra_ofiles="deffilep.o pe-dll.o" ;;
 i[3456]86-*-beospe*)    targ_emul=i386beos ;;
 i[3456]86-*-beos*)	targ_emul=elf_i386_be ;;
+i[3456]86-*-vxworks6*)	targ_emul=vxw6i386 ; targ_extra_emuls=vxr6i386 ;;
 i[3456]86-*-vxworks*)	targ_emul=i386aout ;;
 m8*-*-*)		targ_emul=m88kbcs ;;
 a29k-*-udi)		targ_emul=sa29200 ;;
@@ -145,6 +147,7 @@
 #  arm-*-riscix*)		targ_emul=riscix ;;
 arm-*-aout | armel-*-aout) targ_emul=armaoutl ;;
 armeb-*-aout)		targ_emul=armaoutb ;;
+arm-wrs-vxworks6*)	targ_emul=vxw6arm ; targ_extra_emuls=vxr6arm ;;
 arm-*-coff)		targ_emul=armcoff ;;
 arm-*-netbsd*)		targ_emul=armnbsd ;;
 arm-*-elf)		targ_emul=armelf ;;
@@ -155,6 +158,7 @@
 thumb-*-linux-gnu* | thumb-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
 strongarm-*-coff)	targ_emul=armcoff ;;
 strongarm-*-elf)	targ_emul=armelf ;;
+thumb-*-vxworks6*)	targ_emul=vxw6arm ; targ_extra_emuls=vxr6arm ;;
 thumb-*-coff)		targ_emul=armcoff ;;
 thumb-*-elf)		targ_emul=armelf ;;
 thumb-*-oabi)           targ_emul=armelf_oabi ;;
@@ -228,6 +232,7 @@
 mips*el-*-rtems*)	targ_emul=elf32elmip ;;
 mips*-*-rtems*)		targ_emul=elf32ebmip ;;
 mips*el-*-vxworks*)	targ_emul=elf32elmip ;;
+mips*-*-vxworks6*)	targ_emul=vxw6ebmip ; targ_extra_emuls=vxr6ebmip ;;
 mips*-*-vxworks*)	targ_emul=elf32ebmip ;;
 mips*el-*-linux-gnu*)	targ_emul=elf32lsmip
 			targ_extra_emuls="elf32bsmip mipslit mipsbig"
@@ -255,6 +260,7 @@
 			targ_extra_libpath=elf32ppc ;;
 pjl*-*-*)	        targ_emul=pjlelf ; targ_extra_emuls="elf_i386" ;;
 pj*-*-*)	        targ_emul=pjelf ;;
+powerpc-*-vxworks6*)	targ_emul=vxw6ppc ; targ_extra_emuls=vxr6ppc ;;
 powerpc-*-elf* | powerpc-*-eabi* | powerpc-*-sysv* \
   | powerpc-*-netbsd* | powerpc-*-vxworks*)
 	targ_emul=elf32ppc ;;
Index: ld/emulparams/vxr6arm.sh
(NEW FILE)
=======================================
ARCH=arm
TEMPLATE_NAME=armelf
SCRIPT_NAME=vxw6_rom
OUTPUT_FORMAT="elf32-littlearm"
BIG_OUTPUT_FORMAT="elf32-bigarm"
LITTLE_OUTPUT_FORMAT="elf32-littlearm"
TEXT_START_ADDR=0x8000
OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)'
OTHER_BSS_SYMBOLS='__bss_start__ = .;'
OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;'
WRS_PAGESIZE=0x1000
MACHINE=
ELFSIZE=32
=======================================
Index: ld/emulparams/vxr6ebmip.sh
(NEW FILE)
=======================================
ARCH=mips
TEMPLATE_NAME=elf32
SCRIPT_NAME=vxw6_rom
OUTPUT_FORMAT="elf32-bigmips"
BIG_OUTPUT_FORMAT="elf32-bigmips"
LITTLE_OUTPUT_FORMAT="elf32-littlemips"
TEXT_START_ADDR=0x0400000
WRS_PAGESIZE=0x1000
INITIAL_READONLY_SECTIONS=
OTHER_READONLY_SECTIONS='.reginfo : { *(.reginfo) } .pdr : { *(.pdr) }'
OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)'
OTHER_GOT_SYMBOLS='
  _gp = ALIGN(16) + 0x7ff0;
'
OTHER_GOT_SECTIONS='*(.lit8) *(.lit4)'
TEXT_START_SYMBOLS='_ftext = . ;'
DATA_START_SYMBOLS='_fdata = . ;'
OTHER_BSS_SYMBOLS='_fbss = .;'
OTHER_SECTIONS='
  .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
  .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
'
MACHINE=
ELFSIZE=32
=======================================
Index: ld/emulparams/vxr6i386.sh
(NEW FILE)
=======================================
ARCH=i386
TEMPLATE_NAME=elf32
SCRIPT_NAME=vxw6_rom
OUTPUT_FORMAT="elf32-i386"
TEXT_START_ADDR=0x010800
WRS_PAGESIZE=0x1000
NOP=0x9090
MACHINE=
ELFSIZE=32
=======================================
Index: ld/emulparams/vxr6ppc.sh
(NEW FILE)
=======================================
ARCH=powerpc
TEMPLATE_NAME=elf32
SCRIPT_NAME=vxw6_rom
OUTPUT_FORMAT="elf32-powerpc"
TEXT_START_ADDR=0x01800000
WRS_PAGESIZE=0x1000
MACHINE=
ELFSIZE=32
=======================================
Index: ld/emulparams/vxr6sparc.sh
(NEW FILE)
=======================================
ARCH=sparc
TEMPLATE_NAME=elf32
SCRIPT_NAME=vxw6_rom
OUTPUT_FORMAT="elf32-sparc"
TEXT_START_ADDR=0x10000
WRS_PAGESIZE=0x1000
MACHINE=
DATA_PLT=
ELFSIZE=32
=======================================
Index: ld/emulparams/vxw6arm.sh
(NEW FILE)
=======================================
ARCH=arm
TEMPLATE_NAME=armelf
SCRIPT_NAME=vxw6_ram
OUTPUT_FORMAT="elf32-littlearm"
BIG_OUTPUT_FORMAT="elf32-bigarm"
LITTLE_OUTPUT_FORMAT="elf32-littlearm"
TEXT_START_ADDR=0x8000
OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)'
OTHER_BSS_SYMBOLS='__bss_start__ = .;'
OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;'
WRS_PAGESIZE=0x1000
MACHINE=
ELFSIZE=32
=======================================
Index: ld/emulparams/vxw6ebmip.sh
(NEW FILE)
=======================================
ARCH=mips
TEMPLATE_NAME=elf32
SCRIPT_NAME=vxw6_ram
OUTPUT_FORMAT="elf32-bigmips"
BIG_OUTPUT_FORMAT="elf32-bigmips"
LITTLE_OUTPUT_FORMAT="elf32-littlemips"
TEXT_START_ADDR=0x0400000
WRS_PAGESIZE=0x1000
INITIAL_READONLY_SECTIONS=
OTHER_READONLY_SECTIONS='.reginfo : { *(.reginfo) } .pdr : { *(.pdr) }'
OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)'
OTHER_GOT_SYMBOLS='
  _gp = ALIGN(16) + 0x7ff0;
'
OTHER_GOT_SECTIONS='
  .lit8 : { *(.lit8) }
  .lit4 : { *(.lit4) }
'
TEXT_START_SYMBOLS='_ftext = . ;'
DATA_START_SYMBOLS='_fdata = . ;'
OTHER_BSS_SYMBOLS='_fbss = .;'
OTHER_SECTIONS='
  .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
  .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
'
MACHINE=
ELFSIZE=32
=======================================
Index: ld/emulparams/vxw6i386.sh
(NEW FILE)
=======================================
ARCH=i386
TEMPLATE_NAME=elf32
SCRIPT_NAME=vxw6_ram
OUTPUT_FORMAT="elf32-i386"
TEXT_START_ADDR=0x010800
WRS_PAGESIZE=0x1000
NOP=0x9090
MACHINE=
ELFSIZE=32
=======================================
Index: ld/emulparams/vxw6ppc.sh
(NEW FILE)
=======================================
ARCH=powerpc
TEMPLATE_NAME=elf32
SCRIPT_NAME=vxw6_ram
OUTPUT_FORMAT="elf32-powerpc"
TEXT_START_ADDR=0x01800000
WRS_PAGESIZE=0x1000
MACHINE=
ELFSIZE=32
=======================================
Index: ld/emulparams/vxw6sparc.sh
(NEW FILE)
=======================================
ARCH=sparc
TEMPLATE_NAME=elf32
SCRIPT_NAME=vxw6_ram
OUTPUT_FORMAT="elf32-sparc"
TEXT_START_ADDR=0x10000
WRS_PAGESIZE=0x1000
MACHINE=
DATA_PLT=
ELFSIZE=32
=======================================
Index: ld/scripttempl/vxw6_ram.sc
(NEW FILE)
=======================================
#
# Unusual variables checked by this code:
#	CONSTRUCTING - if non empty, generate the global ctor and dtor tables.
#	DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
#	DATA_START_SYMBOLS - symbols that appear at the start of the
#		.data section.
#	ELFSIZE - Size of an ELF word (?)
#	EXECUTABLE_SYMBOLS - symbols that must be defined for an
#		executable (e.g., _DYNAMIC_LINK)
#	INITIAL_READONLY_SECTIONS - at start of text segment
#	NOP - two byte opcode for no-op (defaults to 0)
#	OTHER_BSS_SYMBOLS - symbols that appear at the start of the
#		.bss section besides __bss_start.
#	OTHER_GOT_SECTIONS - sections just after .got and .sdata.
#	OTHER_GOT_SYMBOLS - symbols defined just before .got.
#	OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
#		(e.g., .PARISC.milli)
#	OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
#		(e.g., .PARISC.global)
#	OTHER_SECTIONS - at the end
#	OTHER_TEXT_SECTIONS - these get put in .text when relocating
#	TEXT_START_SYMBOLS - symbols that appear at the start of the
#		.text section.
#	DATA_PLT - .plt should be in data segment, not text segment.
#	WRITABLE_RODATA - if set, the .rodata section should be writable
#
# WRS specific variables
#	WRS_PAGESIZE - size of a page. The text, data, rodata sections are
#                      aligned on this page size.
#
# When adding sections, do note that the names of some sections are used
# when specifying the start address of the next.
#

test -z "$ENTRY" && ENTRY=_start
test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
test -z "${ELFSIZE}" && ELFSIZE=32
test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
test "$LD_FLAG" = "N" && DATA_ADDR=.
INTERP=".interp   ${RELOCATING-0} : { *(.interp) 	}"
PLT=".plt    ${RELOCATING-0} : { *(.plt)	}"
DYNAMIC=".dynamic     ${RELOCATING-0} : { *(.dynamic) }"
RODATA=".rodata ${RELOCATING-0}${RELOCATING+BLOCK($WRS_PAGESIZE)} : { *(.rodata) ${RELOCATING+*(.rodata.*)} ${RELOCATING+*(.gnu.linkonce.r*)} }"
CTOR=".ctors ${CONSTRUCTING-0} :
  {
    ${CONSTRUCTING+${CTOR_START}}
    /* gcc uses crtbegin.o to find the start of
       the constructors, so we make sure it is
       first.  Because this is a wildcard, it
       doesn't matter if the user does not
       actually link against crtbegin.o; the
       linker won't look for a file to match a
       wildcard.  The wildcard also means that it
       doesn't matter which directory crtbegin.o
       is in.  */

    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
       end of ctors marker and it must be last */

    KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
    KEEP (*(SORT(.ctors.*)))
    KEEP (*(.ctors))
    ${CONSTRUCTING+${CTOR_END}}
  }"

DTOR=" .dtors       ${CONSTRUCTING-0} :
  {
    ${CONSTRUCTING+${DTOR_START}}
    KEEP (*crtbegin.o(.dtors))
    KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
    KEEP (*(SORT(.dtors.*)))
    KEEP (*(.dtors))
    ${CONSTRUCTING+${DTOR_END}}
  }"

# if this is for an embedded system, don't add SIZEOF_HEADERS.
if [ -z "$EMBEDDED" ]; then
   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
else
   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
fi

cat <<EOF

OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
	      "${LITTLE_OUTPUT_FORMAT}")
OUTPUT_ARCH(${OUTPUT_ARCH})
ENTRY(${ENTRY})

${RELOCATING+${LIB_SEARCH_DIRS}}
${RELOCATING+${EXECUTABLE_SYMBOLS}}
${RELOCATING- /* For some reason, the Solaris linker makes bad executables
  if gld -r is used and the intermediate file has sections starting
  at non-zero addresses.  Could be a Solaris ld bug, could be a GNU ld
  bug.  But for now assigning the zero vmas works.  */}

/* Program headers are not generated by the linker for the moment.
PHDRS
{
  text		PT_LOAD	FLAGS(5) ;	@* read-execute *@
  rodata	PT_LOAD	FLAGS(4) ;	@* read *@
  data_bss	PT_LOAD	FLAGS(6) ;	@* read-write *@
  dde		PT_LOAD	FLAGS(0x8000) ;	@* domain description *@
}
*/

SECTIONS
{
  ${INTERP}
  ${INITIAL_READONLY_SECTIONS}
  ${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*)}
    }
  ${OTHER_READONLY_RELOC_SECTIONS}
  .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)		}
  ${OTHER_GOT_RELOC_SECTIONS}
  .rel.bss     ${RELOCATING-0} : { *(.rel.bss)		}
  .rela.bss    ${RELOCATING-0} : { *(.rela.bss)		}
  .rel.plt     ${RELOCATING-0} : { *(.rel.plt)		}
  .rela.plt    ${RELOCATING-0} : { *(.rela.plt)		}

  .init        ${RELOCATING-0} : { KEEP (*(.init))	} =${NOP-0}
  ${DATA_PLT-${PLT}}
  .text    ${RELOCATING-0}${RELOCATING+BLOCK(${WRS_PAGESIZE})} :
  {
    ${RELOCATING+${TEXT_START_SYMBOLS}}
    *(.text)
    ${RELOCATING+*(.text.*)}
    *(.stub)
    /* .gnu.warning sections are handled specially by elf32.em.  */
    *(.gnu.warning)
    ${RELOCATING+*(.gnu.linkonce.t*)}
    ${RELOCATING+${OTHER_TEXT_SECTIONS}}
  } =${NOP-0}
  .fini    ${RELOCATING-0} : { KEEP (*(.fini))		} =${NOP-0}
  ${WRITABLE_RODATA-${RODATA}}
  .rodata1 ${RELOCATING-0} : { *(.rodata1) }
  ${RELOCATING+${OTHER_READONLY_SECTIONS}}
  ${RELOCATING+_etext = .;}
  ${RELOCATING+PROVIDE (etext = .);}

  .data  ${RELOCATING-0}${RELOCATING+BLOCK($WRS_PAGESIZE)} :
  {
    ${RELOCATING+${DATA_START_SYMBOLS}}
    *(.data)
    ${RELOCATING+*(.data.*)}
    ${RELOCATING+*(.gnu.linkonce.d*)}
    ${CONSTRUCTING+SORT(CONSTRUCTORS)}
  }
  .data1 ${RELOCATING-0} : { *(.data1) }
  .eh_frame : { *(.eh_frame) }
  .gcc_except_table : { *(.gcc_except_table) }
  ${WRITABLE_RODATA+${RODATA}}
  ${RELOCATING+${OTHER_READWRITE_SECTIONS}}
  ${RELOCATING+${CTOR}}
  ${RELOCATING+${DTOR}}
  ${DATA_PLT+${PLT}}
  ${RELOCATING+${OTHER_GOT_SYMBOLS}}
  .got         ${RELOCATING-0} : { *(.got.plt) *(.got) }
  ${TEXT_DYNAMIC-${DYNAMIC}}
  /* We want the small data sections together, so single-instruction offsets
     can access them all, and initialized data all before uninitialized, so
     we can shorten the on-disk segment size.  */
  .sdata   ${RELOCATING-0} : { *(.sdata) *(.sdata.*) }
  ${RELOCATING+${OTHER_GOT_SECTIONS}}
  ${RELOCATING+_edata = .;}
  ${RELOCATING+PROVIDE (edata = .);}
  ${RELOCATING+__bss_start = .;}
  ${RELOCATING+${OTHER_BSS_SYMBOLS}}
  .sbss    ${RELOCATING-0} : { *(.sbss) *(.scommon) }
  .bss     ${RELOCATING-0} :
  {
   *(.dynbss)
   *(.bss)
   *(COMMON)
   /* Align here to ensure that the .bss section occupies space up to
      _end.  Align after .bss to ensure correct alignment even if the
      .bss section disappears because there are no input sections.  */
   ${RELOCATING+. = ALIGN(${ALIGNMENT});}
  }
  ${RELOCATING+. = ALIGN(${ALIGNMENT});}
  ${RELOCATING+_end = .;}
  ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
  ${RELOCATING+PROVIDE (end = .);}

  /* The WRS domain description section */

  .vx.domain.table : { *(.vx.domain.table) }

  /* 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) }

  /* DWARF debug sections.
     Symbols in the DWARF debugging sections are relative to the beginning
     of the section so we begin them at 0.  */

  /* DWARF 1 */
  .debug          0 : { *(.debug) }
  .line           0 : { *(.line) }

  /* GNU DWARF 1 extensions */
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
  .debug_sfnames  0 : { *(.debug_sfnames) }

  /* DWARF 1.1 and DWARF 2 */
  .debug_aranges  0 : { *(.debug_aranges) }
  .debug_pubnames 0 : { *(.debug_pubnames) }

  /* DWARF 2 */
  .debug_info     0 : { *(.debug_info) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_line     0 : { *(.debug_line) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_str      0 : { *(.debug_str) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_macinfo  0 : { *(.debug_macinfo) }

  /* SGI/MIPS DWARF 2 extensions */
  .debug_weaknames 0 : { *(.debug_weaknames) }
  .debug_funcnames 0 : { *(.debug_funcnames) }
  .debug_typenames 0 : { *(.debug_typenames) }
  .debug_varnames  0 : { *(.debug_varnames) }

  ${RELOCATING+${OTHER_RELOCATING_SECTIONS}}

  /* These must appear regardless of ${RELOCATING}.  */
  ${OTHER_SECTIONS}
}
EOF
=======================================
Index: ld/scripttempl/vxw6_rom.sc
(NEW FILE)
=======================================
#
# Unusual variables checked by this code:
#	CONSTRUCTING - if non empty, generate the global ctor and dtor tables.
#	DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
#	DATA_START_SYMBOLS - symbols that appear at the start of the
#		.data section.
#	ELFSIZE - Size of an ELF word (?)
#	EXECUTABLE_SYMBOLS - symbols that must be defined for an
#		executable (e.g., _DYNAMIC_LINK)
#	INITIAL_READONLY_SECTIONS - at start of text segment
#	NOP - two byte opcode for no-op (defaults to 0)
#	OTHER_BSS_SYMBOLS - symbols that appear at the start of the
#		.bss section besides __bss_start.
#	OTHER_GOT_SECTIONS - sections just after .got and .sdata.
#	OTHER_GOT_SYMBOLS - symbols defined just before .got.
#	OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
#		(e.g., .PARISC.milli)
#	OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
#		(e.g., .PARISC.global)
#	OTHER_SECTIONS - at the end
#	OTHER_TEXT_SECTIONS - these get put in .text when relocating
#	TEXT_START_SYMBOLS - symbols that appear at the start of the
#		.text section.
#	DATA_PLT - .plt should be in data segment, not text segment.
#
# WRS specific variables
#	WRS_PAGESIZE - size of a page. The text, data, rodata sections are
#                      aligned on this page size.
#
# When adding sections, do note that the names of some sections are used
# when specifying the start address of the next.
#

test -z "$ENTRY" && ENTRY=_start
test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
test -z "${ELFSIZE}" && ELFSIZE=32
test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
test "$LD_FLAG" = "N" && DATA_ADDR=.
INTERP=".interp   ${RELOCATING-0} : { *(.interp) 	}"
PLT_T=".plt    ${RELOCATING-0} : { *(.plt)	}"
PLT_D="*(.plt)"
DYNAMIC_T=".dynamic     ${RELOCATING-0} : { *(.dynamic) }"
DYNAMIC_D="*(.dynamic)"
CTOR="/* BEGIN .ctors */
    ${CONSTRUCTING+${CTOR_START}}
    /* gcc uses crtbegin.o to find the start of
       the constructors, so we make sure it is
       first.  Because this is a wildcard, it
       doesn't matter if the user does not
       actually link against crtbegin.o; the
       linker won't look for a file to match a
       wildcard.  The wildcard also means that it
       doesn't matter which directory crtbegin.o
       is in.  */

    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
       end of ctors marker and it must be last */

    KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
    KEEP (*(SORT(.ctors.*)))
    KEEP (*(.ctors))
    ${CONSTRUCTING+${CTOR_END}}
    /* END   .ctors */"

DTOR="/* BEGIN .dtors */
    ${CONSTRUCTING+${DTOR_START}}
    KEEP (*crtbegin.o(.dtors))
    KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
    KEEP (*(SORT(.dtors.*)))
    KEEP (*(.dtors))
    ${CONSTRUCTING+${DTOR_END}}
    /* END   .dtors */"

# if this is for an embedded system, don't add SIZEOF_HEADERS.
if [ -z "$EMBEDDED" ]; then
   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
else
   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
fi

cat <<EOF

OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
	      "${LITTLE_OUTPUT_FORMAT}")
OUTPUT_ARCH(${OUTPUT_ARCH})
ENTRY(${ENTRY})

${RELOCATING+${LIB_SEARCH_DIRS}}
${RELOCATING+${EXECUTABLE_SYMBOLS}}
${RELOCATING- /* For some reason, the Solaris linker makes bad executables
  if gld -r is used and the intermediate file has sections starting
  at non-zero addresses.  Could be a Solaris ld bug, could be a GNU ld
  bug.  But for now assigning the zero vmas works.  */}

/* Program headers are not generated by the linker for the moment.
PHDRS
{
  text		PT_LOAD	FLAGS(5) ;	@* read-execute *@
  rodata	PT_LOAD	FLAGS(4) ;	@* read *@
  data_bss	PT_LOAD	FLAGS(6) ;	@* read-write *@
  dde		PT_LOAD	FLAGS(0x8000) ;	@* domain description *@
}
*/

SECTIONS
{
  ${INTERP}
  ${INITIAL_READONLY_SECTIONS}
  ${TEXT_DYNAMIC+${DYNAMIC_T}}
  .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*)}
    }
  ${OTHER_READONLY_RELOC_SECTIONS}
  .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)		}
  ${OTHER_GOT_RELOC_SECTIONS}
  .rel.bss     ${RELOCATING-0} : { *(.rel.bss)		}
  .rela.bss    ${RELOCATING-0} : { *(.rela.bss)		}
  .rel.plt     ${RELOCATING-0} : { *(.rel.plt)		}
  .rela.plt    ${RELOCATING-0} : { *(.rela.plt)		}

  .init        ${RELOCATING-0} : { KEEP (*(.init))	} =${NOP-0}
  ${DATA_PLT-${PLT_T}}
  .text    ${RELOCATING-0}${RELOCATING+BLOCK(${WRS_PAGESIZE})} :
  {
    ${RELOCATING+${TEXT_START_SYMBOLS}}
    *(.text)
    ${RELOCATING+*(.text.*)}
    *(.stub)
    /* .gnu.warning sections are handled specially by elf32.em.  */
    *(.gnu.warning)
    ${RELOCATING+*(.gnu.linkonce.t*)}
    ${RELOCATING+${OTHER_TEXT_SECTIONS}}
  } =${NOP-0}
  .fini    ${RELOCATING-0} : { KEEP (*(.fini))		} =${NOP-0}
  ${RELOCATING+${OTHER_READONLY_SECTIONS}}
  .rodata ${RELOCATING-0}${RELOCATING+BLOCK($WRS_PAGESIZE)} :
  {
    *(.rodata)
    ${RELOCATING+*(.rodata.*)}
    ${RELOCATING+*(.gnu.linkonce.r*)}
    /* .rodata1 used to be its own section, but our use of AT,ADDR,SIZEOF are
       such that we can't have an optional section appearing just before etext
       (ADDR and SIZEOF of a section with no contents causes an error). If the
       linker is improved to handle that gracefully, then we can use a more
       normal-looking section map that preserves the identity of optionals. */
    ${RELOCATING+*(.rodata1)}
    ${RELOCATING+. = ALIGN(${ALIGNMENT});}
  }
  ${RELOCATING+. = ALIGN(${ALIGNMENT});}
  ${RELOCATING+_etext = .;}
  ${RELOCATING+PROVIDE (etext = .);}

  .data  ${RELOCATING-0} : AT ( ADDR (.rodata) + SIZEOF (.rodata) )
  {
    ${RELOCATING+${DATA_START_SYMBOLS}}
    *(.data)
    ${RELOCATING+*(.data.*)}
    ${RELOCATING+*(.gnu.linkonce.d*)}
    ${CONSTRUCTING+SORT(CONSTRUCTORS)}
    /* Input sections after this point used to be in separate sections, however
       many of these sections are optional and that fouls up the cascaded use
       of AT ( LOADADDR (.previous) + SIZEOF (.previous) ) which was how we
       first implemented this. If anyone depends on these sections retaining
       their independent identities, then we will have to rethink this and
       maybe enhance the linker to handle the situation more gracefully. */
    ${RELOCATING+*(.data1)}
    ${RELOCATING+*(.eh_frame)}
    ${RELOCATING+*(.gcc_except_table)}
    /* FIXME! We put OTHER_READWRITE_SECTIONS _inside_ a section, not outside
       as it normally is, because of the AT/SIZEOF/LOADADDR issue discussed
       above. This means that if any of our emulations supply these, they must
       use a different convention from everyone else. Currently, none do. */
    ${RELOCATING+${OTHER_READWRITE_SECTIONS}}
    ${RELOCATING+${CTOR}}
    ${RELOCATING+${DTOR}}
    ${DATA_PLT+${PLT_D}}
    ${RELOCATING+${OTHER_GOT_SYMBOLS}}
    *(.got.plt) *(.got)
    ${TEXT_DYNAMIC-${DYNAMIC_D}}
    /* Currently on vxWorks we do not support sdata/sbss, but if someone tries
       to use them, make sure they get put in sane places and not piled at the
       end of the memory map, where they will be useless to a ROM image. */
    *(.sdata) *(.sdata.*)
    /* FIXME! We put OTHER_GOT_SECTIONS _inside_ a section, not outside
       as it normally is, because of the AT/SIZEOF/LOADADDR issue discussed
       above. This means that vxr6ebmip.sh has to use a unique convention. */
    ${RELOCATING+${OTHER_GOT_SECTIONS}}
    ${RELOCATING+. = ALIGN(${ALIGNMENT});}
  }
  ${RELOCATING+. = ALIGN(${ALIGNMENT});}
  ${RELOCATING+_edata = .;}
  ${RELOCATING+PROVIDE (edata = .);}
  ${RELOCATING+__bss_start = .;}
  ${RELOCATING+${OTHER_BSS_SYMBOLS}}
  .bss     ${RELOCATING-0} :
  {
   *(.sbss) *(.scommon)
   *(.dynbss)
   *(.bss)
   *(COMMON)
   /* Align here to ensure that the .bss section occupies space up to
      _end.  Align after .bss to ensure correct alignment even if the
      .bss section disappears because there are no input sections.  */
   ${RELOCATING+. = ALIGN(${ALIGNMENT});}
  }
  ${RELOCATING+. = ALIGN(${ALIGNMENT});}
  ${RELOCATING+_end = .;}
  ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
  ${RELOCATING+PROVIDE (end = .);}

  /* The WRS domain description section */

  .vx.domain.table : { *(.vx.domain.table) }

  /* 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) }

  /* DWARF debug sections.
     Symbols in the DWARF debugging sections are relative to the beginning
     of the section so we begin them at 0.  */

  /* DWARF 1 */
  .debug          0 : { *(.debug) }
  .line           0 : { *(.line) }

  /* GNU DWARF 1 extensions */
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
  .debug_sfnames  0 : { *(.debug_sfnames) }

  /* DWARF 1.1 and DWARF 2 */
  .debug_aranges  0 : { *(.debug_aranges) }
  .debug_pubnames 0 : { *(.debug_pubnames) }

  /* DWARF 2 */
  .debug_info     0 : { *(.debug_info) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_line     0 : { *(.debug_line) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_str      0 : { *(.debug_str) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_macinfo  0 : { *(.debug_macinfo) }

  /* SGI/MIPS DWARF 2 extensions */
  .debug_weaknames 0 : { *(.debug_weaknames) }
  .debug_funcnames 0 : { *(.debug_funcnames) }
  .debug_typenames 0 : { *(.debug_typenames) }
  .debug_varnames  0 : { *(.debug_varnames) }

  ${RELOCATING+${OTHER_RELOCATING_SECTIONS}}

  /* These must appear regardless of ${RELOCATING}.  */
  ${OTHER_SECTIONS}
}
EOF
=======================================

# eof

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]