/* libbfd.h -- Declarations used by bfd library *implementation*.
(This include file is not for users of the library.)
- Copyright (C) 1990-2016 Free Software Foundation, Inc.
+ Copyright (C) 1990-2017 Free Software Foundation, Inc.
Written by Cygnus Support.
void bfd_gnu_truncate_arname
(bfd *abfd, const char *filename, char *hdr);
-bfd_boolean bsd_write_armap
+bfd_boolean _bfd_bsd_write_armap
(bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
int stridx);
-bfd_boolean coff_write_armap
+bfd_boolean _bfd_coff_write_armap
(bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
int stridx);
#define _bfd_generic_bfd_copy_private_bfd_data \
((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
#define _bfd_generic_bfd_merge_private_bfd_data \
- ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
+ ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_true)
#define _bfd_generic_bfd_set_private_flags \
((bfd_boolean (*) (bfd *, flagword)) bfd_true)
#define _bfd_generic_bfd_copy_private_section_data \
extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
(bfd *, char **, bfd_size_type *, const char **);
#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
-#define _bfd_archive_bsd_write_armap bsd_write_armap
+#define _bfd_archive_bsd_write_armap _bfd_bsd_write_armap
#define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
#define _bfd_archive_bsd_write_ar_hdr _bfd_generic_write_ar_hdr
#define _bfd_archive_bsd_openr_next_archived_file \
extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
(bfd *, char **, bfd_size_type *, const char **);
#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
-#define _bfd_archive_coff_write_armap coff_write_armap
+#define _bfd_archive_coff_write_armap _bfd_coff_write_armap
#define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
#define _bfd_archive_coff_write_ar_hdr _bfd_generic_write_ar_hdr
#define _bfd_archive_coff_openr_next_archived_file \
extern bfd_boolean _bfd_archive_bsd44_construct_extended_name_table
(bfd *, char **, bfd_size_type *, const char **);
#define _bfd_archive_bsd44_truncate_arname bfd_bsd_truncate_arname
-#define _bfd_archive_bsd44_write_armap bsd_write_armap
+#define _bfd_archive_bsd44_write_armap _bfd_bsd_write_armap
#define _bfd_archive_bsd44_read_ar_hdr _bfd_generic_read_ar_hdr
#define _bfd_archive_bsd44_write_ar_hdr _bfd_bsd44_write_ar_hdr
#define _bfd_archive_bsd44_openr_next_archived_file \
/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get VMS style
archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_vms_lib). Some of them
- are irrelevant and never called, so defined as NULL. */
+ are irrelevant. */
extern bfd_boolean _bfd_vms_lib_write_archive_contents (bfd *arch);
-#define _bfd_vms_lib_slurp_armap NULL
-#define _bfd_vms_lib_slurp_extended_name_table NULL
-#define _bfd_vms_lib_construct_extended_name_table NULL
-#define _bfd_vms_lib_truncate_arname NULL
-#define _bfd_vms_lib_write_armap NULL
-#define _bfd_vms_lib_read_ar_hdr NULL
-#define _bfd_vms_lib_write_ar_hdr NULL
+#define _bfd_vms_lib_slurp_armap _bfd_noarchive_slurp_armap
+#define _bfd_vms_lib_slurp_extended_name_table \
+ _bfd_noarchive_slurp_extended_name_table
+#define _bfd_vms_lib_construct_extended_name_table \
+ _bfd_noarchive_construct_extended_name_table
+#define _bfd_vms_lib_truncate_arname _bfd_noarchive_truncate_arname
+#define _bfd_vms_lib_write_armap _bfd_noarchive_write_armap
+#define _bfd_vms_lib_read_ar_hdr _bfd_noarchive_read_ar_hdr
+#define _bfd_vms_lib_write_ar_hdr _bfd_noarchive_write_ar_hdr
extern bfd *_bfd_vms_lib_openr_next_archived_file (bfd *, bfd *);
extern bfd *_bfd_vms_lib_get_elt_at_index (bfd *, symindex);
extern int _bfd_vms_lib_generic_stat_arch_elt (bfd *, struct stat *);
extern long _bfd_norelocs_get_reloc_upper_bound (bfd *, asection *);
extern long _bfd_norelocs_canonicalize_reloc (bfd *, asection *,
arelent **, asymbol **);
+extern void _bfd_norelocs_set_reloc (bfd *, asection *,
+ arelent **, unsigned int);
#define _bfd_norelocs_bfd_reloc_type_lookup \
((reloc_howto_type *(*) (bfd *, bfd_reloc_code_real_type)) bfd_nullvoidptr)
#define _bfd_norelocs_bfd_reloc_name_lookup \
#define _bfd_nolink_bfd_define_common_symbol \
((bfd_boolean (*) (bfd *, struct bfd_link_info *, \
struct bfd_link_hash_entry *)) bfd_false)
+#define _bfd_nolink_bfd_define_start_stop \
+ ((struct bfd_link_hash_entry * (*) (struct bfd_link_info *, \
+ const char *, asection *)) bfd_nullvoidptr)
#define _bfd_nolink_bfd_link_check_relocs \
_bfd_generic_link_check_relocs
extern bfd_boolean _bfd_generic_link_add_symbols
(bfd *, struct bfd_link_info *);
-/* Generic add symbol routine. This version is used by targets for
- which the linker must collect constructors and destructors by name,
- as the collect2 program does. */
-extern bfd_boolean _bfd_generic_link_add_symbols_collect
- (bfd *, struct bfd_link_info *);
-
/* Generic archive add symbol routine. */
extern bfd_boolean _bfd_generic_link_add_archive_symbols
(bfd *, struct bfd_link_info *,
/* Manipulate a system FILE but using BFD's "file_ptr", rather than
the system "off_t" or "off64_t", as the offset. */
-extern file_ptr real_ftell (FILE *file);
-extern int real_fseek (FILE *file, file_ptr offset, int whence);
-extern FILE *real_fopen (const char *filename, const char *modes);
+extern file_ptr _bfd_real_ftell (FILE *file);
+extern int _bfd_real_fseek (FILE *file, file_ptr offset, int whence);
+extern FILE *_bfd_real_fopen (const char *filename, const char *modes);
/* List of supported target vectors, and the default vector (if
bfd_default_vector[0] is NULL, there is no default). */
(bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
void *), void *);
-extern bfd_vma read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *);
-extern bfd_signed_vma read_signed_leb128 (bfd *, bfd_byte *, unsigned int *);
-extern bfd_vma safe_read_leb128 (bfd *, bfd_byte *, unsigned int *,
- bfd_boolean, const bfd_byte * const);
+extern bfd_vma _bfd_read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *);
+extern bfd_signed_vma _bfd_read_signed_leb128 (bfd *, bfd_byte *, unsigned int *);
+extern bfd_vma _bfd_safe_read_leb128 (bfd *, bfd_byte *, unsigned int *,
+ bfd_boolean, const bfd_byte * const);
/* Extracted from libbfd.c. */
bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
"BFD_RELOC_PPC_VLE_SDAREL_HI16D",
"BFD_RELOC_PPC_VLE_SDAREL_HA16A",
"BFD_RELOC_PPC_VLE_SDAREL_HA16D",
+ "BFD_RELOC_PPC_16DX_HA",
"BFD_RELOC_PPC_REL16DX_HA",
"BFD_RELOC_PPC64_HIGHER",
"BFD_RELOC_PPC64_HIGHER_S",
"BFD_RELOC_AVR_LDS_STS_16",
"BFD_RELOC_AVR_PORT6",
"BFD_RELOC_AVR_PORT5",
+ "BFD_RELOC_RISCV_HI20",
+ "BFD_RELOC_RISCV_PCREL_HI20",
+ "BFD_RELOC_RISCV_PCREL_LO12_I",
+ "BFD_RELOC_RISCV_PCREL_LO12_S",
+ "BFD_RELOC_RISCV_LO12_I",
+ "BFD_RELOC_RISCV_LO12_S",
+ "BFD_RELOC_RISCV_GPREL12_I",
+ "BFD_RELOC_RISCV_GPREL12_S",
+ "BFD_RELOC_RISCV_TPREL_HI20",
+ "BFD_RELOC_RISCV_TPREL_LO12_I",
+ "BFD_RELOC_RISCV_TPREL_LO12_S",
+ "BFD_RELOC_RISCV_TPREL_ADD",
+ "BFD_RELOC_RISCV_CALL",
+ "BFD_RELOC_RISCV_CALL_PLT",
+ "BFD_RELOC_RISCV_ADD8",
+ "BFD_RELOC_RISCV_ADD16",
+ "BFD_RELOC_RISCV_ADD32",
+ "BFD_RELOC_RISCV_ADD64",
+ "BFD_RELOC_RISCV_SUB8",
+ "BFD_RELOC_RISCV_SUB16",
+ "BFD_RELOC_RISCV_SUB32",
+ "BFD_RELOC_RISCV_SUB64",
+ "BFD_RELOC_RISCV_GOT_HI20",
+ "BFD_RELOC_RISCV_TLS_GOT_HI20",
+ "BFD_RELOC_RISCV_TLS_GD_HI20",
+ "BFD_RELOC_RISCV_JMP",
+ "BFD_RELOC_RISCV_TLS_DTPMOD32",
+ "BFD_RELOC_RISCV_TLS_DTPREL32",
+ "BFD_RELOC_RISCV_TLS_DTPMOD64",
+ "BFD_RELOC_RISCV_TLS_DTPREL64",
+ "BFD_RELOC_RISCV_TLS_TPREL32",
+ "BFD_RELOC_RISCV_TLS_TPREL64",
+ "BFD_RELOC_RISCV_ALIGN",
+ "BFD_RELOC_RISCV_RVC_BRANCH",
+ "BFD_RELOC_RISCV_RVC_JUMP",
+ "BFD_RELOC_RISCV_RVC_LUI",
+ "BFD_RELOC_RISCV_GPREL_I",
+ "BFD_RELOC_RISCV_GPREL_S",
+ "BFD_RELOC_RISCV_TPREL_I",
+ "BFD_RELOC_RISCV_TPREL_S",
+ "BFD_RELOC_RISCV_RELAX",
+ "BFD_RELOC_RISCV_CFA",
+ "BFD_RELOC_RISCV_SUB6",
+ "BFD_RELOC_RISCV_SET6",
+ "BFD_RELOC_RISCV_SET8",
+ "BFD_RELOC_RISCV_SET16",
+ "BFD_RELOC_RISCV_SET32",
+ "BFD_RELOC_RISCV_32_PCREL",
"BFD_RELOC_RL78_NEG8",
"BFD_RELOC_RL78_NEG16",
"BFD_RELOC_RL78_NEG24",
"BFD_RELOC_NIOS2_R2_L5I4X1",
"BFD_RELOC_NIOS2_R2_T1X1I6",
"BFD_RELOC_NIOS2_R2_T1X1I6_2",
+ "BFD_RELOC_PRU_U16",
+ "BFD_RELOC_PRU_U16_PMEMIMM",
+ "BFD_RELOC_PRU_LDI32",
+ "BFD_RELOC_PRU_S10_PCREL",
+ "BFD_RELOC_PRU_U8_PCREL",
+ "BFD_RELOC_PRU_32_PMEM",
+ "BFD_RELOC_PRU_16_PMEM",
+ "BFD_RELOC_PRU_GNU_DIFF8",
+ "BFD_RELOC_PRU_GNU_DIFF16",
+ "BFD_RELOC_PRU_GNU_DIFF32",
+ "BFD_RELOC_PRU_GNU_DIFF16_PMEM",
+ "BFD_RELOC_PRU_GNU_DIFF32_PMEM",
"BFD_RELOC_IQ2000_OFFSET_16",
"BFD_RELOC_IQ2000_OFFSET_21",
"BFD_RELOC_IQ2000_UHI16",
"BFD_RELOC_AARCH64_TLSDESC_LD_PREL19",
"BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21",
"BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21",
- "BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC",
+ "BFD_RELOC_AARCH64_TLSDESC_LD64_LO12",
"BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC",
- "BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC",
+ "BFD_RELOC_AARCH64_TLSDESC_ADD_LO12",
"BFD_RELOC_AARCH64_TLSDESC_OFF_G1",
"BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC",
"BFD_RELOC_AARCH64_TLSDESC_LDR",
"BFD_RELOC_VISIUM_HI16_PCREL",
"BFD_RELOC_VISIUM_LO16_PCREL",
"BFD_RELOC_VISIUM_IM16_PCREL",
+ "BFD_RELOC_WASM32_LEB128",
+ "BFD_RELOC_WASM32_LEB128_GOT",
+ "BFD_RELOC_WASM32_LEB128_GOT_CODE",
+ "BFD_RELOC_WASM32_LEB128_PLT",
+ "BFD_RELOC_WASM32_PLT_INDEX",
+ "BFD_RELOC_WASM32_ABS32_CODE",
+ "BFD_RELOC_WASM32_COPY",
+ "BFD_RELOC_WASM32_CODE_POINTER",
+ "BFD_RELOC_WASM32_INDEX",
+ "BFD_RELOC_WASM32_PLT_SIG",
"@@overflow: BFD_RELOC_UNUSED@@",
};
#endif
bfd_boolean relocatable,
asymbol **symbols);
+void _bfd_generic_set_reloc
+ (bfd *abfd,
+ sec_ptr section,
+ arelent **relptr,
+ unsigned int count);
+
/* Extracted from archures.c. */
extern const bfd_arch_info_type bfd_default_arch_struct;
const bfd_arch_info_type *bfd_default_compatible
/* Extracted from linker.c. */
bfd_boolean _bfd_generic_verify_endian_match
- (bfd *ibfd, bfd *obfd);
+ (bfd *ibfd, struct bfd_link_info *info);
#ifdef __cplusplus
}