From 45d3b878abeec9aba15bde906804909c480fbb6f Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 26 Feb 2007 08:58:16 +0000 Subject: [PATCH] * emultempl/spuelf.em (_binary_builtin_ovl_mgr_start): Rename to _binary_spu_ovl_o_start. (_binary_builtin_ovl_mgr_end): Rename to _binary_spu_ovl_o_end. (spu_elf_load_ovl_mgr): Fatal error on missing overlay manager. * emultempl/spu_inc.s: Rename symbols. * emultempl/spu_none.s: New file. * emultempl/spu_ovl.S: Update copyright. * Makefile.am (spu_inc.o): Try building with ld -r first, then gas incbin, then build without overlay manager. * Makefile.in: Regenerate. --- ld/ChangeLog | 13 +++++++++++++ ld/Makefile.am | 10 ++++++++-- ld/Makefile.in | 10 ++++++++-- ld/emultempl/spu_inc.s | 8 ++++---- ld/emultempl/spu_none.s | 6 ++++++ ld/emultempl/spu_ovl.S | 2 +- ld/emultempl/spuelf.em | 10 ++++++---- 7 files changed, 46 insertions(+), 13 deletions(-) create mode 100644 ld/emultempl/spu_none.s diff --git a/ld/ChangeLog b/ld/ChangeLog index a119a0a38b4..f6de1566906 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,16 @@ +2007-02-26 Alan Modra + + * emultempl/spuelf.em (_binary_builtin_ovl_mgr_start): Rename + to _binary_spu_ovl_o_start. + (_binary_builtin_ovl_mgr_end): Rename to _binary_spu_ovl_o_end. + (spu_elf_load_ovl_mgr): Fatal error on missing overlay manager. + * emultempl/spu_inc.s: Rename symbols. + * emultempl/spu_none.s: New file. + * emultempl/spu_ovl.S: Update copyright. + * Makefile.am (spu_inc.o): Try building with ld -r first, then + gas incbin, then build without overlay manager. + * Makefile.in: Regenerate. + 2007-02-22 Joseph Myers * configure.tgt (mips64*el-*-linux-*, mips64*-*-linux-*, diff --git a/ld/Makefile.am b/ld/Makefile.am index a62167a7534..d83bb16177f 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -724,8 +724,14 @@ eelf32_sparc_vxworks.c: $(srcdir)/emulparams/elf32_sparc_vxworks.sh \ eelf32_spu.c: $(srcdir)/emulparams/elf32_spu.sh $(srcdir)/emultempl/spuelf.em \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32_spu "$(tdir_elf32_spu)" -spu_inc.o: $(srcdir)/emultempl/spu_inc.s $(srcdir)/emultempl/spu_ovl.o - $(CC) -c -Wa,-I,$(srcdir)/emultempl -o $@ $< +spu_inc.o: $(srcdir)/emultempl/spu_inc.s $(srcdir)/emultempl/spu_none.s \ + $(srcdir)/emultempl/spu_ovl.o + cp $(srcdir)/emultempl/spu_ovl.o spu_ovl.o; \ + if ! ld -r -o $@ -b binary spu_ovl.o; then \ + if ! $(CC) -c -o $@ $(srcdir)/emultempl/spu_inc.s; then \ + $(CC) -c -o $@ $(srcdir)/emultempl/spu_none.s; \ + fi \ + fi $(srcdir)/emultempl/spu_ovl.o: @MAINT@ $(srcdir)/emultempl/spu_ovl.S cpp -DOVLY_IRQ_SAVE $(srcdir)/emultempl/spu_ovl.S spu_ovl.s if ../gas/as-new --version \ diff --git a/ld/Makefile.in b/ld/Makefile.in index c19ff975475..cf3357bdf08 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -1535,8 +1535,14 @@ eelf32_sparc_vxworks.c: $(srcdir)/emulparams/elf32_sparc_vxworks.sh \ eelf32_spu.c: $(srcdir)/emulparams/elf32_spu.sh $(srcdir)/emultempl/spuelf.em \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32_spu "$(tdir_elf32_spu)" -spu_inc.o: $(srcdir)/emultempl/spu_inc.s $(srcdir)/emultempl/spu_ovl.o - $(CC) -c -Wa,-I,$(srcdir)/emultempl -o $@ $< +spu_inc.o: $(srcdir)/emultempl/spu_inc.s $(srcdir)/emultempl/spu_none.s \ + $(srcdir)/emultempl/spu_ovl.o + cp $(srcdir)/emultempl/spu_ovl.o spu_ovl.o; \ + if ! ld -r -o $@ -b binary spu_ovl.o; then \ + if ! $(CC) -c -o $@ $(srcdir)/emultempl/spu_inc.s; then \ + $(CC) -c -o $@ $(srcdir)/emultempl/spu_none.s; \ + fi \ + fi $(srcdir)/emultempl/spu_ovl.o: @MAINT@ $(srcdir)/emultempl/spu_ovl.S cpp -DOVLY_IRQ_SAVE $(srcdir)/emultempl/spu_ovl.S spu_ovl.s if ../gas/as-new --version \ diff --git a/ld/emultempl/spu_inc.s b/ld/emultempl/spu_inc.s index 243bd1061e9..29a076cdffe 100644 --- a/ld/emultempl/spu_inc.s +++ b/ld/emultempl/spu_inc.s @@ -1,7 +1,7 @@ .text - .globl _binary_builtin_ovl_mgr_start - .globl _binary_builtin_ovl_mgr_end + .globl _binary_spu_ovl_o_start + .globl _binary_spu_ovl_o_end -_binary_builtin_ovl_mgr_start: +_binary_spu_ovl_o_start: .incbin "spu_ovl.o" -_binary_builtin_ovl_mgr_end: +_binary_spu_ovl_o_end: diff --git a/ld/emultempl/spu_none.s b/ld/emultempl/spu_none.s new file mode 100644 index 00000000000..f0d23187ab8 --- /dev/null +++ b/ld/emultempl/spu_none.s @@ -0,0 +1,6 @@ + .text + .globl _binary_spu_ovl_o_start + .globl _binary_spu_ovl_o_end + +_binary_spu_ovl_o_start: +_binary_spu_ovl_o_end: diff --git a/ld/emultempl/spu_ovl.S b/ld/emultempl/spu_ovl.S index 3af4fd897c1..53d82a41e7c 100644 --- a/ld/emultempl/spu_ovl.S +++ b/ld/emultempl/spu_ovl.S @@ -1,6 +1,6 @@ /* Overlay manager for SPU. - Copyright 2006 Free Software Foundation, Inc. + Copyright 2006, 2007 Free Software Foundation, Inc. This file is part of GLD, the Gnu Linker. diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em index de6a914a883..95b1cb28e1e 100644 --- a/ld/emultempl/spuelf.em +++ b/ld/emultempl/spuelf.em @@ -38,12 +38,12 @@ static int emit_stub_syms = 0; static bfd_vma local_store_lo = 0; static bfd_vma local_store_hi = 0x3ffff; -extern void *_binary_builtin_ovl_mgr_start; -extern void *_binary_builtin_ovl_mgr_end; +extern void *_binary_spu_ovl_o_start; +extern void *_binary_spu_ovl_o_end; static const struct _ovl_stream ovl_mgr_stream = { - &_binary_builtin_ovl_mgr_start, - &_binary_builtin_ovl_mgr_end + &_binary_spu_ovl_o_start, + &_binary_spu_ovl_o_end }; static asection *toe = NULL; @@ -118,6 +118,8 @@ spu_elf_load_ovl_mgr (void) { /* User supplied __ovly_load. */ } + else if (ovl_mgr_stream.start == ovl_mgr_stream.end) + einfo ("%F%P: no built-in overlay manager\n"); else { lang_input_statement_type *ovl_is; -- 2.30.2