This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
[rfa:] CRIS port part 6/8: ld
- To: binutils at sources dot redhat dot com
- Subject: [rfa:] CRIS port part 6/8: ld
- From: Hans-Peter Nilsson <hans-peter dot nilsson at axis dot com>
- Date: Wed, 19 Jul 2000 00:05:59 +0200
Here are the ld bits.
Ok to commit?
2000-07-18 Hans-Peter Nilsson <hp@axis.com>
* Makefile.am (ALL_EMULATIONS): Add ecrisaout.o, ecriself.o,
ecrislinux.o.
(ecrisaout.c, ecriself.c, ecrislinux.c): New rules.
Regenerate dependencies.
* Makefile.in: Rebuild.
* configure.tgt (cris-*-*): New target.
* emulparams/crisaout.sh, emulparams/criself.sh,
emulparams/crislinux.sh, scripttempl/crisaout.sc: New files.
* po/POTFILES.in, po/ld.pot: Regenerate.
Index: ld/Makefile.am
===================================================================
RCS file: /cvs/src/src/ld/Makefile.am,v
retrieving revision 1.40
diff -p -c -r1.40 Makefile.am
*** Makefile.am 2000/07/09 08:45:29 1.40
--- Makefile.am 2000/07/18 18:31:05
*************** ALL_EMULATIONS = \
*** 123,128 ****
--- 123,131 ----
eavrmega161.o \
eavrmega603.o \
ecoff_sparc.o \
+ ecrisaout.o \
+ ecriself.o \
+ ecrislinux.o \
ed10velf.o \
ed30v_e.o \
ed30v_o.o \
*************** eavrmega161.c: $(srcdir)/emulparams/avrm
*** 378,383 ****
--- 381,395 ----
ecoff_sparc.c: $(srcdir)/emulparams/coff_sparc.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/sparccoff.sc ${GEN_DEPENDS}
${GENSCRIPTS} coff_sparc "$(tdir_coff_sparc)"
+ ecrisaout.c: $(srcdir)/emulparams/crisaout.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/crisaout.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} crisaout "$(tdir_cris)"
+ ecriself.c: $(srcdir)/emulparams/criself.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} criself "$(tdir_cris)"
+ ecrislinux.c: $(srcdir)/emulparams/crislinux.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} crislinux "$(tdir_cris)"
ed10velf.c: $(srcdir)/emulparams/d10velf.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elfd10v.sc ${GEN_DEPENDS}
${GENSCRIPTS} d10velf "$(tdir_d10v)"
*************** ldctor.o: ldctor.c ../bfd/bfd.h $(INCDIR
*** 946,952 ****
ldgram.h ldmain.h ldctor.h
ldemul.o: ldemul.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h ld.h $(INCDIR)/bin-bugs.h \
! ldemul.h ldmisc.h ldexp.h ldlang.h ldfile.h ldmain.h \
ldemul-list.h
ldexp.o: ldexp.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
--- 958,964 ----
ldgram.h ldmain.h ldctor.h
ldemul.o: ldemul.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h ld.h $(INCDIR)/bin-bugs.h \
! ldmisc.h ldexp.h ldlang.h ldfile.h ldemul.h ldmain.h \
ldemul-list.h
ldexp.o: ldexp.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
*************** ldfile.o: ldfile.c ../bfd/bfd.h $(INCDIR
*** 959,971 ****
ldlang.o: ldlang.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
$(INCDIR)/obstack.h $(INCDIR)/bfdlink.h ld.h $(INCDIR)/bin-bugs.h \
! ldmain.h ldgram.h ldexp.h ldlang.h ldemul.h ldlex.h \
! ldmisc.h ldctor.h ldfile.h $(INCDIR)/fnmatch.h $(INCDIR)/demangle.h
ldmain.o: ldmain.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
$(INCDIR)/progress.h $(INCDIR)/bfdlink.h $(INCDIR)/filenames.h \
ld.h $(INCDIR)/bin-bugs.h ldmain.h ldmisc.h ldwrite.h \
! ldgram.h ldexp.h ldlang.h ldemul.h ldlex.h ldfile.h \
ldctor.h
ldmisc.o: ldmisc.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
--- 971,983 ----
ldlang.o: ldlang.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
$(INCDIR)/obstack.h $(INCDIR)/bfdlink.h ld.h $(INCDIR)/bin-bugs.h \
! ldmain.h ldgram.h ldexp.h ldlang.h ldlex.h ldmisc.h \
! ldctor.h ldfile.h ldemul.h $(INCDIR)/fnmatch.h $(INCDIR)/demangle.h
ldmain.o: ldmain.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
$(INCDIR)/progress.h $(INCDIR)/bfdlink.h $(INCDIR)/filenames.h \
ld.h $(INCDIR)/bin-bugs.h ldmain.h ldmisc.h ldwrite.h \
! ldgram.h ldexp.h ldlang.h ldlex.h ldfile.h ldemul.h \
ldctor.h
ldmisc.o: ldmisc.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
*************** ldmisc.o: ldmisc.c ../bfd/bfd.h $(INCDIR
*** 973,988 ****
ldexp.h ldlang.h ldgram.h ldlex.h ldmain.h ldfile.h
ldver.o: ldver.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h ld.h $(INCDIR)/bin-bugs.h \
! ldver.h ldemul.h ldmain.h
ldwrite.o: ldwrite.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
$(INCDIR)/libiberty.h ld.h $(INCDIR)/bin-bugs.h ldexp.h \
ldlang.h ldwrite.h ldmisc.h ldgram.h ldmain.h
lexsup.o: lexsup.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
! $(INCDIR)/bfdlink.h ld.h $(INCDIR)/bin-bugs.h ldmain.h \
! ldmisc.h ldexp.h ldlang.h ldgram.h ldlex.h ldfile.h \
! ldver.h ldemul.h
mri.o: mri.c ../bfd/bfd.h $(INCDIR)/ansidecl.h sysdep.h \
config.h $(INCDIR)/fopen-same.h ld.h $(INCDIR)/bin-bugs.h \
ldexp.h ldlang.h ldmisc.h mri.h ldgram.h $(INCDIR)/libiberty.h
--- 985,1000 ----
ldexp.h ldlang.h ldgram.h ldlex.h ldmain.h ldfile.h
ldver.o: ldver.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h ld.h $(INCDIR)/bin-bugs.h \
! ldver.h ldexp.h ldlang.h ldfile.h ldemul.h ldmain.h
ldwrite.o: ldwrite.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
$(INCDIR)/libiberty.h ld.h $(INCDIR)/bin-bugs.h ldexp.h \
ldlang.h ldwrite.h ldmisc.h ldgram.h ldmain.h
lexsup.o: lexsup.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
! $(INCDIR)/getopt.h $(INCDIR)/bfdlink.h ld.h $(INCDIR)/bin-bugs.h \
! ldmain.h ldmisc.h ldexp.h ldlang.h ldgram.h ldlex.h \
! ldfile.h ldver.h ldemul.h
mri.o: mri.c ../bfd/bfd.h $(INCDIR)/ansidecl.h sysdep.h \
config.h $(INCDIR)/fopen-same.h ld.h $(INCDIR)/bin-bugs.h \
ldexp.h ldlang.h ldmisc.h mri.h ldgram.h $(INCDIR)/libiberty.h
*************** ldcref.o: ldcref.c ../bfd/bfd.h $(INCDIR
*** 993,1005 ****
pe-dll.o: pe-dll.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
$(INCDIR)/libiberty.h ld.h $(INCDIR)/bin-bugs.h ldexp.h \
! ldlang.h ldwrite.h ldmisc.h ldgram.h ldmain.h ldemul.h \
! $(INCDIR)/coff/internal.h ../bfd/libcoff.h deffile.h \
! pe-dll.h
ldgram.o: ldgram.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
ld.h $(INCDIR)/bin-bugs.h ldexp.h ldver.h ldlang.h \
! ldemul.h ldfile.h ldmisc.h ldmain.h mri.h ldctor.h \
ldlex.h
ldlex.o: ldlex.c ../bfd/bfd.h sysdep.h config.h $(INCDIR)/fopen-same.h \
ld.h $(INCDIR)/bin-bugs.h ldgram.h ldmisc.h ldexp.h \
--- 1005,1017 ----
pe-dll.o: pe-dll.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
$(INCDIR)/libiberty.h ld.h $(INCDIR)/bin-bugs.h ldexp.h \
! ldlang.h ldwrite.h ldmisc.h ldgram.h ldmain.h ldfile.h \
! ldemul.h $(INCDIR)/coff/internal.h ../bfd/libcoff.h \
! deffile.h pe-dll.h
ldgram.o: ldgram.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
ld.h $(INCDIR)/bin-bugs.h ldexp.h ldver.h ldlang.h \
! ldfile.h ldemul.h ldmisc.h ldmain.h mri.h ldctor.h \
ldlex.h
ldlex.o: ldlex.c ../bfd/bfd.h sysdep.h config.h $(INCDIR)/fopen-same.h \
ld.h $(INCDIR)/bin-bugs.h ldgram.h ldmisc.h ldexp.h \
Index: ld/configure.tgt
===================================================================
RCS file: /cvs/src/src/ld/configure.tgt,v
retrieving revision 1.34
diff -p -c -r1.34 configure.tgt
*** configure.tgt 2000/07/10 17:15:11 1.34
--- configure.tgt 2000/07/18 18:31:09
*************** arm-*-pe) targ_emul=armpe ;
*** 23,28 ****
--- 23,31 ----
arc-*-elf*) targ_emul=arcelf ;;
avr-*-*) targ_emul=avr85xx
targ_extra_emuls="avr1200 avr23xx avr44x4 avr4433 avrmega603 avrmega103 avrmega161" ;;
+ cris-*-*) targ_emul=crisaout
+ targ_extra_emuls="criself crislinux"
+ targ_extra_libpath=$targ_extra_emuls ;;
d10v-*-*) targ_emul=d10velf ;;
d30v-*-*ext*) targ_emul=d30v_e; targ_extra_emuls="d30velf d30v_o" ;;
d30v-*-*onchip*) targ_emul=d30v_o; targ_extra_emuls="d30velf d30v_e" ;;
*** /dev/null Tue Jan 1 05:00:00 1980
--- emulparams/crisaout.sh Tue Jul 18 20:44:36 2000
***************
*** 0 ****
--- 1,7 ----
+ # This is for embedded products and elinux (no MMU) with a.out.
+ SCRIPT_NAME=crisaout
+ OUTPUT_FORMAT="a.out-cris"
+ TARGET_PAGE_SIZE=2
+ TEXT_START_ADDR=0
+ NONPAGED_TEXT_START_ADDR=0
+ ARCH=cris
*** /dev/null Tue Jan 1 05:00:00 1980
--- emulparams/criself.sh Tue Jul 18 20:47:15 2000
***************
*** 0 ****
--- 1,92 ----
+ # This is for embedded products (no MMU) with ELF.
+ MACHINE=
+ SCRIPT_NAME=elf
+ TEMPLATE_NAME=elf32
+ OUTPUT_FORMAT="elf32-cris"
+ ARCH=cris
+ MAXPAGESIZE=32
+ ENTRY=_start
+ EMBEDDED=yes
+ ALIGNMENT=32
+ TEXT_START_ADDR=0
+
+ # Put crt0 for flash/eprom etc. in this section.
+ INITIAL_READONLY_SECTIONS='.startup : { *(.startup) }'
+
+ # TEXT_START_SYMBOLS doesn't get what we want which is the start of
+ # all read-only sections; there's at least .init and .fini before it.
+ # We have to resort to trickery.
+ EXECUTABLE_SYMBOLS='PROVIDE (__Stext = .);'
+
+ # Smuggle an "OTHER_TEXT_END_SYMBOLS" here.
+ OTHER_READONLY_SECTIONS='PROVIDE (__Etext = .);'
+ DATA_START_SYMBOLS='PROVIDE (__Sdata = .);'
+
+ # Smuggle an "OTHER_DATA_END_SYMBOLS" here.
+ OTHER_GOT_SECTIONS='PROVIDE (__Edata = .);'
+
+ # If .bss does not immediately follow .data but has its own start
+ # address, we can't get to it with OTHER_BSS_SYMBOLS, neither can we
+ # use ADDR(.bss) there. Instead, we use the symbol support for the
+ # end symbol.
+ OTHER_BSS_END_SYMBOLS='
+ PROVIDE (__Ebss = .);
+ PROVIDE (__end = .);
+ __Sbss = SIZEOF (.sbss) != 0 ? ADDR (.sbss) : ADDR (.bss);
+ PROVIDE (_bss_start = __Sbss);
+ '
+
+ INIT_START='
+ . = ALIGN(2);
+ ___init__start = .;
+ PROVIDE (___do_global_ctors = .);
+ SHORT (0xe1fc); /* push srp */
+ SHORT (0xbe7e);
+ '
+
+ INIT_END='
+ SHORT (0x0d3e); /* jump [sp+] */
+ PROVIDE (__init__end = .);
+ PROVIDE (___init__end = .);
+ '
+
+ FINI_START='
+ . = ALIGN (2);
+ ___fini__start = .;
+ PROVIDE (___do_global_dtors = .);
+ SHORT (0xe1fc); /* push srp */
+ SHORT (0xbe7e);
+ '
+
+ FINI_END='
+ SHORT (0x0d3e); /* jump [sp+] */
+ PROVIDE (__fini__end = .);
+ ___fini__end = .;
+ '
+
+ CTOR_START='
+ PROVIDE (___ctors = .);
+ ___elf_ctors_dtors_begin = .;
+ '
+
+ CTOR_END='
+ PROVIDE (___ctors_end = .);
+ '
+
+ DTOR_START='
+ PROVIDE (___dtors = .);
+ '
+
+ CTOR_END='
+ PROVIDE (___dtors_end = .);
+ ___elf_ctors_dtors_end = .;
+ '
+
+
+ # Smuggle an "OTHER_ALL_END_SYMBOLS" here.
+ # Also add the other symbols provided for rsim/xsim and elinux.
+ OTHER_RELOCATING_SECTIONS='
+ PROVIDE (__Eall = .);
+ PROVIDE (__Endmem = 0x10000000);
+ PROVIDE (__Stacksize = 0);
+ '
*** /dev/null Tue Jan 1 05:00:00 1980
--- emulparams/crislinux.sh Sun Jun 11 10:35:17 2000
***************
*** 0 ****
--- 1,35 ----
+ # This is an approximation of what we want for a real linux system (with MMU and ELF).
+ MACHINE=
+ SCRIPT_NAME=elf
+ OUTPUT_FORMAT="elf32-cris"
+ ARCH=cris
+ TEMPLATE_NAME=elf32
+ ENTRY=_start
+ # Needed? Perhaps should be page-size alignment.
+ ALIGNMENT=32
+ GENERATE_SHLIB_SCRIPT=yes
+
+ # Is this high enough and low enough?
+ TEXT_START_ADDR=0x80000
+
+ # Do we need to set this higher?
+ MAXPAGESIZE=8192
+
+ # FIXME: GOT, PLT...
+
+ # Smuggle an "OTHER_TEXT_END_SYMBOLS" here.
+ OTHER_READONLY_SECTIONS='PROVIDE (__Etext = .);'
+ DATA_START_SYMBOLS='PROVIDE (__Sdata = .);'
+
+ # Smuggle an "OTHER_DATA_END_SYMBOLS" here.
+ OTHER_GOT_SECTIONS='PROVIDE (__Edata = .);'
+ OTHER_BSS_SYMBOLS='PROVIDE (__Sbss = .);'
+ OTHER_BSS_END_SYMBOLS='PROVIDE (__Ebss = .);'
+
+ # Smuggle an "OTHER_ALL_END_SYMBOLS" here.
+ # Also add the other symbols provided for rsim/xsim and elinux.
+ OTHER_RELOCATING_SECTIONS='
+ PROVIDE (__Eall = .);
+ PROVIDE(__Endmem = 0x10000000);
+ PROVIDE(__Stacksize = 0);
+ '
*** /dev/null Tue Jan 1 05:00:00 1980
--- scripttempl/crisaout.sc Tue Jul 18 20:54:02 2000
***************
*** 0 ****
--- 1,122 ----
+ cat <<EOF
+ OUTPUT_FORMAT("a.out-cris")
+ OUTPUT_ARCH(cris)
+ ENTRY(_start)
+ SECTIONS
+ {
+ .text ${RELOCATING+ ${TEXT_START_ADDR}}:
+ {
+ CREATE_OBJECT_SYMBOLS;
+ ${RELOCATING+ __Stext = .;}
+ ${RELOCATING+*(.startup)}
+ *(.text)
+ ${RELOCATING+*(.text.*)}
+ ${RELOCATING+*(.gnu.linkonce.t*)}
+ ${RELOCATING+*(.rodata)}
+ ${RELOCATING+*(.rodata.*)}
+ ${RELOCATING+*(.gnu.linkonce.r*)}
+
+ /* Do not "provide" init-start and fini-start symbols; they might be
+ referred to weakly, so the linker would not override the zero
+ default.
+ FIXME: It's somewhat unexpected to have code emitted by the linker
+ script. Some other mechanism could probably do better. */
+ ${RELOCATING+. = ALIGN (2);}
+ ${RELOCATING+ ___init__start = .;}
+ ${RELOCATING+PROVIDE (___do_global_ctors = .);}
+ ${RELOCATING+SHORT (0xe1fc); /* push srp */}
+ ${RELOCATING+SHORT (0xbe7e);}
+ ${RELOCATING+*(.init)}
+ ${RELOCATING+SHORT (0x0d3e); /* jump [sp+] */}
+ ${RELOCATING+PROVIDE (__init__end = .);}
+ ${RELOCATING+PROVIDE (___init__end = .);}
+
+ ${RELOCATING+. = ALIGN (2);}
+ ${RELOCATING+ ___fini__start = .;}
+ ${RELOCATING+PROVIDE (___do_global_dtors = .);}
+ ${RELOCATING+SHORT (0xe1fc); /* push srp */}
+ ${RELOCATING+SHORT (0xbe7e);}
+ ${RELOCATING+*(.fini)}
+ ${RELOCATING+SHORT (0x0d3e); /* jump [sp+] */}
+ ${RELOCATING+PROVIDE (__fini__end = .);}
+ ${RELOCATING+ ___fini__end = .;}
+
+ /* Putting constructors in constant store is sane as long as
+ there's no need for dynamic fixups. */
+ /* The constructors and destructors set symbols are unused now that
+ collect2 has its wicked way. */
+ ${CONSTRUCTING+ ___aout_ctors_dtors_begin = .;}
+ ${CONSTRUCTING+ SORT(CONSTRUCTORS);}
+ ${CONSTRUCTING+ ___aout_ctors_dtors_end = .;}
+
+ /* Cater to linking from ELF. */
+ ${CONSTRUCTING+ PROVIDE(___ctors = .);}
+ ${CONSTRUCTING+ ___elf_ctors_dtors_begin = .;}
+ ${CONSTRUCTING+ KEEP (*crtbegin.o(.ctors))}
+ ${CONSTRUCTING+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))}
+ ${CONSTRUCTING+ KEEP (*(SORT(.ctors.*)))}
+ ${CONSTRUCTING+ KEEP (*(.ctors))}
+ ${CONSTRUCTING+ PROVIDE(___ctors_end = .);}
+
+ ${CONSTRUCTING+ PROVIDE(___dtors = .);}
+ ${CONSTRUCTING+ KEEP (*crtbegin.o(.dtors))}
+ ${CONSTRUCTING+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))}
+ ${CONSTRUCTING+ KEEP (*(SORT(.dtors.*)))}
+ ${CONSTRUCTING+ KEEP (*(.dtors))}
+ ${CONSTRUCTING+ PROVIDE(___dtors_end = .);}
+ ${CONSTRUCTING+ ___elf_ctors_dtors_end = .;}
+
+ ${RELOCATING+ __Etext = .;}
+
+ /* Deprecated, use __Etext. */
+ ${RELOCATING+ PROVIDE(_etext = .);}
+ }
+
+ /* Any dot-relative start-expression (such as "ALIGN(2)", also including
+ the "default" .data alignment expression) will use the initial, raw
+ size of .text and will be incorrect if the alignment used is less
+ than the alignment for .text (which might depend on input and obj
+ format). FIXME: Seems like a bug in ld. Seems hard to fix. Seems
+ unimportant. */
+ .data :
+ {
+ ${RELOCATING+ __Sdata = .;}
+ *(.data);
+ ${RELOCATING+*(.data.*)}
+ ${RELOCATING+*(.gnu.linkonce.d*)}
+ ${RELOCATING+*(.eh_frame) /* FIXME: Make .text */}
+ ${RELOCATING+*(.gcc_except_table)}
+ ${RELOCATING+ __Edata = .;}
+
+ /* Deprecated, use __Edata. */
+ ${RELOCATING+ PROVIDE(_edata = .);}
+ }
+
+ .bss :
+ {
+ /* Deprecated, use __Sbss. */
+ ${RELOCATING+ PROVIDE(_bss_start = .);}
+
+ ${RELOCATING+ __Sbss = .;}
+ *(.bss)
+ ${RELOCATING+*(.bss.*)}
+ *(COMMON)
+ ${RELOCATING+ __Ebss = .;}
+
+ /* Deprecated, use __Ebss or __Eall as appropriate. */
+ ${RELOCATING+ PROVIDE(_end = .);}
+ ${RELOCATING+ PROVIDE(__end = .);}
+ }
+ ${RELOCATING+ __Eall = .;}
+
+ /* Unfortunately, stabs are not mappable from ELF to a.out.
+ It can probably be fixed with some amount of work. */
+ /DISCARD/ : { *(.stab) *(.stab*) *(.debug) *(.debug*) *(.comment) }
+
+ /* For the rsim and xsim simulators. */
+ ${RELOCATING+ PROVIDE(__Endmem = 0x10000000);}
+
+ /* For elinux. */
+ ${RELOCATING+ PROVIDE(__Stacksize = 0);}
+ }
+ EOF
brgds, H-P