diff options
author | Alan Modra <amodra@gmail.com> | 2009-05-11 09:40:52 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2009-05-11 09:40:52 +0000 |
commit | 77ae44b0d39284201a63877b175d5ac622fe9b60 (patch) | |
tree | 319bfc91ea3c2c17b3fda3a9b858f5864ca92715 | |
parent | dbf32564efdb1d41dd7104755e770753bbb8457a (diff) | |
download | gdb-77ae44b0d39284201a63877b175d5ac622fe9b60.zip gdb-77ae44b0d39284201a63877b175d5ac622fe9b60.tar.gz gdb-77ae44b0d39284201a63877b175d5ac622fe9b60.tar.bz2 |
* elf32-spu.c (spu_elf_find_overlays): Don't use .ovl.init lma as
start of overlays.
(spu_elf_build_stubs): Don't define __icache_tagbase. Define
__icache_tag_array and __icache_tag_array_size.
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elf32-spu.c | 14 |
2 files changed, 19 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 5e2b411..2e0759a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2009-05-11 Ulrich Weigand <uweigand@de.ibm.com> + + * elf32-spu.c (spu_elf_find_overlays): Don't use .ovl.init lma as + start of overlays. + (spu_elf_build_stubs): Don't define __icache_tagbase. Define + __icache_tag_array and __icache_tag_array_size. + 2009-05-11 Masaki Muranaka <monaka@monami-software.com> * elf32-bfin.c (bfin_bfd_reloc_type_lookup): Remove unnecessary diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c index b6952a1..fab3139 100644 --- a/bfd/elf32-spu.c +++ b/bfd/elf32-spu.c @@ -657,7 +657,10 @@ spu_elf_find_overlays (struct bfd_link_info *info) { asection *s0 = alloc_sec[i - 1]; vma_start = s0->vma; - lma_start = s0->lma; + if (strncmp (s0->name, ".ovl.init", 9) != 0) + lma_start = s0->lma; + else + lma_start = s->lma; ovl_end = (s0->vma + ((bfd_vma) 1 << (htab->num_lines_log2 + htab->line_size_log2))); @@ -1938,12 +1941,19 @@ spu_elf_build_stubs (struct bfd_link_info *info) { bfd_vma off, icache_base, linklist; - h = define_ovtab_symbol (htab, "__icache_tagbase"); + h = define_ovtab_symbol (htab, "__icache_tag_array"); if (h == NULL) return FALSE; h->root.u.def.value = 0; h->size = 16 << htab->num_lines_log2; off = h->size; + + h = define_ovtab_symbol (htab, "__icache_tag_array_size"); + if (h == NULL) + return FALSE; + h->root.u.def.value = 16 << htab->num_lines_log2; + h->root.u.def.section = bfd_abs_section_ptr; + icache_base = htab->ovl_sec[0]->vma; linklist = (htab->ovtab->output_section->vma + htab->ovtab->output_offset |