1
1
/* X86-64 specific support for 64-bit ELF
2
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
2
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
3
3
Free Software Foundation, Inc.
4
4
Contributed by Jan Hubicka <jh@suse.cz>.
518
518
if (entry == NULL)
520
entry = bfd_hash_allocate (table,
521
sizeof (struct elf64_x86_64_link_hash_entry));
520
entry = (struct bfd_hash_entry *)
521
bfd_hash_allocate (table,
522
sizeof (struct elf64_x86_64_link_hash_entry));
522
523
if (entry == NULL)
3634
3635
case R_X86_64_DTPOFF32:
3635
if (info->shared || (input_section->flags & SEC_CODE) == 0)
3636
if (!info->executable|| (input_section->flags & SEC_CODE) == 0)
3636
3637
relocation -= elf64_x86_64_dtpoff_base (info);
3638
3639
relocation = elf64_x86_64_tpoff (info, relocation);
3641
3642
case R_X86_64_TPOFF32:
3642
BFD_ASSERT (! info->shared);
3643
BFD_ASSERT (info->executable);
3643
3644
relocation = elf64_x86_64_tpoff (info, relocation);
3886
3889
if (!h->pointer_equality_needed)
3889
3892
/* For non-shared object, we can't use .got.plt, which
3890
3893
contains the real function addres if we need pointer
3891
3894
equality. We load the GOT entry with the PLT entry. */
3892
asection *plt = htab->elf.splt ? htab->elf.splt : htab->elf.iplt;
3895
plt = htab->elf.splt ? htab->elf.splt : htab->elf.iplt;
3893
3896
bfd_put_64 (output_bfd, (plt->output_section->vma
3894
3897
+ plt->output_offset
3895
3898
+ h->plt.offset),
4483
4486
#define elf64_bed elf64_x86_64_fbsd_bed
4485
4488
#include "elf64-target.h"
4490
/* Intel L1OM support. */
4493
elf64_l1om_elf_object_p (bfd *abfd)
4495
/* Set the right machine number for an L1OM elf64 file. */
4496
bfd_default_set_arch_mach (abfd, bfd_arch_l1om, bfd_mach_l1om);
4500
#undef TARGET_LITTLE_SYM
4501
#define TARGET_LITTLE_SYM bfd_elf64_l1om_vec
4502
#undef TARGET_LITTLE_NAME
4503
#define TARGET_LITTLE_NAME "elf64-l1om"
4505
#define ELF_ARCH bfd_arch_l1om
4507
#undef ELF_MACHINE_CODE
4508
#define ELF_MACHINE_CODE EM_L1OM
4513
#define elf64_bed elf64_l1om_bed
4515
#undef elf_backend_object_p
4516
#define elf_backend_object_p elf64_l1om_elf_object_p
4518
#undef elf_backend_post_process_headers
4520
#include "elf64-target.h"
4522
/* FreeBSD L1OM support. */
4524
#undef TARGET_LITTLE_SYM
4525
#define TARGET_LITTLE_SYM bfd_elf64_l1om_freebsd_vec
4526
#undef TARGET_LITTLE_NAME
4527
#define TARGET_LITTLE_NAME "elf64-l1om-freebsd"
4530
#define ELF_OSABI ELFOSABI_FREEBSD
4533
#define elf64_bed elf64_l1om_fbsd_bed
4535
#undef elf_backend_post_process_headers
4536
#define elf_backend_post_process_headers _bfd_elf_set_osabi
4538
#include "elf64-target.h"