+static void remove_output PARAMS ((void));
+static boolean check_for_scripts_dir PARAMS ((char *dir));
+static boolean add_archive_element PARAMS ((struct bfd_link_info *, bfd *,
+ const char *));
+static boolean multiple_definition PARAMS ((struct bfd_link_info *,
+ const char *,
+ bfd *, asection *, bfd_vma,
+ bfd *, asection *, bfd_vma));
+static boolean multiple_common PARAMS ((struct bfd_link_info *,
+ const char *, bfd *,
+ enum bfd_link_hash_type, bfd_vma,
+ bfd *, enum bfd_link_hash_type,
+ bfd_vma));
+static boolean add_to_set PARAMS ((struct bfd_link_info *,
+ struct bfd_link_hash_entry *,
+ bfd_reloc_code_real_type,
+ bfd *, asection *, bfd_vma));
+static boolean constructor_callback PARAMS ((struct bfd_link_info *,
+ boolean constructor,
+ const char *name,
+ bfd *, asection *, bfd_vma));
+static boolean warning_callback PARAMS ((struct bfd_link_info *,
+ const char *, const char *, bfd *,
+ asection *, bfd_vma));
+static void warning_find_reloc PARAMS ((bfd *, asection *, PTR));
+static boolean undefined_symbol PARAMS ((struct bfd_link_info *,
+ const char *, bfd *,
+ asection *, bfd_vma));
+static boolean reloc_overflow PARAMS ((struct bfd_link_info *, const char *,
+ const char *, bfd_vma,
+ bfd *, asection *, bfd_vma));
+static boolean reloc_dangerous PARAMS ((struct bfd_link_info *, const char *,
+ bfd *, asection *, bfd_vma));
+static boolean unattached_reloc PARAMS ((struct bfd_link_info *,
+ const char *, bfd *, asection *,
+ bfd_vma));
+static boolean notice PARAMS ((struct bfd_link_info *, const char *,
+ bfd *, asection *, bfd_vma));
+
+static struct bfd_link_callbacks link_callbacks =
+{
+ add_archive_element,
+ multiple_definition,
+ multiple_common,
+ add_to_set,
+ constructor_callback,
+ warning_callback,
+ undefined_symbol,
+ reloc_overflow,
+ reloc_dangerous,
+ unattached_reloc,
+ notice
+};
+
+struct bfd_link_info link_info;
+\f
+static void
+remove_output ()
+{
+ if (output_filename)
+ {
+ if (output_bfd && output_bfd->iostream)
+ fclose((FILE *)(output_bfd->iostream));
+ if (delete_output_file_on_failure)
+ unlink (output_filename);
+ }
+}