#define _LIBELF_H_ 1
#include "elf/common.h"
-#include "elf/internal.h"
#include "elf/external.h"
+#include "elf/internal.h"
#include "bfdlink.h"
/* The number of entries in a section is its size divided by the size
/* Count relocations. Not called for relocatable links
or if all relocs are being preserved in the output. */
unsigned int (*elf_backend_count_relocs)
- (asection *, Elf_Internal_Rela *);
+ (struct bfd_link_info *, asection *);
/* This function, if defined, is called when an NT_PRSTATUS note is found
in a core file. */
so-called reserved entries on some systems. */
bfd_vma got_header_size;
+ /* The size of the GOT entry for the symbol pointed to by H if non-NULL,
+ otherwise by the local symbol with index SYMNDX in IBFD. */
+ bfd_vma (*got_elt_size) (bfd *, struct bfd_link_info *,
+ struct elf_link_hash_entry *h,
+ bfd *ibfd, unsigned long symndx);
+
/* The vendor name to use for a processor-standard attributes section. */
const char *obj_attrs_vendor;
section. */
unsigned default_use_rela_p : 1;
+ /* True if PLT and copy relocations should be RELA by default. */
+ unsigned rela_plts_and_copies_p : 1;
+
/* Set if RELA relocations for a relocatable link can be handled by
generic code. Backends that set this flag need do nothing in the
backend relocate_section routine for relocatable linking. */
/* A pointer to the bfd section used for dynamic relocs. */
asection *sreloc;
+ /* A pointer to the bfd section used for dynamic relocs against ifunc symbols. */
+ asection *indirect_relocs;
+
union {
/* Group name, if this section is a member of a group. */
const char *name;
ARM_ELF_TDATA,
HPPA_ELF_TDATA,
I386_ELF_TDATA,
+ MIPS_ELF_TDATA,
PPC32_ELF_TDATA,
PPC64_ELF_TDATA,
S390_ELF_TDATA,
SH_ELF_TDATA,
SPARC_ELF_TDATA,
X86_64_ELF_TDATA,
+ XTENSA_ELF_TDATA,
GENERIC_ELF_TDATA
};
(bfd *, sec_ptr);
extern long _bfd_elf_canonicalize_reloc
(bfd *, sec_ptr, arelent **, asymbol **);
+extern asection * _bfd_elf_get_dynamic_reloc_section
+ (bfd *, asection *, bfd_boolean);
+extern asection * _bfd_elf_make_dynamic_reloc_section
+ (asection *, bfd *, unsigned int, bfd *, bfd_boolean);
+extern asection * _bfd_elf_make_ifunc_reloc_section
+ (bfd *, asection *, bfd *, unsigned int);
extern long _bfd_elf_get_dynamic_reloc_upper_bound
(bfd *);
extern long _bfd_elf_canonicalize_dynamic_reloc
extern void _bfd_dwarf2_cleanup_debug_info
(bfd *);
+extern bfd_vma _bfd_elf_default_got_elt_size
+(bfd *, struct bfd_link_info *, struct elf_link_hash_entry *, bfd *,
+ unsigned long);
+
extern bfd_reloc_status_type _bfd_elf_rel_vtable_reloc_fn
(bfd *, arelent *, struct bfd_symbol *, void *,
asection *, bfd *, char **);
(bfd *, char *, int *, const void *, int);
extern char *elfcore_write_ppc_vmx
(bfd *, char *, int *, const void *, int);
+extern char *elfcore_write_ppc_vsx
+ (bfd *, char *, int *, const void *, int);
extern char *elfcore_write_lwpstatus
(bfd *, char *, int *, long, int, const void *);
+extern char *elfcore_write_register_note
+ (bfd *, char *, int *, const char *, const void *, int);
extern bfd *_bfd_elf32_bfd_from_remote_memory
(bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,