Line 327... |
Line 327... |
unsigned int flags;
|
unsigned int flags;
|
|
|
i_ehdrp = elf_elfheader (abfd);
|
i_ehdrp = elf_elfheader (abfd);
|
if (strcmp (bfd_get_target (abfd), "elf64-hppa-linux") == 0)
|
if (strcmp (bfd_get_target (abfd), "elf64-hppa-linux") == 0)
|
{
|
{
|
/* GCC on hppa-linux produces binaries with OSABI=Linux,
|
/* GCC on hppa-linux produces binaries with OSABI=GNU,
|
but the kernel produces corefiles with OSABI=SysV. */
|
but the kernel produces corefiles with OSABI=SysV. */
|
if (i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_LINUX
|
if (i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_GNU
|
&& i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_NONE) /* aka SYSV */
|
&& i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_NONE) /* aka SYSV */
|
return FALSE;
|
return FALSE;
|
}
|
}
|
else
|
else
|
{
|
{
|
Line 3270... |
Line 3270... |
/* Make sure we can reach the branch target. */
|
/* Make sure we can reach the branch target. */
|
if (max_branch_offset != 0
|
if (max_branch_offset != 0
|
&& value + addend + max_branch_offset >= 2*max_branch_offset)
|
&& value + addend + max_branch_offset >= 2*max_branch_offset)
|
{
|
{
|
(*_bfd_error_handler)
|
(*_bfd_error_handler)
|
(_("%B(%A+0x%lx): cannot reach %s"),
|
(_("%B(%A+0x" BFD_VMA_FMT "x): cannot reach %s"),
|
input_bfd,
|
input_bfd,
|
input_section,
|
input_section,
|
offset,
|
offset,
|
eh->root.root.string);
|
eh ? eh->root.root.string : "unknown");
|
bfd_set_error (bfd_error_bad_value);
|
bfd_set_error (bfd_error_bad_value);
|
return bfd_reloc_notsupported;
|
return bfd_reloc_overflow;
|
}
|
}
|
|
|
/* Adjust for any field selectors. */
|
/* Adjust for any field selectors. */
|
if (r_type == R_PARISC_PCREL17R)
|
if (r_type == R_PARISC_PCREL17R)
|
value = hppa_field_adjust (value, addend, e_rsel);
|
value = hppa_field_adjust (value, addend, e_rsel);
|
Line 4095... |
Line 4095... |
#undef TARGET_BIG_SYM
|
#undef TARGET_BIG_SYM
|
#define TARGET_BIG_SYM bfd_elf64_hppa_linux_vec
|
#define TARGET_BIG_SYM bfd_elf64_hppa_linux_vec
|
#undef TARGET_BIG_NAME
|
#undef TARGET_BIG_NAME
|
#define TARGET_BIG_NAME "elf64-hppa-linux"
|
#define TARGET_BIG_NAME "elf64-hppa-linux"
|
#undef ELF_OSABI
|
#undef ELF_OSABI
|
#define ELF_OSABI ELFOSABI_LINUX
|
#define ELF_OSABI ELFOSABI_GNU
|
#undef elf_backend_post_process_headers
|
#undef elf_backend_post_process_headers
|
#define elf_backend_post_process_headers _bfd_elf_set_osabi
|
#define elf_backend_post_process_headers _bfd_elf_set_osabi
|
#undef elf64_bed
|
#undef elf64_bed
|
#define elf64_bed elf64_hppa_linux_bed
|
#define elf64_bed elf64_hppa_linux_bed
|
|
|