* cpu-powerpc.c: Comment on ordering of arch_info.
* elf32-ppc.c (ppc_elf_object_p): New function. (elf_backend_object_p): Define. * elf64-ppc.c (ppc64_elf_object_p): New function. (elf_backend_object_p): Define.
This commit is contained in:
parent
6aa4d13aab
commit
feee612b24
4 changed files with 62 additions and 1 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2002-06-27 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* cpu-powerpc.c: Comment on ordering of arch_info.
|
||||||
|
* elf32-ppc.c (ppc_elf_object_p): New function.
|
||||||
|
(elf_backend_object_p): Define.
|
||||||
|
* elf64-ppc.c (ppc64_elf_object_p): New function.
|
||||||
|
(elf_backend_object_p): Define.
|
||||||
|
|
||||||
2002-06-26 Jason Thorpe <thorpej@wasabisystems.com>
|
2002-06-26 Jason Thorpe <thorpej@wasabisystems.com>
|
||||||
|
|
||||||
* configure.in (vax-*-netbsd*): Set COREFILE to netbsd-core.lo.
|
* configure.in (vax-*-netbsd*): Set COREFILE to netbsd-core.lo.
|
||||||
|
|
|
@ -50,7 +50,8 @@ powerpc_compatible (a,b)
|
||||||
|
|
||||||
const bfd_arch_info_type bfd_powerpc_archs[] =
|
const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||||
{
|
{
|
||||||
#if BFD_DEFAULT_TARGET_SIZE == 64 /* default arch must come first. */
|
#if BFD_DEFAULT_TARGET_SIZE == 64
|
||||||
|
/* Default arch must come first. */
|
||||||
{
|
{
|
||||||
64, /* 64 bits in a word */
|
64, /* 64 bits in a word */
|
||||||
64, /* 64 bits in an address */
|
64, /* 64 bits in an address */
|
||||||
|
@ -65,6 +66,8 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||||
bfd_default_scan,
|
bfd_default_scan,
|
||||||
&bfd_powerpc_archs[1]
|
&bfd_powerpc_archs[1]
|
||||||
},
|
},
|
||||||
|
/* elf32-ppc:ppc_elf_object_p relies on the default 32 bit arch
|
||||||
|
being immediately after the 64 bit default. */
|
||||||
{
|
{
|
||||||
32, /* 32 bits in a word */
|
32, /* 32 bits in a word */
|
||||||
32, /* 32 bits in an address */
|
32, /* 32 bits in an address */
|
||||||
|
@ -80,6 +83,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||||
&bfd_powerpc_archs[2],
|
&bfd_powerpc_archs[2],
|
||||||
},
|
},
|
||||||
#else
|
#else
|
||||||
|
/* Default arch must come first. */
|
||||||
{
|
{
|
||||||
32, /* 32 bits in a word */
|
32, /* 32 bits in a word */
|
||||||
32, /* 32 bits in an address */
|
32, /* 32 bits in an address */
|
||||||
|
@ -94,6 +98,8 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||||
bfd_default_scan,
|
bfd_default_scan,
|
||||||
&bfd_powerpc_archs[1],
|
&bfd_powerpc_archs[1],
|
||||||
},
|
},
|
||||||
|
/* elf64-ppc:ppc64_elf_object_p relies on the default 64 bit arch
|
||||||
|
being immediately after the 32 bit default. */
|
||||||
{
|
{
|
||||||
64, /* 64 bits in a word */
|
64, /* 64 bits in a word */
|
||||||
64, /* 64 bits in an address */
|
64, /* 64 bits in an address */
|
||||||
|
|
|
@ -43,6 +43,7 @@ static boolean ppc_elf_relax_section
|
||||||
PARAMS ((bfd *, asection *, struct bfd_link_info *, boolean *));
|
PARAMS ((bfd *, asection *, struct bfd_link_info *, boolean *));
|
||||||
static bfd_reloc_status_type ppc_elf_addr16_ha_reloc
|
static bfd_reloc_status_type ppc_elf_addr16_ha_reloc
|
||||||
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
|
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
|
||||||
|
static boolean ppc_elf_object_p PARAMS ((bfd *));
|
||||||
static boolean ppc_elf_set_private_flags PARAMS ((bfd *, flagword));
|
static boolean ppc_elf_set_private_flags PARAMS ((bfd *, flagword));
|
||||||
static boolean ppc_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *));
|
static boolean ppc_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *));
|
||||||
|
|
||||||
|
@ -1380,6 +1381,27 @@ ppc_elf_addr16_ha_reloc (abfd, reloc_entry, symbol, data, input_section,
|
||||||
return bfd_reloc_continue;
|
return bfd_reloc_continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Fix bad default arch selected for a 32 bit input bfd when the
|
||||||
|
default is 64 bit. */
|
||||||
|
|
||||||
|
static boolean
|
||||||
|
ppc_elf_object_p (abfd)
|
||||||
|
bfd *abfd;
|
||||||
|
{
|
||||||
|
if (abfd->arch_info->the_default && abfd->arch_info->bits_per_word == 64)
|
||||||
|
{
|
||||||
|
Elf_Internal_Ehdr *i_ehdr = elf_elfheader (abfd);
|
||||||
|
|
||||||
|
if (i_ehdr->e_ident[EI_CLASS] == ELFCLASS32)
|
||||||
|
{
|
||||||
|
/* Relies on arch after 64 bit default being 32 bit default. */
|
||||||
|
abfd->arch_info = abfd->arch_info->next;
|
||||||
|
BFD_ASSERT (abfd->arch_info->bits_per_word == 32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/* Function to set whether a module needs the -mrelocatable bit set. */
|
/* Function to set whether a module needs the -mrelocatable bit set. */
|
||||||
|
|
||||||
static boolean
|
static boolean
|
||||||
|
@ -3797,6 +3819,7 @@ ppc_elf_grok_psinfo (abfd, note)
|
||||||
#define bfd_elf32_bfd_set_private_flags ppc_elf_set_private_flags
|
#define bfd_elf32_bfd_set_private_flags ppc_elf_set_private_flags
|
||||||
#define bfd_elf32_bfd_final_link _bfd_elf32_gc_common_final_link
|
#define bfd_elf32_bfd_final_link _bfd_elf32_gc_common_final_link
|
||||||
|
|
||||||
|
#define elf_backend_object_p ppc_elf_object_p
|
||||||
#define elf_backend_gc_mark_hook ppc_elf_gc_mark_hook
|
#define elf_backend_gc_mark_hook ppc_elf_gc_mark_hook
|
||||||
#define elf_backend_gc_sweep_hook ppc_elf_gc_sweep_hook
|
#define elf_backend_gc_sweep_hook ppc_elf_gc_sweep_hook
|
||||||
#define elf_backend_section_from_shdr ppc_elf_section_from_shdr
|
#define elf_backend_section_from_shdr ppc_elf_section_from_shdr
|
||||||
|
|
|
@ -57,6 +57,8 @@ static bfd_reloc_status_type ppc64_elf_unhandled_reloc
|
||||||
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
|
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
|
||||||
static void ppc64_elf_get_symbol_info
|
static void ppc64_elf_get_symbol_info
|
||||||
PARAMS ((bfd *, asymbol *, symbol_info *));
|
PARAMS ((bfd *, asymbol *, symbol_info *));
|
||||||
|
static boolean ppc64_elf_object_p
|
||||||
|
PARAMS ((bfd *));
|
||||||
static boolean ppc64_elf_set_private_flags
|
static boolean ppc64_elf_set_private_flags
|
||||||
PARAMS ((bfd *, flagword));
|
PARAMS ((bfd *, flagword));
|
||||||
static boolean ppc64_elf_merge_private_bfd_data
|
static boolean ppc64_elf_merge_private_bfd_data
|
||||||
|
@ -1649,6 +1651,27 @@ ppc64_elf_get_symbol_info (abfd, symbol, ret)
|
||||||
ret->type = (symbol->flags & BSF_GLOBAL) != 0 ? 'D' : 'd';
|
ret->type = (symbol->flags & BSF_GLOBAL) != 0 ? 'D' : 'd';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Fix bad default arch selected for a 64 bit input bfd when the
|
||||||
|
default is 32 bit. */
|
||||||
|
|
||||||
|
static boolean
|
||||||
|
ppc64_elf_object_p (abfd)
|
||||||
|
bfd *abfd;
|
||||||
|
{
|
||||||
|
if (abfd->arch_info->the_default && abfd->arch_info->bits_per_word == 32)
|
||||||
|
{
|
||||||
|
Elf_Internal_Ehdr *i_ehdr = elf_elfheader (abfd);
|
||||||
|
|
||||||
|
if (i_ehdr->e_ident[EI_CLASS] == ELFCLASS64)
|
||||||
|
{
|
||||||
|
/* Relies on arch after 32 bit default being 64 bit default. */
|
||||||
|
abfd->arch_info = abfd->arch_info->next;
|
||||||
|
BFD_ASSERT (abfd->arch_info->bits_per_word == 64);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/* Function to set whether a module needs the -mrelocatable bit set. */
|
/* Function to set whether a module needs the -mrelocatable bit set. */
|
||||||
|
|
||||||
static boolean
|
static boolean
|
||||||
|
@ -6140,6 +6163,7 @@ ppc64_elf_finish_dynamic_sections (output_bfd, info)
|
||||||
#define bfd_elf64_bfd_link_hash_table_free ppc64_elf_link_hash_table_free
|
#define bfd_elf64_bfd_link_hash_table_free ppc64_elf_link_hash_table_free
|
||||||
#define bfd_elf64_get_symbol_info ppc64_elf_get_symbol_info
|
#define bfd_elf64_get_symbol_info ppc64_elf_get_symbol_info
|
||||||
|
|
||||||
|
#define elf_backend_object_p ppc64_elf_object_p
|
||||||
#define elf_backend_section_from_shdr ppc64_elf_section_from_shdr
|
#define elf_backend_section_from_shdr ppc64_elf_section_from_shdr
|
||||||
#define elf_backend_create_dynamic_sections ppc64_elf_create_dynamic_sections
|
#define elf_backend_create_dynamic_sections ppc64_elf_create_dynamic_sections
|
||||||
#define elf_backend_copy_indirect_symbol ppc64_elf_copy_indirect_symbol
|
#define elf_backend_copy_indirect_symbol ppc64_elf_copy_indirect_symbol
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue