From e5e6a5ff6ea89e1f8627d16d492288e0b8e834b1 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 4 Aug 2008 13:01:42 +0000 Subject: [PATCH] * elf32-spu.c (spu_elf_auto_overlay): Use the maximum possible if --fixed-space request is too large. --- bfd/ChangeLog | 5 +++++ bfd/elf32-spu.c | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a08f5d8f5bb..4729ed266fc 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2008-08-04 Alan Modra + + * elf32-spu.c (spu_elf_auto_overlay): Use the maximum possible + if --fixed-space request is too large. + 2008-08-04 Alan Modra * Makefile.am (SRC-POTFILES.in, BLD-POTFILES.in): Set LC_ALL=C. diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c index 3a5728b4204..17ff079c0cc 100644 --- a/bfd/elf32-spu.c +++ b/bfd/elf32-spu.c @@ -3608,14 +3608,18 @@ spu_elf_auto_overlay (struct bfd_link_info *info, (bfd_vma) mos_param.max_overlay_size); /* Now see if we should put some functions in the non-overlay area. */ - if (fixed_size < htab->overlay_fixed - && htab->overlay_fixed + mos_param.max_overlay_size < htab->local_store) + else if (fixed_size < htab->overlay_fixed) { - unsigned int lib_size = htab->overlay_fixed - fixed_size; + unsigned int max_fixed, lib_size; + + max_fixed = htab->local_store - mos_param.max_overlay_size; + if (max_fixed > htab->overlay_fixed) + max_fixed = htab->overlay_fixed; + lib_size = max_fixed - fixed_size; lib_size = auto_ovl_lib_functions (info, lib_size); if (lib_size == (unsigned int) -1) goto err_exit; - fixed_size = htab->overlay_fixed - lib_size; + fixed_size = max_fixed - lib_size; } /* Build an array of sections, suitably sorted to place into -- 2.30.2