From 47f6dab9a3fb353b0faca52fcc07d2f57c4d906c Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 28 Jan 2008 05:59:24 +0000 Subject: Rewrite SPU overlay handling code. Put overlay calls stubs in the overlays where possible. Use a faster call stub, or optionally at compile time, a more compact stub. Double size of _ovly_buf_table so that low bit of _ovly_table.buf can be used as a "present" bit. Reserve an extra _ovly_table entry for index zero. --- bfd/elf32-spu.h | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'bfd/elf32-spu.h') diff --git a/bfd/elf32-spu.h b/bfd/elf32-spu.h index 1c421d9..4478e20 100644 --- a/bfd/elf32-spu.h +++ b/bfd/elf32-spu.h @@ -26,12 +26,20 @@ struct _spu_elf_section_data { struct bfd_elf_section_data elf; - /* Stack analysis info kept for this section. */ + union { + /* Info kept for input sections. */ + struct { + /* Stack analysis info kept for this section. */ + struct spu_elf_stack_info *stack_info; + } i; - struct spu_elf_stack_info *stack_info; - - /* Non-zero for overlay output sections. */ - unsigned int ovl_index; + /* Info kept for output sections. */ + struct { + /* Non-zero for overlay output sections. */ + unsigned int ovl_index; + unsigned int ovl_buf; + } o; + } u; }; #define spu_elf_section_data(sec) \ @@ -49,9 +57,8 @@ extern bfd_boolean spu_elf_open_builtin_lib (bfd **, extern bfd_boolean spu_elf_create_sections (bfd *, struct bfd_link_info *, int, int); extern bfd_boolean spu_elf_find_overlays (bfd *, struct bfd_link_info *); -extern bfd_boolean spu_elf_size_stubs (bfd *, struct bfd_link_info *, int, int, - asection **, asection **, - asection **); -extern bfd_boolean spu_elf_build_stubs (struct bfd_link_info *, int, - asection *); +extern int spu_elf_size_stubs (bfd *, struct bfd_link_info *, + void (*) (asection *, asection *, const char *), + int); +extern bfd_boolean spu_elf_build_stubs (struct bfd_link_info *, int); extern asection *spu_elf_check_vma (bfd *, bfd_vma, bfd_vma); -- cgit v1.1