* elf-bfd.h (struct elf_obj_tdata): Move linker_section_pointers..
* elf32-ppc.c (struct ppc_elf_obj_tdata): ..to here. New. (ppc_elf_tdata): Define. (elf_local_ptr_offsets): Adjust. (ppc_elf_mkobject): New function. (bfd_elf32_mkobject): Define.
This commit is contained in:
parent
0c83546ac6
commit
43c40ab2d9
3 changed files with 34 additions and 7 deletions
|
@ -1,5 +1,12 @@
|
|||
2003-07-08 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* elf-bfd.h (struct elf_obj_tdata): Move linker_section_pointers..
|
||||
* elf32-ppc.c (struct ppc_elf_obj_tdata): ..to here. New.
|
||||
(ppc_elf_tdata): Define.
|
||||
(elf_local_ptr_offsets): Adjust.
|
||||
(ppc_elf_mkobject): New function.
|
||||
(bfd_elf32_mkobject): Define.
|
||||
|
||||
* elfcode.h (elf_object_p): Allocate tdata via _bfd_set_format.
|
||||
* elfcore.h (elf_core_file_p): Likewise.
|
||||
* section.c (bfd_section_init): Remove prototype.
|
||||
|
|
|
@ -1202,10 +1202,6 @@ struct elf_obj_tdata
|
|||
/* Symbol version references to external objects. */
|
||||
Elf_Internal_Verneed *verref;
|
||||
|
||||
/* A mapping from local symbols to offsets into the various linker
|
||||
sections added. This is index by the symbol index. */
|
||||
void **linker_section_pointers;
|
||||
|
||||
/* The Irix 5 support uses two virtual sections, which represent
|
||||
text/data symbols defined in dynamic objects. */
|
||||
asymbol *elf_data_symbol;
|
||||
|
|
|
@ -109,9 +109,32 @@ typedef struct elf_linker_section_pointers
|
|||
bfd_boolean written_address_p;
|
||||
} elf_linker_section_pointers_t;
|
||||
|
||||
struct ppc_elf_obj_tdata
|
||||
{
|
||||
struct elf_obj_tdata elf;
|
||||
|
||||
/* A mapping from local symbols to offsets into the various linker
|
||||
sections added. This is index by the symbol index. */
|
||||
elf_linker_section_pointers_t **linker_section_pointers;
|
||||
};
|
||||
|
||||
#define ppc_elf_tdata(bfd) \
|
||||
((struct ppc_elf_obj_tdata *) (bfd)->tdata.any)
|
||||
|
||||
#define elf_local_ptr_offsets(bfd) \
|
||||
((elf_linker_section_pointers_t **) \
|
||||
(elf_tdata (bfd)->linker_section_pointers))
|
||||
(ppc_elf_tdata (bfd)->linker_section_pointers)
|
||||
|
||||
/* Override the generic function because we store some extras. */
|
||||
|
||||
static bfd_boolean
|
||||
ppc_elf_mkobject (bfd *abfd)
|
||||
{
|
||||
bfd_size_type amt = sizeof (struct ppc_elf_obj_tdata);
|
||||
abfd->tdata.any = bfd_zalloc (abfd, amt);
|
||||
if (abfd->tdata.any == NULL)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* The PPC linker needs to keep track of the number of relocs that it
|
||||
decides to copy as dynamic relocs in check_relocs for each symbol.
|
||||
|
@ -6022,6 +6045,7 @@ ppc_elf_final_write_processing (bfd *abfd, bfd_boolean linker ATTRIBUTE_UNUSED)
|
|||
#define elf_backend_plt_header_size PLT_INITIAL_ENTRY_SIZE
|
||||
#define elf_backend_rela_normal 1
|
||||
|
||||
#define bfd_elf32_mkobject ppc_elf_mkobject
|
||||
#define bfd_elf32_bfd_merge_private_bfd_data ppc_elf_merge_private_bfd_data
|
||||
#define bfd_elf32_bfd_relax_section ppc_elf_relax_section
|
||||
#define bfd_elf32_bfd_reloc_type_lookup ppc_elf_reloc_type_lookup
|
||||
|
|
Loading…
Reference in a new issue