+extern void _bfd_mips_elf_merge_symbol_attribute
+ (struct elf_link_hash_entry *, const Elf_Internal_Sym *, bfd_boolean, bfd_boolean);
+extern char *_bfd_mips_elf_get_target_dtag (bfd_vma);
+extern bfd_boolean _bfd_mips_elf_ignore_undef_symbol
+ (struct elf_link_hash_entry *);
+extern void _bfd_mips_elf_use_plts_and_copy_relocs
+ (struct bfd_link_info *);
+extern void _bfd_mips_elf_linker_flags
+ (struct bfd_link_info *, bfd_boolean, bfd_boolean);
+extern bfd_boolean _bfd_mips_elf_init_stubs
+ (struct bfd_link_info *,
+ asection *(*) (const char *, asection *, asection *));
+extern bfd_vma _bfd_mips_elf_plt_sym_val
+ (bfd_vma, const asection *, const arelent *rel);
+extern long _bfd_mips_elf_get_synthetic_symtab
+ (bfd *, long, asymbol **, long, asymbol **, asymbol **);
+extern bfd_boolean _bfd_mips_elf_gc_mark_extra_sections
+ (struct bfd_link_info *, elf_gc_mark_hook_fn);
+extern void _bfd_mips_post_process_headers
+ (bfd *abfd, struct bfd_link_info *link_info);
+
+extern const struct bfd_elf_special_section _bfd_mips_elf_special_sections [];
+
+extern bfd_boolean _bfd_mips_elf_common_definition (Elf_Internal_Sym *);
+
+extern int _bfd_mips_elf_compact_eh_encoding (struct bfd_link_info *);
+extern int _bfd_mips_elf_cant_unwind_opcode (struct bfd_link_info *);
+
+static inline bfd_boolean
+gprel16_reloc_p (unsigned int r_type)
+{
+ return (r_type == R_MIPS_GPREL16
+ || r_type == R_MIPS16_GPREL
+ || r_type == R_MICROMIPS_GPREL16
+ || r_type == R_MICROMIPS_GPREL7_S2);
+}
+
+static inline bfd_boolean
+literal_reloc_p (int r_type)
+{
+ return r_type == R_MIPS_LITERAL || r_type == R_MICROMIPS_LITERAL;
+}