* elf32-spu.c (spu_elf_size_sections): Omit fixups for non-alloc
sections. (spu_elf_create_sections): Mark .fixup with SEC_LINKER_CREATED and set dynobj. (spu_elf_finish_dynamic_sections): New function. (elf_backend_finish_dynamic_sections): Define.
This commit is contained in:
parent
40703ddd07
commit
29c702418f
2 changed files with 25 additions and 4 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2010-09-16 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* elf32-spu.c (spu_elf_size_sections): Omit fixups for non-alloc
|
||||||
|
sections.
|
||||||
|
(spu_elf_create_sections): Mark .fixup with SEC_LINKER_CREATED and
|
||||||
|
set dynobj.
|
||||||
|
(spu_elf_finish_dynamic_sections): New function.
|
||||||
|
(elf_backend_finish_dynamic_sections): Define.
|
||||||
|
|
||||||
2010-09-16 Alan Modra <amodra@gmail.com>
|
2010-09-16 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* elf.c (bfd_elf_get_default_section_type): Don't test SEC_NEVER_LOAD.
|
* elf.c (bfd_elf_get_default_section_type): Don't test SEC_NEVER_LOAD.
|
||||||
|
|
|
@ -602,9 +602,12 @@ spu_elf_create_sections (struct bfd_link_info *info)
|
||||||
{
|
{
|
||||||
asection *s;
|
asection *s;
|
||||||
flagword flags;
|
flagword flags;
|
||||||
ibfd = info->input_bfds;
|
|
||||||
flags = SEC_LOAD | SEC_ALLOC | SEC_READONLY | SEC_HAS_CONTENTS
|
if (htab->elf.dynobj == NULL)
|
||||||
| SEC_IN_MEMORY;
|
htab->elf.dynobj = ibfd;
|
||||||
|
ibfd = htab->elf.dynobj;
|
||||||
|
flags = (SEC_LOAD | SEC_ALLOC | SEC_READONLY | SEC_HAS_CONTENTS
|
||||||
|
| SEC_IN_MEMORY | SEC_LINKER_CREATED);
|
||||||
s = bfd_make_section_anyway_with_flags (ibfd, ".fixup", flags);
|
s = bfd_make_section_anyway_with_flags (ibfd, ".fixup", flags);
|
||||||
if (s == NULL || !bfd_set_section_alignment (ibfd, s, 2))
|
if (s == NULL || !bfd_set_section_alignment (ibfd, s, 2))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -5096,6 +5099,13 @@ spu_elf_relocate_section (bfd *output_bfd,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bfd_boolean
|
||||||
|
spu_elf_finish_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||||
|
struct bfd_link_info *info ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Adjust _SPUEAR_ syms to point at their overlay stubs. */
|
/* Adjust _SPUEAR_ syms to point at their overlay stubs. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -5402,7 +5412,8 @@ spu_elf_size_sections (bfd * output_bfd, struct bfd_link_info *info)
|
||||||
|
|
||||||
/* If there aren't any relocs, then there's nothing more
|
/* If there aren't any relocs, then there's nothing more
|
||||||
to do. */
|
to do. */
|
||||||
if ((isec->flags & SEC_RELOC) == 0
|
if ((isec->flags & SEC_ALLOC) == 0
|
||||||
|
|| (isec->flags & SEC_RELOC) == 0
|
||||||
|| isec->reloc_count == 0)
|
|| isec->reloc_count == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -5457,6 +5468,7 @@ spu_elf_size_sections (bfd * output_bfd, struct bfd_link_info *info)
|
||||||
#define elf_info_to_howto spu_elf_info_to_howto
|
#define elf_info_to_howto spu_elf_info_to_howto
|
||||||
#define elf_backend_count_relocs spu_elf_count_relocs
|
#define elf_backend_count_relocs spu_elf_count_relocs
|
||||||
#define elf_backend_relocate_section spu_elf_relocate_section
|
#define elf_backend_relocate_section spu_elf_relocate_section
|
||||||
|
#define elf_backend_finish_dynamic_sections spu_elf_finish_dynamic_sections
|
||||||
#define elf_backend_symbol_processing spu_elf_backend_symbol_processing
|
#define elf_backend_symbol_processing spu_elf_backend_symbol_processing
|
||||||
#define elf_backend_link_output_symbol_hook spu_elf_output_symbol_hook
|
#define elf_backend_link_output_symbol_hook spu_elf_output_symbol_hook
|
||||||
#define elf_backend_object_p spu_elf_object_p
|
#define elf_backend_object_p spu_elf_object_p
|
||||||
|
|
Loading…
Reference in a new issue