diff options
author | Alan Modra <amodra@gmail.com> | 2008-01-28 05:59:24 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2008-01-28 05:59:24 +0000 |
commit | 47f6dab9a3fb353b0faca52fcc07d2f57c4d906c (patch) | |
tree | 9cc0fcaf801807941794b51c5a6726a21692d0b6 /bfd/elf32-spu.h | |
parent | 8693ff0ffb451be8a54dceda84bfc78246271dd9 (diff) | |
download | gdb-47f6dab9a3fb353b0faca52fcc07d2f57c4d906c.zip gdb-47f6dab9a3fb353b0faca52fcc07d2f57c4d906c.tar.gz gdb-47f6dab9a3fb353b0faca52fcc07d2f57c4d906c.tar.bz2 |
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.
Diffstat (limited to 'bfd/elf32-spu.h')
-rw-r--r-- | bfd/elf32-spu.h | 27 |
1 files changed, 17 insertions, 10 deletions
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); |