1 /* Main program of GNU linker.
2 Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
3 2002, 2003, 2004, 2005, 2006, 2007
4 Free Software Foundation, Inc.
7 This file is part of GLD, the Gnu Linker.
9 GLD is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
14 GLD is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with GLD; see the file COPYING. If not, write to the Free
21 Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
26 #include "safe-ctype.h"
27 #include "libiberty.h"
30 #include "filenames.h"
44 /* Somewhere above, sys/stat.h got included. */
45 #if !defined(S_ISDIR) && defined(S_IFDIR)
46 #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
57 #ifndef TARGET_SYSTEM_ROOT
58 #define TARGET_SYSTEM_ROOT ""
64 const char *output_filename = "a.out";
66 /* Name this program was invoked by. */
69 /* The prefix for system library directories. */
70 const char *ld_sysroot;
72 /* The canonical representation of ld_sysroot. */
73 char * ld_canon_sysroot;
74 int ld_canon_sysroot_len;
76 /* The file that we're creating. */
79 /* Set by -G argument, for MIPS ECOFF target. */
80 int g_switch_value = 8;
82 /* Nonzero means print names of input files as processed. */
83 bfd_boolean trace_files;
85 /* Nonzero means same, but note open failures, too. */
86 bfd_boolean trace_file_tries;
88 /* Nonzero means version number was printed, so exit successfully
89 instead of complaining if no input files are given. */
90 bfd_boolean version_printed;
92 /* Nonzero means link in every member of an archive. */
93 bfd_boolean whole_archive;
95 /* Nonzero means create DT_NEEDED entries only if a dynamic library
96 actually satisfies some reference in a regular object. */
97 bfd_boolean as_needed;
99 /* Nonzero means never create DT_NEEDED entries for dynamic libraries
100 in DT_NEEDED tags. */
101 bfd_boolean add_needed = TRUE;
103 /* TRUE if we should demangle symbol names. */
104 bfd_boolean demangling;
106 args_type command_line;
108 ld_config_type config;
110 sort_type sort_section;
112 static const char *get_sysroot
114 static char *get_emulation
116 static void set_scripts_dir
118 static bfd_boolean add_archive_element
119 (struct bfd_link_info *, bfd *, const char *);
120 static bfd_boolean multiple_definition
121 (struct bfd_link_info *, const char *, bfd *, asection *, bfd_vma,
122 bfd *, asection *, bfd_vma);
123 static bfd_boolean multiple_common
124 (struct bfd_link_info *, const char *, bfd *, enum bfd_link_hash_type,
125 bfd_vma, bfd *, enum bfd_link_hash_type, bfd_vma);
126 static bfd_boolean add_to_set
127 (struct bfd_link_info *, struct bfd_link_hash_entry *,
128 bfd_reloc_code_real_type, bfd *, asection *, bfd_vma);
129 static bfd_boolean constructor_callback
130 (struct bfd_link_info *, bfd_boolean, const char *, bfd *,
131 asection *, bfd_vma);
132 static bfd_boolean warning_callback
133 (struct bfd_link_info *, const char *, const char *, bfd *,
134 asection *, bfd_vma);
135 static void warning_find_reloc
136 (bfd *, asection *, void *);
137 static bfd_boolean undefined_symbol
138 (struct bfd_link_info *, const char *, bfd *, asection *, bfd_vma,
140 static bfd_boolean reloc_overflow
141 (struct bfd_link_info *, struct bfd_link_hash_entry *, const char *,
142 const char *, bfd_vma, bfd *, asection *, bfd_vma);
143 static bfd_boolean reloc_dangerous
144 (struct bfd_link_info *, const char *, bfd *, asection *, bfd_vma);
145 static bfd_boolean unattached_reloc
146 (struct bfd_link_info *, const char *, bfd *, asection *, bfd_vma);
147 static bfd_boolean notice
148 (struct bfd_link_info *, const char *, bfd *, asection *, bfd_vma);
150 static struct bfd_link_callbacks link_callbacks =
156 constructor_callback,
166 ldlang_override_segment_assignment
169 struct bfd_link_info link_info;
177 bfd_cache_close (output_bfd);
178 if (delete_output_file_on_failure)
179 unlink_if_ordinary (output_filename);
184 main (int argc, char **argv)
187 long start_time = get_run_time ();
189 #if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
190 setlocale (LC_MESSAGES, "");
192 #if defined (HAVE_SETLOCALE)
193 setlocale (LC_CTYPE, "");
195 bindtextdomain (PACKAGE, LOCALEDIR);
196 textdomain (PACKAGE);
198 program_name = argv[0];
199 xmalloc_set_program_name (program_name);
201 START_PROGRESS (program_name, 0);
203 expandargv (&argc, &argv);
207 bfd_set_error_program_name (program_name);
209 xatexit (remove_output);
211 /* Set up the sysroot directory. */
212 ld_sysroot = get_sysroot (argc, argv);
215 if (*TARGET_SYSTEM_ROOT == 0)
217 einfo ("%P%F: this linker was not configured to use sysroots\n");
221 ld_canon_sysroot = lrealpath (ld_sysroot);
223 if (ld_canon_sysroot)
224 ld_canon_sysroot_len = strlen (ld_canon_sysroot);
226 ld_canon_sysroot_len = -1;
228 /* Set the default BFD target based on the configured target. Doing
229 this permits the linker to be configured for a particular target,
230 and linked against a shared BFD library which was configured for
231 a different target. The macro TARGET is defined by Makefile. */
232 if (! bfd_set_default_target (TARGET))
234 einfo (_("%X%P: can't set BFD default target to `%s': %E\n"), TARGET);
245 /* Initialize the data about options. */
246 trace_files = trace_file_tries = version_printed = FALSE;
247 whole_archive = FALSE;
248 config.build_constructors = TRUE;
249 config.dynamic_link = FALSE;
250 config.has_shared = FALSE;
251 config.rpath_separator = ':';
252 config.split_by_reloc = (unsigned) -1;
253 config.split_by_file = (bfd_size_type) -1;
254 config.hash_table_size = 0;
255 command_line.force_common_definition = FALSE;
256 command_line.inhibit_common_definition = FALSE;
257 command_line.interpreter = NULL;
258 command_line.rpath = NULL;
259 command_line.warn_mismatch = TRUE;
260 command_line.warn_search_mismatch = TRUE;
261 command_line.check_section_addresses = TRUE;
262 command_line.accept_unknown_input_arch = FALSE;
263 command_line.symbolic = symbolic_unset;
264 command_line.dynamic_list = dynamic_list_unset;
268 /* We initialize DEMANGLING based on the environment variable
269 COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the
270 output of the linker, unless COLLECT_NO_DEMANGLE is set in the
271 environment. Acting the same way here lets us provide the same
272 interface by default. */
273 demangling = getenv ("COLLECT_NO_DEMANGLE") == NULL;
275 link_info.relocatable = FALSE;
276 link_info.emitrelocations = FALSE;
277 link_info.task_link = FALSE;
278 link_info.shared = FALSE;
279 link_info.pie = FALSE;
280 link_info.executable = FALSE;
281 link_info.symbolic = FALSE;
282 link_info.export_dynamic = FALSE;
283 link_info.static_link = FALSE;
284 link_info.traditional_format = FALSE;
285 link_info.optimize = FALSE;
286 link_info.unresolved_syms_in_objects = RM_NOT_YET_SET;
287 link_info.unresolved_syms_in_shared_libs = RM_NOT_YET_SET;
288 link_info.allow_multiple_definition = FALSE;
289 link_info.allow_undefined_version = TRUE;
290 link_info.create_default_symver = FALSE;
291 link_info.default_imported_symver = FALSE;
292 link_info.keep_memory = TRUE;
293 link_info.notice_all = FALSE;
294 link_info.nocopyreloc = FALSE;
295 link_info.new_dtags = FALSE;
296 link_info.combreloc = TRUE;
297 link_info.eh_frame_hdr = FALSE;
298 link_info.relro = FALSE;
299 link_info.strip_discarded = TRUE;
300 link_info.strip = strip_none;
301 link_info.discard = discard_sec_merge;
302 link_info.common_skip_ar_aymbols = bfd_link_common_skip_none;
303 link_info.callbacks = &link_callbacks;
304 link_info.hash = NULL;
305 link_info.keep_hash = NULL;
306 link_info.notice_hash = NULL;
307 link_info.wrap_hash = NULL;
308 link_info.input_bfds = NULL;
309 link_info.create_object_symbols_section = NULL;
310 link_info.gc_sym_list = NULL;
311 link_info.base_file = NULL;
312 link_info.emit_hash = TRUE;
313 link_info.emit_gnu_hash = FALSE;
314 /* SVR4 linkers seem to set DT_INIT and DT_FINI based on magic _init
315 and _fini symbols. We are compatible. */
316 link_info.init_function = "_init";
317 link_info.fini_function = "_fini";
318 link_info.pei386_auto_import = -1;
319 link_info.pei386_runtime_pseudo_reloc = FALSE;
320 link_info.spare_dynamic_tags = 5;
322 link_info.flags_1 = 0;
323 link_info.relax_pass = 1;
324 link_info.warn_shared_textrel = FALSE;
325 link_info.gc_sections = FALSE;
326 link_info.print_gc_sections = FALSE;
327 link_info.dynamic = FALSE;
328 link_info.dynamic_list = NULL;
329 link_info.dynamic_data = FALSE;
330 link_info.reduce_memory_overheads = FALSE;
332 config.maxpagesize = 0;
333 config.commonpagesize = 0;
335 ldfile_add_arch ("");
337 config.make_executable = TRUE;
338 force_make_executable = FALSE;
339 config.magic_demand_paged = TRUE;
340 config.text_read_only = TRUE;
342 emulation = get_emulation (argc, argv);
343 ldemul_choose_mode (emulation);
344 default_target = ldemul_choose_target (argc, argv);
346 ldemul_before_parse ();
347 lang_has_input_file = FALSE;
348 parse_args (argc, argv);
350 if (config.hash_table_size != 0)
351 bfd_hash_set_default_size (config.hash_table_size);
353 ldemul_set_symbols ();
355 if (link_info.relocatable)
357 if (link_info.gc_sections)
358 einfo ("%P%F: --gc-sections and -r may not be used together\n");
359 else if (command_line.relax)
360 einfo (_("%P%F: --relax and -r may not be used together\n"));
361 if (link_info.shared)
362 einfo (_("%P%F: -r and -shared may not be used together\n"));
365 /* We may have -Bsymbolic, -Bsymbolic-functions, --dynamic-list-data,
366 --dynamic-list-cpp-new, --dynamic-list-cpp-typeinfo and
367 --dynamic-list FILE. -Bsymbolic and -Bsymbolic-functions are
368 for shared libraries. -Bsymbolic overrides all others and vice
370 switch (command_line.symbolic)
375 /* -Bsymbolic is for shared library only. */
376 if (link_info.shared)
378 link_info.symbolic = TRUE;
379 /* Should we free the unused memory? */
380 link_info.dynamic_list = NULL;
381 command_line.dynamic_list = dynamic_list_unset;
384 case symbolic_functions:
385 /* -Bsymbolic-functions is for shared library only. */
386 if (link_info.shared)
387 command_line.dynamic_list = dynamic_list_data;
391 switch (command_line.dynamic_list)
393 case dynamic_list_unset:
395 case dynamic_list_data:
396 link_info.dynamic_data = TRUE;
398 link_info.dynamic = TRUE;
402 if (! link_info.shared)
404 if (command_line.filter_shlib)
405 einfo (_("%P%F: -F may not be used without -shared\n"));
406 if (command_line.auxiliary_filters)
407 einfo (_("%P%F: -f may not be used without -shared\n"));
410 if (! link_info.shared || link_info.pie)
411 link_info.executable = TRUE;
413 /* Treat ld -r -s as ld -r -S -x (i.e., strip all local symbols). I
414 don't see how else this can be handled, since in this case we
415 must preserve all externally visible symbols. */
416 if (link_info.relocatable && link_info.strip == strip_all)
418 link_info.strip = strip_debugger;
419 if (link_info.discard == discard_sec_merge)
420 link_info.discard = discard_all;
423 /* This essentially adds another -L directory so this must be done after
424 the -L's in argv have been processed. */
427 /* If we have not already opened and parsed a linker script,
428 try the default script from command line first. */
429 if (saved_script_handle == NULL
430 && command_line.default_script != NULL)
432 ldfile_open_command_file (command_line.default_script);
433 parser_input = input_script;
437 /* If we have not already opened and parsed a linker script
438 read the emulation's appropriate default script. */
439 if (saved_script_handle == NULL)
442 char *s = ldemul_get_script (&isfile);
445 ldfile_open_command_file (s);
451 parser_input = input_script;
456 if (trace_file_tries)
458 if (saved_script_handle)
459 info_msg (_("using external linker script:"));
461 info_msg (_("using internal linker script:"));
462 info_msg ("\n==================================================\n");
464 if (saved_script_handle)
466 static const int ld_bufsz = 8193;
468 char *buf = xmalloc (ld_bufsz);
470 rewind (saved_script_handle);
471 while ((n = fread (buf, 1, ld_bufsz - 1, saved_script_handle)) > 0)
476 rewind (saved_script_handle);
483 info_msg (ldemul_get_script (&isfile));
486 info_msg ("\n==================================================\n");
491 if (!lang_has_input_file)
495 einfo (_("%P%F: no input files\n"));
499 info_msg (_("%P: mode %s\n"), emulation);
501 ldemul_after_parse ();
503 if (config.map_filename)
505 if (strcmp (config.map_filename, "-") == 0)
507 config.map_file = stdout;
511 config.map_file = fopen (config.map_filename, FOPEN_WT);
512 if (config.map_file == (FILE *) NULL)
514 bfd_set_error (bfd_error_system_call);
515 einfo (_("%P%F: cannot open map file %s: %E\n"),
516 config.map_filename);
523 /* Print error messages for any missing symbols, for any warning
524 symbols, and possibly multiple definitions. */
525 if (link_info.relocatable)
526 output_bfd->flags &= ~EXEC_P;
528 output_bfd->flags |= EXEC_P;
532 if (config.map_file != NULL)
534 if (command_line.cref)
535 output_cref (config.map_file != NULL ? config.map_file : stdout);
536 if (nocrossref_list != NULL)
537 check_nocrossrefs ();
541 /* Even if we're producing relocatable output, some non-fatal errors should
542 be reported in the exit status. (What non-fatal errors, if any, do we
543 want to ignore for relocatable output?) */
544 if (!config.make_executable && !force_make_executable)
547 einfo (_("%P: link errors found, deleting executable `%s'\n"),
550 /* The file will be removed by remove_output. */
555 if (! bfd_close (output_bfd))
556 einfo (_("%F%B: final close failed: %E\n"), output_bfd);
558 /* If the --force-exe-suffix is enabled, and we're making an
559 executable file and it doesn't end in .exe, copy it to one
561 if (! link_info.relocatable && command_line.force_exe_suffix)
563 int len = strlen (output_filename);
566 || (strcasecmp (output_filename + len - 4, ".exe") != 0
567 && strcasecmp (output_filename + len - 4, ".dll") != 0))
571 const int bsize = 4096;
572 char *buf = xmalloc (bsize);
574 char *dst_name = xmalloc (len + 5);
576 strcpy (dst_name, output_filename);
577 strcat (dst_name, ".exe");
578 src = fopen (output_filename, FOPEN_RB);
579 dst = fopen (dst_name, FOPEN_WB);
582 einfo (_("%X%P: unable to open for source of copy `%s'\n"),
585 einfo (_("%X%P: unable to open for destination of copy `%s'\n"),
587 while ((l = fread (buf, 1, bsize, src)) > 0)
589 int done = fwrite (buf, 1, l, dst);
592 einfo (_("%P: Error writing file `%s'\n"), dst_name);
596 if (fclose (dst) == EOF)
597 einfo (_("%P: Error closing file `%s'\n"), dst_name);
604 END_PROGRESS (program_name);
609 char *lim = sbrk (0);
611 long run_time = get_run_time () - start_time;
613 fprintf (stderr, _("%s: total time in link: %ld.%06ld\n"),
614 program_name, run_time / 1000000, run_time % 1000000);
616 fprintf (stderr, _("%s: data size %ld\n"), program_name,
617 (long) (lim - (char *) &environ));
621 /* Prevent remove_output from doing anything, after a successful link. */
622 output_filename = NULL;
628 /* If the configured sysroot is relocatable, try relocating it based on
629 default prefix FROM. Return the relocated directory if it exists,
630 otherwise return null. */
633 get_relative_sysroot (const char *from ATTRIBUTE_UNUSED)
635 #ifdef TARGET_SYSTEM_ROOT_RELOCATABLE
639 path = make_relative_prefix (program_name, from, TARGET_SYSTEM_ROOT);
642 if (stat (path, &s) == 0 && S_ISDIR (s.st_mode))
650 /* Return the sysroot directory. Return "" if no sysroot is being used. */
653 get_sysroot (int argc, char **argv)
658 for (i = 1; i < argc; i++)
659 if (CONST_STRNEQ (argv[i], "--sysroot="))
660 return argv[i] + strlen ("--sysroot=");
662 path = get_relative_sysroot (BINDIR);
666 path = get_relative_sysroot (TOOLBINDIR);
670 return TARGET_SYSTEM_ROOT;
673 /* We need to find any explicitly given emulation in order to initialize the
674 state that's needed by the lex&yacc argument parser (parse_args). */
677 get_emulation (int argc, char **argv)
682 emulation = getenv (EMULATION_ENVIRON);
683 if (emulation == NULL)
684 emulation = DEFAULT_EMULATION;
686 for (i = 1; i < argc; i++)
688 if (CONST_STRNEQ (argv[i], "-m"))
690 if (argv[i][2] == '\0')
695 emulation = argv[i + 1];
699 einfo (_("%P%F: missing argument to -m\n"));
701 else if (strcmp (argv[i], "-mips1") == 0
702 || strcmp (argv[i], "-mips2") == 0
703 || strcmp (argv[i], "-mips3") == 0
704 || strcmp (argv[i], "-mips4") == 0
705 || strcmp (argv[i], "-mips5") == 0
706 || strcmp (argv[i], "-mips32") == 0
707 || strcmp (argv[i], "-mips32r2") == 0
708 || strcmp (argv[i], "-mips64") == 0
709 || strcmp (argv[i], "-mips64r2") == 0)
711 /* FIXME: The arguments -mips1, -mips2, -mips3, etc. are
712 passed to the linker by some MIPS compilers. They
713 generally tell the linker to use a slightly different
714 library path. Perhaps someday these should be
715 implemented as emulations; until then, we just ignore
716 the arguments and hope that nobody ever creates
717 emulations named ips1, ips2 or ips3. */
719 else if (strcmp (argv[i], "-m486") == 0)
721 /* FIXME: The argument -m486 is passed to the linker on
722 some Linux systems. Hope that nobody creates an
723 emulation named 486. */
728 emulation = &argv[i][2];
736 /* If directory DIR contains an "ldscripts" subdirectory,
737 add DIR to the library search path and return TRUE,
738 else return FALSE. */
741 check_for_scripts_dir (char *dir)
748 dirlen = strlen (dir);
749 /* sizeof counts the terminating NUL. */
750 buf = xmalloc (dirlen + sizeof ("/ldscripts"));
751 sprintf (buf, "%s/ldscripts", dir);
753 res = stat (buf, &s) == 0 && S_ISDIR (s.st_mode);
756 ldfile_add_library_path (dir, FALSE);
760 /* Set the default directory for finding script files.
761 Libraries will be searched for here too, but that's ok.
762 We look for the "ldscripts" directory in:
764 SCRIPTDIR (passed from Makefile)
765 (adjusted according to the current location of the binary)
766 SCRIPTDIR (passed from Makefile)
767 the dir where this program is (for using it from the build tree)
768 the dir where this program is/../lib
769 (for installing the tool suite elsewhere). */
772 set_scripts_dir (void)
778 dir = make_relative_prefix (program_name, BINDIR, SCRIPTDIR);
781 found = check_for_scripts_dir (dir);
787 dir = make_relative_prefix (program_name, TOOLBINDIR, SCRIPTDIR);
790 found = check_for_scripts_dir (dir);
796 if (check_for_scripts_dir (SCRIPTDIR))
797 /* We've been installed normally. */
800 /* Look for "ldscripts" in the dir where our binary is. */
801 end = strrchr (program_name, '/');
802 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
804 /* We could have \foo\bar, or /foo\bar. */
805 char *bslash = strrchr (program_name, '\\');
807 if (end == NULL || (bslash != NULL && bslash > end))
813 /* Don't look for ldscripts in the current directory. There is
814 too much potential for confusion. */
817 dirlen = end - program_name;
818 /* Make a copy of program_name in dir.
819 Leave room for later "/../lib". */
820 dir = xmalloc (dirlen + 8);
821 strncpy (dir, program_name, dirlen);
824 if (check_for_scripts_dir (dir))
830 /* Look for "ldscripts" in <the dir where our binary is>/../lib. */
831 strcpy (dir + dirlen, "/../lib");
832 check_for_scripts_dir (dir);
837 add_ysym (const char *name)
839 if (link_info.notice_hash == NULL)
841 link_info.notice_hash = xmalloc (sizeof (struct bfd_hash_table));
842 if (!bfd_hash_table_init_n (link_info.notice_hash,
844 sizeof (struct bfd_hash_entry),
846 einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
849 if (bfd_hash_lookup (link_info.notice_hash, name, TRUE, TRUE) == NULL)
850 einfo (_("%P%F: bfd_hash_lookup failed: %E\n"));
853 /* Record a symbol to be wrapped, from the --wrap option. */
856 add_wrap (const char *name)
858 if (link_info.wrap_hash == NULL)
860 link_info.wrap_hash = xmalloc (sizeof (struct bfd_hash_table));
861 if (!bfd_hash_table_init_n (link_info.wrap_hash,
863 sizeof (struct bfd_hash_entry),
865 einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
868 if (bfd_hash_lookup (link_info.wrap_hash, name, TRUE, TRUE) == NULL)
869 einfo (_("%P%F: bfd_hash_lookup failed: %E\n"));
872 /* Handle the -retain-symbols-file option. */
875 add_keepsyms_file (const char *filename)
882 if (link_info.strip == strip_some)
883 einfo (_("%X%P: error: duplicate retain-symbols-file\n"));
885 file = fopen (filename, "r");
888 bfd_set_error (bfd_error_system_call);
889 einfo ("%X%P: %s: %E\n", filename);
893 link_info.keep_hash = xmalloc (sizeof (struct bfd_hash_table));
894 if (!bfd_hash_table_init (link_info.keep_hash, bfd_hash_newfunc,
895 sizeof (struct bfd_hash_entry)))
896 einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
899 buf = xmalloc (bufsize);
911 while (! ISSPACE (c) && c != EOF)
918 buf = xrealloc (buf, bufsize);
925 if (bfd_hash_lookup (link_info.keep_hash, buf, TRUE, TRUE) == NULL)
926 einfo (_("%P%F: bfd_hash_lookup for insertion failed: %E\n"));
930 if (link_info.strip != strip_none)
931 einfo (_("%P: `-retain-symbols-file' overrides `-s' and `-S'\n"));
934 link_info.strip = strip_some;
937 /* Callbacks from the BFD linker routines. */
939 /* This is called when BFD has decided to include an archive member in
943 add_archive_element (struct bfd_link_info *info,
947 lang_input_statement_type *input;
949 input = xmalloc (sizeof (lang_input_statement_type));
950 input->filename = abfd->filename;
951 input->local_sym_name = abfd->filename;
952 input->the_bfd = abfd;
953 input->asymbols = NULL;
955 input->just_syms_flag = FALSE;
956 input->loaded = FALSE;
957 input->search_dirs_flag = FALSE;
959 /* FIXME: The following fields are not set: header.next,
960 header.type, closed, passive_position, symbol_count,
961 next_real_file, is_archive, target, real. This bit of code is
962 from the old decode_library_subfile function. I don't know
963 whether any of those fields matters. */
965 ldlang_add_file (input);
967 if (config.map_file != NULL)
969 static bfd_boolean header_printed;
970 struct bfd_link_hash_entry *h;
974 h = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE);
986 case bfd_link_hash_defined:
987 case bfd_link_hash_defweak:
988 from = h->u.def.section->owner;
991 case bfd_link_hash_undefined:
992 case bfd_link_hash_undefweak:
993 from = h->u.undef.abfd;
996 case bfd_link_hash_common:
997 from = h->u.c.p->section->owner;
1002 if (! header_printed)
1006 sprintf (buf, _("Archive member included because of file (symbol)\n\n"));
1008 header_printed = TRUE;
1011 if (bfd_my_archive (abfd) == NULL)
1013 minfo ("%s", bfd_get_filename (abfd));
1014 len = strlen (bfd_get_filename (abfd));
1018 minfo ("%s(%s)", bfd_get_filename (bfd_my_archive (abfd)),
1019 bfd_get_filename (abfd));
1020 len = (strlen (bfd_get_filename (bfd_my_archive (abfd)))
1021 + strlen (bfd_get_filename (abfd))
1037 minfo ("%B ", from);
1039 minfo ("(%T)\n", h->root.string);
1041 minfo ("(%s)\n", name);
1044 if (trace_files || trace_file_tries)
1045 info_msg ("%I\n", input);
1050 /* This is called when BFD has discovered a symbol which is defined
1054 multiple_definition (struct bfd_link_info *info ATTRIBUTE_UNUSED,
1063 /* If either section has the output_section field set to
1064 bfd_abs_section_ptr, it means that the section is being
1065 discarded, and this is not really a multiple definition at all.
1066 FIXME: It would be cleaner to somehow ignore symbols defined in
1067 sections which are being discarded. */
1068 if ((osec->output_section != NULL
1069 && ! bfd_is_abs_section (osec)
1070 && bfd_is_abs_section (osec->output_section))
1071 || (nsec->output_section != NULL
1072 && ! bfd_is_abs_section (nsec)
1073 && bfd_is_abs_section (nsec->output_section)))
1076 einfo (_("%X%C: multiple definition of `%T'\n"),
1077 nbfd, nsec, nval, name);
1079 einfo (_("%D: first defined here\n"), obfd, osec, oval);
1081 if (command_line.relax)
1083 einfo (_("%P: Disabling relaxation: it will not work with multiple definitions\n"));
1084 command_line.relax = 0;
1090 /* This is called when there is a definition of a common symbol, or
1091 when a common symbol is found for a symbol that is already defined,
1092 or when two common symbols are found. We only do something if
1093 -warn-common was used. */
1096 multiple_common (struct bfd_link_info *info ATTRIBUTE_UNUSED,
1099 enum bfd_link_hash_type otype,
1102 enum bfd_link_hash_type ntype,
1105 if (! config.warn_common)
1108 if (ntype == bfd_link_hash_defined
1109 || ntype == bfd_link_hash_defweak
1110 || ntype == bfd_link_hash_indirect)
1112 ASSERT (otype == bfd_link_hash_common);
1113 einfo (_("%B: warning: definition of `%T' overriding common\n"),
1116 einfo (_("%B: warning: common is here\n"), obfd);
1118 else if (otype == bfd_link_hash_defined
1119 || otype == bfd_link_hash_defweak
1120 || otype == bfd_link_hash_indirect)
1122 ASSERT (ntype == bfd_link_hash_common);
1123 einfo (_("%B: warning: common of `%T' overridden by definition\n"),
1126 einfo (_("%B: warning: defined here\n"), obfd);
1130 ASSERT (otype == bfd_link_hash_common && ntype == bfd_link_hash_common);
1133 einfo (_("%B: warning: common of `%T' overridden by larger common\n"),
1136 einfo (_("%B: warning: larger common is here\n"), obfd);
1138 else if (nsize > osize)
1140 einfo (_("%B: warning: common of `%T' overriding smaller common\n"),
1143 einfo (_("%B: warning: smaller common is here\n"), obfd);
1147 einfo (_("%B: warning: multiple common of `%T'\n"), nbfd, name);
1149 einfo (_("%B: warning: previous common is here\n"), obfd);
1156 /* This is called when BFD has discovered a set element. H is the
1157 entry in the linker hash table for the set. SECTION and VALUE
1158 represent a value which should be added to the set. */
1161 add_to_set (struct bfd_link_info *info ATTRIBUTE_UNUSED,
1162 struct bfd_link_hash_entry *h,
1163 bfd_reloc_code_real_type reloc,
1168 if (config.warn_constructors)
1169 einfo (_("%P: warning: global constructor %s used\n"),
1172 if (! config.build_constructors)
1175 ldctor_add_set_entry (h, reloc, NULL, section, value);
1177 if (h->type == bfd_link_hash_new)
1179 h->type = bfd_link_hash_undefined;
1180 h->u.undef.abfd = abfd;
1181 /* We don't call bfd_link_add_undef to add this to the list of
1182 undefined symbols because we are going to define it
1189 /* This is called when BFD has discovered a constructor. This is only
1190 called for some object file formats--those which do not handle
1191 constructors in some more clever fashion. This is similar to
1192 adding an element to a set, but less general. */
1195 constructor_callback (struct bfd_link_info *info,
1196 bfd_boolean constructor,
1203 struct bfd_link_hash_entry *h;
1204 char set_name[1 + sizeof "__CTOR_LIST__"];
1206 if (config.warn_constructors)
1207 einfo (_("%P: warning: global constructor %s used\n"), name);
1209 if (! config.build_constructors)
1212 /* Ensure that BFD_RELOC_CTOR exists now, so that we can give a
1213 useful error message. */
1214 if (bfd_reloc_type_lookup (output_bfd, BFD_RELOC_CTOR) == NULL
1215 && (info->relocatable
1216 || bfd_reloc_type_lookup (abfd, BFD_RELOC_CTOR) == NULL))
1217 einfo (_("%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n"));
1220 if (bfd_get_symbol_leading_char (abfd) != '\0')
1221 *s++ = bfd_get_symbol_leading_char (abfd);
1223 strcpy (s, "__CTOR_LIST__");
1225 strcpy (s, "__DTOR_LIST__");
1227 h = bfd_link_hash_lookup (info->hash, set_name, TRUE, TRUE, TRUE);
1228 if (h == (struct bfd_link_hash_entry *) NULL)
1229 einfo (_("%P%F: bfd_link_hash_lookup failed: %E\n"));
1230 if (h->type == bfd_link_hash_new)
1232 h->type = bfd_link_hash_undefined;
1233 h->u.undef.abfd = abfd;
1234 /* We don't call bfd_link_add_undef to add this to the list of
1235 undefined symbols because we are going to define it
1239 ldctor_add_set_entry (h, BFD_RELOC_CTOR, name, section, value);
1243 /* A structure used by warning_callback to pass information through
1244 bfd_map_over_sections. */
1246 struct warning_callback_info
1249 const char *warning;
1254 /* This is called when there is a reference to a warning symbol. */
1257 warning_callback (struct bfd_link_info *info ATTRIBUTE_UNUSED,
1258 const char *warning,
1264 /* This is a hack to support warn_multiple_gp. FIXME: This should
1265 have a cleaner interface, but what? */
1266 if (! config.warn_multiple_gp
1267 && strcmp (warning, "using multiple gp values") == 0)
1270 if (section != NULL)
1271 einfo ("%C: %s%s\n", abfd, section, address, _("warning: "), warning);
1272 else if (abfd == NULL)
1273 einfo ("%P: %s%s\n", _("warning: "), warning);
1274 else if (symbol == NULL)
1275 einfo ("%B: %s%s\n", abfd, _("warning: "), warning);
1278 lang_input_statement_type *entry;
1280 struct warning_callback_info info;
1282 /* Look through the relocs to see if we can find a plausible
1284 entry = (lang_input_statement_type *) abfd->usrdata;
1285 if (entry != NULL && entry->asymbols != NULL)
1286 asymbols = entry->asymbols;
1292 symsize = bfd_get_symtab_upper_bound (abfd);
1294 einfo (_("%B%F: could not read symbols: %E\n"), abfd);
1295 asymbols = xmalloc (symsize);
1296 symbol_count = bfd_canonicalize_symtab (abfd, asymbols);
1297 if (symbol_count < 0)
1298 einfo (_("%B%F: could not read symbols: %E\n"), abfd);
1301 entry->asymbols = asymbols;
1302 entry->symbol_count = symbol_count;
1307 info.warning = warning;
1308 info.symbol = symbol;
1309 info.asymbols = asymbols;
1310 bfd_map_over_sections (abfd, warning_find_reloc, &info);
1313 einfo ("%B: %s%s\n", abfd, _("warning: "), warning);
1322 /* This is called by warning_callback for each section. It checks the
1323 relocs of the section to see if it can find a reference to the
1324 symbol which triggered the warning. If it can, it uses the reloc
1325 to give an error message with a file and line number. */
1328 warning_find_reloc (bfd *abfd, asection *sec, void *iarg)
1330 struct warning_callback_info *info = iarg;
1334 arelent **p, **pend;
1339 relsize = bfd_get_reloc_upper_bound (abfd, sec);
1341 einfo (_("%B%F: could not read relocs: %E\n"), abfd);
1345 relpp = xmalloc (relsize);
1346 relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols);
1348 einfo (_("%B%F: could not read relocs: %E\n"), abfd);
1351 pend = p + relcount;
1352 for (; p < pend && *p != NULL; p++)
1356 if (q->sym_ptr_ptr != NULL
1357 && *q->sym_ptr_ptr != NULL
1358 && strcmp (bfd_asymbol_name (*q->sym_ptr_ptr), info->symbol) == 0)
1360 /* We found a reloc for the symbol we are looking for. */
1361 einfo ("%C: %s%s\n", abfd, sec, q->address, _("warning: "),
1371 /* This is called when an undefined symbol is found. */
1374 undefined_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED,
1381 static char *error_name;
1382 static unsigned int error_count;
1384 #define MAX_ERRORS_IN_A_ROW 5
1386 if (config.warn_once)
1388 static struct bfd_hash_table *hash;
1390 /* Only warn once about a particular undefined symbol. */
1393 hash = xmalloc (sizeof (struct bfd_hash_table));
1394 if (!bfd_hash_table_init (hash, bfd_hash_newfunc,
1395 sizeof (struct bfd_hash_entry)))
1396 einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
1399 if (bfd_hash_lookup (hash, name, FALSE, FALSE) != NULL)
1402 if (bfd_hash_lookup (hash, name, TRUE, TRUE) == NULL)
1403 einfo (_("%F%P: bfd_hash_lookup failed: %E\n"));
1406 /* We never print more than a reasonable number of errors in a row
1407 for a single symbol. */
1408 if (error_name != NULL
1409 && strcmp (name, error_name) == 0)
1414 if (error_name != NULL)
1416 error_name = xstrdup (name);
1419 if (section != NULL)
1421 if (error_count < MAX_ERRORS_IN_A_ROW)
1424 einfo (_("%X%C: undefined reference to `%T'\n"),
1425 abfd, section, address, name);
1427 einfo (_("%C: warning: undefined reference to `%T'\n"),
1428 abfd, section, address, name);
1430 else if (error_count == MAX_ERRORS_IN_A_ROW)
1433 einfo (_("%X%D: more undefined references to `%T' follow\n"),
1434 abfd, section, address, name);
1436 einfo (_("%D: warning: more undefined references to `%T' follow\n"),
1437 abfd, section, address, name);
1444 if (error_count < MAX_ERRORS_IN_A_ROW)
1447 einfo (_("%X%B: undefined reference to `%T'\n"),
1450 einfo (_("%B: warning: undefined reference to `%T'\n"),
1453 else if (error_count == MAX_ERRORS_IN_A_ROW)
1456 einfo (_("%X%B: more undefined references to `%T' follow\n"),
1459 einfo (_("%B: warning: more undefined references to `%T' follow\n"),
1469 /* Counter to limit the number of relocation overflow error messages
1470 to print. Errors are printed as it is decremented. When it's
1471 called and the counter is zero, a final message is printed
1472 indicating more relocations were omitted. When it gets to -1, no
1473 such errors are printed. If it's initially set to a value less
1474 than -1, all such errors will be printed (--verbose does this). */
1476 int overflow_cutoff_limit = 10;
1478 /* This is called when a reloc overflows. */
1481 reloc_overflow (struct bfd_link_info *info ATTRIBUTE_UNUSED,
1482 struct bfd_link_hash_entry *entry,
1484 const char *reloc_name,
1490 if (overflow_cutoff_limit == -1)
1493 einfo ("%X%C:", abfd, section, address);
1495 if (overflow_cutoff_limit >= 0
1496 && overflow_cutoff_limit-- == 0)
1498 einfo (_(" additional relocation overflows omitted from the output\n"));
1504 while (entry->type == bfd_link_hash_indirect
1505 || entry->type == bfd_link_hash_warning)
1506 entry = entry->u.i.link;
1507 switch (entry->type)
1509 case bfd_link_hash_undefined:
1510 case bfd_link_hash_undefweak:
1511 einfo (_(" relocation truncated to fit: %s against undefined symbol `%T'"),
1512 reloc_name, entry->root.string);
1514 case bfd_link_hash_defined:
1515 case bfd_link_hash_defweak:
1516 einfo (_(" relocation truncated to fit: %s against symbol `%T' defined in %A section in %B"),
1517 reloc_name, entry->root.string,
1518 entry->u.def.section,
1519 entry->u.def.section == bfd_abs_section_ptr
1520 ? output_bfd : entry->u.def.section->owner);
1528 einfo (_(" relocation truncated to fit: %s against `%T'"),
1531 einfo ("+%v", addend);
1536 /* This is called when a dangerous relocation is made. */
1539 reloc_dangerous (struct bfd_link_info *info ATTRIBUTE_UNUSED,
1540 const char *message,
1545 einfo (_("%X%C: dangerous relocation: %s\n"),
1546 abfd, section, address, message);
1550 /* This is called when a reloc is being generated attached to a symbol
1551 that is not being output. */
1554 unattached_reloc (struct bfd_link_info *info ATTRIBUTE_UNUSED,
1560 einfo (_("%X%C: reloc refers to symbol `%T' which is not being output\n"),
1561 abfd, section, address, name);
1565 /* This is called if link_info.notice_all is set, or when a symbol in
1566 link_info.notice_hash is found. Symbols are put in notice_hash
1567 using the -y option. */
1570 notice (struct bfd_link_info *info,
1578 if (command_line.cref || nocrossref_list != NULL)
1579 return handle_asneeded_cref (abfd, value);
1583 if (! info->notice_all
1584 || (info->notice_hash != NULL
1585 && bfd_hash_lookup (info->notice_hash, name, FALSE, FALSE) != NULL))
1587 if (bfd_is_und_section (section))
1588 einfo ("%B: reference to %s\n", abfd, name);
1590 einfo ("%B: definition of %s\n", abfd, name);
1593 if (command_line.cref || nocrossref_list != NULL)
1594 add_cref (name, abfd, section, value);