* elf32-spu.c (mark_overlay_section): Move code calculating

max_overlay_size to correct block.
	(spu_elf_auto_overlay): Don't use %x in einfo error message.
This commit is contained in:
Alan Modra
2008-08-02 06:44:43 +00:00
parent 9b4e57660d
commit 4f0d75bedd
2 changed files with 18 additions and 9 deletions

View File

@ -1,3 +1,9 @@
2008-08-02 Alan Modra <amodra@bigpond.net.au>
* elf32-spu.c (mark_overlay_section): Move code calculating
max_overlay_size to correct block.
(spu_elf_auto_overlay): Don't use %x in einfo error message.
2008-08-01 Alan Modra <amodra@bigpond.net.au> 2008-08-01 Alan Modra <amodra@bigpond.net.au>
Jan Kratochvil <jan.kratochvil@redhat.com> Jan Kratochvil <jan.kratochvil@redhat.com>

View File

@ -2807,6 +2807,8 @@ mark_overlay_section (struct function_info *fun,
fun->visit4 = TRUE; fun->visit4 = TRUE;
if (!fun->sec->linker_mark) if (!fun->sec->linker_mark)
{ {
unsigned int size;
fun->sec->linker_mark = 1; fun->sec->linker_mark = 1;
fun->sec->gc_mark = 1; fun->sec->gc_mark = 1;
fun->sec->segment_mark = 0; fun->sec->segment_mark = 0;
@ -2814,10 +2816,10 @@ mark_overlay_section (struct function_info *fun,
be!), and SEC_CODE is clear on rodata sections. We use be!), and SEC_CODE is clear on rodata sections. We use
this flag to differentiate the two overlay section types. */ this flag to differentiate the two overlay section types. */
fun->sec->flags |= SEC_CODE; fun->sec->flags |= SEC_CODE;
if (spu_hash_table (info)->auto_overlay & OVERLAY_RODATA) if (spu_hash_table (info)->auto_overlay & OVERLAY_RODATA)
{ {
char *name = NULL; char *name = NULL;
unsigned int size;
/* Find the rodata section corresponding to this function's /* Find the rodata section corresponding to this function's
text section. */ text section. */
@ -2872,13 +2874,13 @@ mark_overlay_section (struct function_info *fun,
} }
free (name); free (name);
} }
}
size = fun->sec->size; size = fun->sec->size;
if (fun->rodata) if (fun->rodata)
size += fun->rodata->size; size += fun->rodata->size;
if (mos_param->max_overlay_size < size) if (mos_param->max_overlay_size < size)
mos_param->max_overlay_size = size; mos_param->max_overlay_size = size;
} }
}
for (count = 0, call = fun->call_list; call != NULL; call = call->next) for (count = 0, call = fun->call_list; call != NULL; call = call->next)
count += 1; count += 1;
@ -3600,9 +3602,10 @@ spu_elf_auto_overlay (struct bfd_link_info *info,
} }
if (fixed_size + mos_param.max_overlay_size > htab->local_store) if (fixed_size + mos_param.max_overlay_size > htab->local_store)
info->callbacks->einfo (_("non-overlay plus maximum overlay size " info->callbacks->einfo (_("non-overlay size of 0x%v plus maximum overlay "
"of 0x%x exceeds local store\n"), "size of 0x%v exceeds local store\n"),
fixed_size + mos_param.max_overlay_size); (bfd_vma) fixed_size,
(bfd_vma) mos_param.max_overlay_size);
/* Now see if we should put some functions in the non-overlay area. */ /* Now see if we should put some functions in the non-overlay area. */
if (fixed_size < htab->overlay_fixed if (fixed_size < htab->overlay_fixed