summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2007-02-26 08:58:16 +0000
committerAlan Modra <amodra@bigpond.net.au>2007-02-26 08:58:16 +0000
commit751d3673d741c400736ac004b8fb0d74bc10badd (patch)
tree256418365851c4892cb5edcdca78d434f6676a1c
parent5f282c4f9c1d930a51c5dc2d50dd28eba71667c4 (diff)
downloadbinutils-redhat-751d3673d741c400736ac004b8fb0d74bc10badd.tar.gz
* 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.
-rw-r--r--ld/ChangeLog13
-rw-r--r--ld/Makefile.am10
-rw-r--r--ld/Makefile.in10
-rw-r--r--ld/emultempl/spu_inc.s8
-rw-r--r--ld/emultempl/spu_none.s6
-rw-r--r--ld/emultempl/spu_ovl.S2
-rw-r--r--ld/emultempl/spuelf.em10
7 files changed, 46 insertions, 13 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index a119a0a38b..f6de156690 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,16 @@
+2007-02-26 Alan Modra <amodra@bigpond.net.au>
+
+ * 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 <joseph@codesourcery.com>
* configure.tgt (mips64*el-*-linux-*, mips64*-*-linux-*,
diff --git a/ld/Makefile.am b/ld/Makefile.am
index a62167a753..d83bb16177 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 c19ff97547..cf3357bdf0 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 243bd1061e..29a076cdff 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 0000000000..f0d23187ab
--- /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 3af4fd897c..53d82a41e7 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 de6a914a88..95b1cb28e1 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;