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, 2008
4 Free Software Foundation, Inc.
5 Written by Steve Chamberlain steve@cygnus.com
7 This file is part of the GNU Binutils.
9 This program 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 3 of the License, or
12 (at your option) any later version.
14 This program 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 this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
22 MA 02110-1301, USA. */
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 ""
63 FILE *saved_script_handle
= NULL
;
64 FILE *previous_script_handle
= NULL
;
65 bfd_boolean force_make_executable
= FALSE
;
68 const char *output_filename
= "a.out";
70 /* Name this program was invoked by. */
73 /* The prefix for system library directories. */
74 const char *ld_sysroot
;
76 /* The canonical representation of ld_sysroot. */
77 char * ld_canon_sysroot
;
78 int ld_canon_sysroot_len
;
80 /* Set by -G argument, for MIPS ECOFF target. */
81 int g_switch_value
= 8;
83 /* Nonzero means print names of input files as processed. */
84 bfd_boolean trace_files
;
86 /* Nonzero means same, but note open failures, too. */
87 bfd_boolean trace_file_tries
;
89 /* Nonzero means version number was printed, so exit successfully
90 instead of complaining if no input files are given. */
91 bfd_boolean version_printed
;
93 /* Nonzero means link in every member of an archive. */
94 bfd_boolean whole_archive
;
96 /* Nonzero means create DT_NEEDED entries only if a dynamic library
97 actually satisfies some reference in a regular object. */
98 bfd_boolean as_needed
;
100 /* Nonzero means never create DT_NEEDED entries for dynamic libraries
101 in DT_NEEDED tags. */
102 bfd_boolean add_needed
= TRUE
;
104 /* TRUE if we should demangle symbol names. */
105 bfd_boolean demangling
;
107 args_type command_line
;
109 ld_config_type config
;
111 sort_type sort_section
;
113 static const char *get_sysroot
115 static char *get_emulation
117 static void set_scripts_dir
119 static bfd_boolean add_archive_element
120 (struct bfd_link_info
*, bfd
*, const char *);
121 static bfd_boolean multiple_definition
122 (struct bfd_link_info
*, const char *, bfd
*, asection
*, bfd_vma
,
123 bfd
*, asection
*, bfd_vma
);
124 static bfd_boolean multiple_common
125 (struct bfd_link_info
*, const char *, bfd
*, enum bfd_link_hash_type
,
126 bfd_vma
, bfd
*, enum bfd_link_hash_type
, bfd_vma
);
127 static bfd_boolean add_to_set
128 (struct bfd_link_info
*, struct bfd_link_hash_entry
*,
129 bfd_reloc_code_real_type
, bfd
*, asection
*, bfd_vma
);
130 static bfd_boolean constructor_callback
131 (struct bfd_link_info
*, bfd_boolean
, const char *, bfd
*,
132 asection
*, bfd_vma
);
133 static bfd_boolean warning_callback
134 (struct bfd_link_info
*, const char *, const char *, bfd
*,
135 asection
*, bfd_vma
);
136 static void warning_find_reloc
137 (bfd
*, asection
*, void *);
138 static bfd_boolean undefined_symbol
139 (struct bfd_link_info
*, const char *, bfd
*, asection
*, bfd_vma
,
141 static bfd_boolean reloc_overflow
142 (struct bfd_link_info
*, struct bfd_link_hash_entry
*, const char *,
143 const char *, bfd_vma
, bfd
*, asection
*, bfd_vma
);
144 static bfd_boolean reloc_dangerous
145 (struct bfd_link_info
*, const char *, bfd
*, asection
*, bfd_vma
);
146 static bfd_boolean unattached_reloc
147 (struct bfd_link_info
*, const char *, bfd
*, asection
*, bfd_vma
);
148 static bfd_boolean notice
149 (struct bfd_link_info
*, const char *, bfd
*, asection
*, bfd_vma
);
151 static struct bfd_link_callbacks link_callbacks
=
157 constructor_callback
,
167 ldlang_override_segment_assignment
170 struct bfd_link_info link_info
;
177 if (link_info
.output_bfd
)
178 bfd_cache_close (link_info
.output_bfd
);
179 if (delete_output_file_on_failure
)
180 unlink_if_ordinary (output_filename
);
185 main (int argc
, char **argv
)
188 long start_time
= get_run_time ();
190 #if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
191 setlocale (LC_MESSAGES
, "");
193 #if defined (HAVE_SETLOCALE)
194 setlocale (LC_CTYPE
, "");
196 bindtextdomain (PACKAGE
, LOCALEDIR
);
197 textdomain (PACKAGE
);
199 program_name
= argv
[0];
200 xmalloc_set_program_name (program_name
);
202 START_PROGRESS (program_name
, 0);
204 expandargv (&argc
, &argv
);
208 bfd_set_error_program_name (program_name
);
210 xatexit (remove_output
);
212 /* Set up the sysroot directory. */
213 ld_sysroot
= get_sysroot (argc
, argv
);
216 if (*TARGET_SYSTEM_ROOT
== 0)
218 einfo ("%P%F: this linker was not configured to use sysroots\n");
222 ld_canon_sysroot
= lrealpath (ld_sysroot
);
224 if (ld_canon_sysroot
)
225 ld_canon_sysroot_len
= strlen (ld_canon_sysroot
);
227 ld_canon_sysroot_len
= -1;
229 /* Set the default BFD target based on the configured target. Doing
230 this permits the linker to be configured for a particular target,
231 and linked against a shared BFD library which was configured for
232 a different target. The macro TARGET is defined by Makefile. */
233 if (! bfd_set_default_target (TARGET
))
235 einfo (_("%X%P: can't set BFD default target to `%s': %E\n"), TARGET
);
246 config
.build_constructors
= TRUE
;
247 config
.rpath_separator
= ':';
248 config
.split_by_reloc
= (unsigned) -1;
249 config
.split_by_file
= (bfd_size_type
) -1;
250 config
.make_executable
= TRUE
;
251 config
.magic_demand_paged
= TRUE
;
252 config
.text_read_only
= TRUE
;
254 command_line
.warn_mismatch
= TRUE
;
255 command_line
.warn_search_mismatch
= TRUE
;
256 command_line
.check_section_addresses
= TRUE
;
258 /* We initialize DEMANGLING based on the environment variable
259 COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the
260 output of the linker, unless COLLECT_NO_DEMANGLE is set in the
261 environment. Acting the same way here lets us provide the same
262 interface by default. */
263 demangling
= getenv ("COLLECT_NO_DEMANGLE") == NULL
;
265 link_info
.allow_undefined_version
= TRUE
;
266 link_info
.keep_memory
= TRUE
;
267 link_info
.combreloc
= TRUE
;
268 link_info
.strip_discarded
= TRUE
;
269 link_info
.emit_hash
= TRUE
;
270 link_info
.callbacks
= &link_callbacks
;
271 link_info
.input_bfds_tail
= &link_info
.input_bfds
;
272 /* SVR4 linkers seem to set DT_INIT and DT_FINI based on magic _init
273 and _fini symbols. We are compatible. */
274 link_info
.init_function
= "_init";
275 link_info
.fini_function
= "_fini";
276 link_info
.relax_pass
= 1;
277 link_info
.pei386_auto_import
= -1;
278 link_info
.spare_dynamic_tags
= 5;
280 ldfile_add_arch ("");
281 emulation
= get_emulation (argc
, argv
);
282 ldemul_choose_mode (emulation
);
283 default_target
= ldemul_choose_target (argc
, argv
);
285 ldemul_before_parse ();
286 lang_has_input_file
= FALSE
;
287 parse_args (argc
, argv
);
289 if (config
.hash_table_size
!= 0)
290 bfd_hash_set_default_size (config
.hash_table_size
);
292 ldemul_set_symbols ();
294 if (link_info
.relocatable
)
296 if (command_line
.relax
)
297 einfo (_("%P%F: --relax and -r may not be used together\n"));
298 if (link_info
.shared
)
299 einfo (_("%P%F: -r and -shared may not be used together\n"));
302 /* We may have -Bsymbolic, -Bsymbolic-functions, --dynamic-list-data,
303 --dynamic-list-cpp-new, --dynamic-list-cpp-typeinfo and
304 --dynamic-list FILE. -Bsymbolic and -Bsymbolic-functions are
305 for shared libraries. -Bsymbolic overrides all others and vice
307 switch (command_line
.symbolic
)
312 /* -Bsymbolic is for shared library only. */
313 if (link_info
.shared
)
315 link_info
.symbolic
= TRUE
;
316 /* Should we free the unused memory? */
317 link_info
.dynamic_list
= NULL
;
318 command_line
.dynamic_list
= dynamic_list_unset
;
321 case symbolic_functions
:
322 /* -Bsymbolic-functions is for shared library only. */
323 if (link_info
.shared
)
324 command_line
.dynamic_list
= dynamic_list_data
;
328 switch (command_line
.dynamic_list
)
330 case dynamic_list_unset
:
332 case dynamic_list_data
:
333 link_info
.dynamic_data
= TRUE
;
335 link_info
.dynamic
= TRUE
;
339 if (! link_info
.shared
)
341 if (command_line
.filter_shlib
)
342 einfo (_("%P%F: -F may not be used without -shared\n"));
343 if (command_line
.auxiliary_filters
)
344 einfo (_("%P%F: -f may not be used without -shared\n"));
347 if (! link_info
.shared
|| link_info
.pie
)
348 link_info
.executable
= TRUE
;
350 /* Treat ld -r -s as ld -r -S -x (i.e., strip all local symbols). I
351 don't see how else this can be handled, since in this case we
352 must preserve all externally visible symbols. */
353 if (link_info
.relocatable
&& link_info
.strip
== strip_all
)
355 link_info
.strip
= strip_debugger
;
356 if (link_info
.discard
== discard_sec_merge
)
357 link_info
.discard
= discard_all
;
360 /* This essentially adds another -L directory so this must be done after
361 the -L's in argv have been processed. */
364 /* If we have not already opened and parsed a linker script,
365 try the default script from command line first. */
366 if (saved_script_handle
== NULL
367 && command_line
.default_script
!= NULL
)
369 ldfile_open_command_file (command_line
.default_script
);
370 parser_input
= input_script
;
374 /* If we have not already opened and parsed a linker script
375 read the emulation's appropriate default script. */
376 if (saved_script_handle
== NULL
)
379 char *s
= ldemul_get_script (&isfile
);
382 ldfile_open_command_file (s
);
388 parser_input
= input_script
;
393 if (trace_file_tries
)
395 if (saved_script_handle
)
396 info_msg (_("using external linker script:"));
398 info_msg (_("using internal linker script:"));
399 info_msg ("\n==================================================\n");
401 if (saved_script_handle
)
403 static const int ld_bufsz
= 8193;
405 char *buf
= xmalloc (ld_bufsz
);
407 rewind (saved_script_handle
);
408 while ((n
= fread (buf
, 1, ld_bufsz
- 1, saved_script_handle
)) > 0)
413 rewind (saved_script_handle
);
420 info_msg (ldemul_get_script (&isfile
));
423 info_msg ("\n==================================================\n");
428 if (!lang_has_input_file
)
432 einfo (_("%P%F: no input files\n"));
436 info_msg (_("%P: mode %s\n"), emulation
);
438 ldemul_after_parse ();
440 if (config
.map_filename
)
442 if (strcmp (config
.map_filename
, "-") == 0)
444 config
.map_file
= stdout
;
448 config
.map_file
= fopen (config
.map_filename
, FOPEN_WT
);
449 if (config
.map_file
== (FILE *) NULL
)
451 bfd_set_error (bfd_error_system_call
);
452 einfo (_("%P%F: cannot open map file %s: %E\n"),
453 config
.map_filename
);
460 /* Print error messages for any missing symbols, for any warning
461 symbols, and possibly multiple definitions. */
462 if (link_info
.relocatable
)
463 link_info
.output_bfd
->flags
&= ~EXEC_P
;
465 link_info
.output_bfd
->flags
|= EXEC_P
;
469 if (config
.map_file
!= NULL
)
471 if (command_line
.cref
)
472 output_cref (config
.map_file
!= NULL
? config
.map_file
: stdout
);
473 if (nocrossref_list
!= NULL
)
474 check_nocrossrefs ();
478 /* Even if we're producing relocatable output, some non-fatal errors should
479 be reported in the exit status. (What non-fatal errors, if any, do we
480 want to ignore for relocatable output?) */
481 if (!config
.make_executable
&& !force_make_executable
)
484 einfo (_("%P: link errors found, deleting executable `%s'\n"),
487 /* The file will be removed by remove_output. */
492 if (! bfd_close (link_info
.output_bfd
))
493 einfo (_("%F%B: final close failed: %E\n"), link_info
.output_bfd
);
495 /* If the --force-exe-suffix is enabled, and we're making an
496 executable file and it doesn't end in .exe, copy it to one
498 if (! link_info
.relocatable
&& command_line
.force_exe_suffix
)
500 int len
= strlen (output_filename
);
503 || (strcasecmp (output_filename
+ len
- 4, ".exe") != 0
504 && strcasecmp (output_filename
+ len
- 4, ".dll") != 0))
508 const int bsize
= 4096;
509 char *buf
= xmalloc (bsize
);
511 char *dst_name
= xmalloc (len
+ 5);
513 strcpy (dst_name
, output_filename
);
514 strcat (dst_name
, ".exe");
515 src
= fopen (output_filename
, FOPEN_RB
);
516 dst
= fopen (dst_name
, FOPEN_WB
);
519 einfo (_("%X%P: unable to open for source of copy `%s'\n"),
522 einfo (_("%X%P: unable to open for destination of copy `%s'\n"),
524 while ((l
= fread (buf
, 1, bsize
, src
)) > 0)
526 int done
= fwrite (buf
, 1, l
, dst
);
529 einfo (_("%P: Error writing file `%s'\n"), dst_name
);
533 if (fclose (dst
) == EOF
)
534 einfo (_("%P: Error closing file `%s'\n"), dst_name
);
541 END_PROGRESS (program_name
);
546 char *lim
= sbrk (0);
548 long run_time
= get_run_time () - start_time
;
550 fprintf (stderr
, _("%s: total time in link: %ld.%06ld\n"),
551 program_name
, run_time
/ 1000000, run_time
% 1000000);
553 fprintf (stderr
, _("%s: data size %ld\n"), program_name
,
554 (long) (lim
- (char *) &environ
));
558 /* Prevent remove_output from doing anything, after a successful link. */
559 output_filename
= NULL
;
565 /* If the configured sysroot is relocatable, try relocating it based on
566 default prefix FROM. Return the relocated directory if it exists,
567 otherwise return null. */
570 get_relative_sysroot (const char *from ATTRIBUTE_UNUSED
)
572 #ifdef TARGET_SYSTEM_ROOT_RELOCATABLE
576 path
= make_relative_prefix (program_name
, from
, TARGET_SYSTEM_ROOT
);
579 if (stat (path
, &s
) == 0 && S_ISDIR (s
.st_mode
))
587 /* Return the sysroot directory. Return "" if no sysroot is being used. */
590 get_sysroot (int argc
, char **argv
)
595 for (i
= 1; i
< argc
; i
++)
596 if (CONST_STRNEQ (argv
[i
], "--sysroot="))
597 return argv
[i
] + strlen ("--sysroot=");
599 path
= get_relative_sysroot (BINDIR
);
603 path
= get_relative_sysroot (TOOLBINDIR
);
607 return TARGET_SYSTEM_ROOT
;
610 /* We need to find any explicitly given emulation in order to initialize the
611 state that's needed by the lex&yacc argument parser (parse_args). */
614 get_emulation (int argc
, char **argv
)
619 emulation
= getenv (EMULATION_ENVIRON
);
620 if (emulation
== NULL
)
621 emulation
= DEFAULT_EMULATION
;
623 for (i
= 1; i
< argc
; i
++)
625 if (CONST_STRNEQ (argv
[i
], "-m"))
627 if (argv
[i
][2] == '\0')
632 emulation
= argv
[i
+ 1];
636 einfo (_("%P%F: missing argument to -m\n"));
638 else if (strcmp (argv
[i
], "-mips1") == 0
639 || strcmp (argv
[i
], "-mips2") == 0
640 || strcmp (argv
[i
], "-mips3") == 0
641 || strcmp (argv
[i
], "-mips4") == 0
642 || strcmp (argv
[i
], "-mips5") == 0
643 || strcmp (argv
[i
], "-mips32") == 0
644 || strcmp (argv
[i
], "-mips32r2") == 0
645 || strcmp (argv
[i
], "-mips64") == 0
646 || strcmp (argv
[i
], "-mips64r2") == 0)
648 /* FIXME: The arguments -mips1, -mips2, -mips3, etc. are
649 passed to the linker by some MIPS compilers. They
650 generally tell the linker to use a slightly different
651 library path. Perhaps someday these should be
652 implemented as emulations; until then, we just ignore
653 the arguments and hope that nobody ever creates
654 emulations named ips1, ips2 or ips3. */
656 else if (strcmp (argv
[i
], "-m486") == 0)
658 /* FIXME: The argument -m486 is passed to the linker on
659 some Linux systems. Hope that nobody creates an
660 emulation named 486. */
665 emulation
= &argv
[i
][2];
673 /* If directory DIR contains an "ldscripts" subdirectory,
674 add DIR to the library search path and return TRUE,
675 else return FALSE. */
678 check_for_scripts_dir (char *dir
)
685 dirlen
= strlen (dir
);
686 /* sizeof counts the terminating NUL. */
687 buf
= xmalloc (dirlen
+ sizeof ("/ldscripts"));
688 sprintf (buf
, "%s/ldscripts", dir
);
690 res
= stat (buf
, &s
) == 0 && S_ISDIR (s
.st_mode
);
693 ldfile_add_library_path (dir
, FALSE
);
697 /* Set the default directory for finding script files.
698 Libraries will be searched for here too, but that's ok.
699 We look for the "ldscripts" directory in:
701 SCRIPTDIR (passed from Makefile)
702 (adjusted according to the current location of the binary)
703 SCRIPTDIR (passed from Makefile)
704 the dir where this program is (for using it from the build tree)
705 the dir where this program is/../lib
706 (for installing the tool suite elsewhere). */
709 set_scripts_dir (void)
715 dir
= make_relative_prefix (program_name
, BINDIR
, SCRIPTDIR
);
718 found
= check_for_scripts_dir (dir
);
724 dir
= make_relative_prefix (program_name
, TOOLBINDIR
, SCRIPTDIR
);
727 found
= check_for_scripts_dir (dir
);
733 if (check_for_scripts_dir (SCRIPTDIR
))
734 /* We've been installed normally. */
737 /* Look for "ldscripts" in the dir where our binary is. */
738 end
= strrchr (program_name
, '/');
739 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
741 /* We could have \foo\bar, or /foo\bar. */
742 char *bslash
= strrchr (program_name
, '\\');
744 if (end
== NULL
|| (bslash
!= NULL
&& bslash
> end
))
750 /* Don't look for ldscripts in the current directory. There is
751 too much potential for confusion. */
754 dirlen
= end
- program_name
;
755 /* Make a copy of program_name in dir.
756 Leave room for later "/../lib". */
757 dir
= xmalloc (dirlen
+ 8);
758 strncpy (dir
, program_name
, dirlen
);
761 if (check_for_scripts_dir (dir
))
767 /* Look for "ldscripts" in <the dir where our binary is>/../lib. */
768 strcpy (dir
+ dirlen
, "/../lib");
769 check_for_scripts_dir (dir
);
774 add_ysym (const char *name
)
776 if (link_info
.notice_hash
== NULL
)
778 link_info
.notice_hash
= xmalloc (sizeof (struct bfd_hash_table
));
779 if (!bfd_hash_table_init_n (link_info
.notice_hash
,
781 sizeof (struct bfd_hash_entry
),
783 einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
786 if (bfd_hash_lookup (link_info
.notice_hash
, name
, TRUE
, TRUE
) == NULL
)
787 einfo (_("%P%F: bfd_hash_lookup failed: %E\n"));
790 /* Record a symbol to be wrapped, from the --wrap option. */
793 add_wrap (const char *name
)
795 if (link_info
.wrap_hash
== NULL
)
797 link_info
.wrap_hash
= xmalloc (sizeof (struct bfd_hash_table
));
798 if (!bfd_hash_table_init_n (link_info
.wrap_hash
,
800 sizeof (struct bfd_hash_entry
),
802 einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
805 if (bfd_hash_lookup (link_info
.wrap_hash
, name
, TRUE
, TRUE
) == NULL
)
806 einfo (_("%P%F: bfd_hash_lookup failed: %E\n"));
809 /* Handle the -retain-symbols-file option. */
812 add_keepsyms_file (const char *filename
)
819 if (link_info
.strip
== strip_some
)
820 einfo (_("%X%P: error: duplicate retain-symbols-file\n"));
822 file
= fopen (filename
, "r");
825 bfd_set_error (bfd_error_system_call
);
826 einfo ("%X%P: %s: %E\n", filename
);
830 link_info
.keep_hash
= xmalloc (sizeof (struct bfd_hash_table
));
831 if (!bfd_hash_table_init (link_info
.keep_hash
, bfd_hash_newfunc
,
832 sizeof (struct bfd_hash_entry
)))
833 einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
836 buf
= xmalloc (bufsize
);
848 while (! ISSPACE (c
) && c
!= EOF
)
855 buf
= xrealloc (buf
, bufsize
);
862 if (bfd_hash_lookup (link_info
.keep_hash
, buf
, TRUE
, TRUE
) == NULL
)
863 einfo (_("%P%F: bfd_hash_lookup for insertion failed: %E\n"));
867 if (link_info
.strip
!= strip_none
)
868 einfo (_("%P: `-retain-symbols-file' overrides `-s' and `-S'\n"));
871 link_info
.strip
= strip_some
;
874 /* Callbacks from the BFD linker routines. */
876 /* This is called when BFD has decided to include an archive member in
880 add_archive_element (struct bfd_link_info
*info
,
884 lang_input_statement_type
*input
;
886 input
= xmalloc (sizeof (lang_input_statement_type
));
887 input
->filename
= abfd
->filename
;
888 input
->local_sym_name
= abfd
->filename
;
889 input
->the_bfd
= abfd
;
890 input
->asymbols
= NULL
;
892 input
->just_syms_flag
= FALSE
;
893 input
->loaded
= FALSE
;
894 input
->search_dirs_flag
= FALSE
;
896 /* FIXME: The following fields are not set: header.next,
897 header.type, closed, passive_position, symbol_count,
898 next_real_file, is_archive, target, real. This bit of code is
899 from the old decode_library_subfile function. I don't know
900 whether any of those fields matters. */
902 ldlang_add_file (input
);
904 if (config
.map_file
!= NULL
)
906 static bfd_boolean header_printed
;
907 struct bfd_link_hash_entry
*h
;
911 h
= bfd_link_hash_lookup (info
->hash
, name
, FALSE
, FALSE
, TRUE
);
923 case bfd_link_hash_defined
:
924 case bfd_link_hash_defweak
:
925 from
= h
->u
.def
.section
->owner
;
928 case bfd_link_hash_undefined
:
929 case bfd_link_hash_undefweak
:
930 from
= h
->u
.undef
.abfd
;
933 case bfd_link_hash_common
:
934 from
= h
->u
.c
.p
->section
->owner
;
939 if (! header_printed
)
943 sprintf (buf
, _("Archive member included because of file (symbol)\n\n"));
945 header_printed
= TRUE
;
948 if (bfd_my_archive (abfd
) == NULL
)
950 minfo ("%s", bfd_get_filename (abfd
));
951 len
= strlen (bfd_get_filename (abfd
));
955 minfo ("%s(%s)", bfd_get_filename (bfd_my_archive (abfd
)),
956 bfd_get_filename (abfd
));
957 len
= (strlen (bfd_get_filename (bfd_my_archive (abfd
)))
958 + strlen (bfd_get_filename (abfd
))
976 minfo ("(%T)\n", h
->root
.string
);
978 minfo ("(%s)\n", name
);
981 if (trace_files
|| trace_file_tries
)
982 info_msg ("%I\n", input
);
987 /* This is called when BFD has discovered a symbol which is defined
991 multiple_definition (struct bfd_link_info
*info ATTRIBUTE_UNUSED
,
1000 /* If either section has the output_section field set to
1001 bfd_abs_section_ptr, it means that the section is being
1002 discarded, and this is not really a multiple definition at all.
1003 FIXME: It would be cleaner to somehow ignore symbols defined in
1004 sections which are being discarded. */
1005 if ((osec
->output_section
!= NULL
1006 && ! bfd_is_abs_section (osec
)
1007 && bfd_is_abs_section (osec
->output_section
))
1008 || (nsec
->output_section
!= NULL
1009 && ! bfd_is_abs_section (nsec
)
1010 && bfd_is_abs_section (nsec
->output_section
)))
1013 einfo (_("%X%C: multiple definition of `%T'\n"),
1014 nbfd
, nsec
, nval
, name
);
1016 einfo (_("%D: first defined here\n"), obfd
, osec
, oval
);
1018 if (command_line
.relax
)
1020 einfo (_("%P: Disabling relaxation: it will not work with multiple definitions\n"));
1021 command_line
.relax
= 0;
1027 /* This is called when there is a definition of a common symbol, or
1028 when a common symbol is found for a symbol that is already defined,
1029 or when two common symbols are found. We only do something if
1030 -warn-common was used. */
1033 multiple_common (struct bfd_link_info
*info ATTRIBUTE_UNUSED
,
1036 enum bfd_link_hash_type otype
,
1039 enum bfd_link_hash_type ntype
,
1042 if (! config
.warn_common
)
1045 if (ntype
== bfd_link_hash_defined
1046 || ntype
== bfd_link_hash_defweak
1047 || ntype
== bfd_link_hash_indirect
)
1049 ASSERT (otype
== bfd_link_hash_common
);
1050 einfo (_("%B: warning: definition of `%T' overriding common\n"),
1053 einfo (_("%B: warning: common is here\n"), obfd
);
1055 else if (otype
== bfd_link_hash_defined
1056 || otype
== bfd_link_hash_defweak
1057 || otype
== bfd_link_hash_indirect
)
1059 ASSERT (ntype
== bfd_link_hash_common
);
1060 einfo (_("%B: warning: common of `%T' overridden by definition\n"),
1063 einfo (_("%B: warning: defined here\n"), obfd
);
1067 ASSERT (otype
== bfd_link_hash_common
&& ntype
== bfd_link_hash_common
);
1070 einfo (_("%B: warning: common of `%T' overridden by larger common\n"),
1073 einfo (_("%B: warning: larger common is here\n"), obfd
);
1075 else if (nsize
> osize
)
1077 einfo (_("%B: warning: common of `%T' overriding smaller common\n"),
1080 einfo (_("%B: warning: smaller common is here\n"), obfd
);
1084 einfo (_("%B: warning: multiple common of `%T'\n"), nbfd
, name
);
1086 einfo (_("%B: warning: previous common is here\n"), obfd
);
1093 /* This is called when BFD has discovered a set element. H is the
1094 entry in the linker hash table for the set. SECTION and VALUE
1095 represent a value which should be added to the set. */
1098 add_to_set (struct bfd_link_info
*info ATTRIBUTE_UNUSED
,
1099 struct bfd_link_hash_entry
*h
,
1100 bfd_reloc_code_real_type reloc
,
1105 if (config
.warn_constructors
)
1106 einfo (_("%P: warning: global constructor %s used\n"),
1109 if (! config
.build_constructors
)
1112 ldctor_add_set_entry (h
, reloc
, NULL
, section
, value
);
1114 if (h
->type
== bfd_link_hash_new
)
1116 h
->type
= bfd_link_hash_undefined
;
1117 h
->u
.undef
.abfd
= abfd
;
1118 /* We don't call bfd_link_add_undef to add this to the list of
1119 undefined symbols because we are going to define it
1126 /* This is called when BFD has discovered a constructor. This is only
1127 called for some object file formats--those which do not handle
1128 constructors in some more clever fashion. This is similar to
1129 adding an element to a set, but less general. */
1132 constructor_callback (struct bfd_link_info
*info
,
1133 bfd_boolean constructor
,
1140 struct bfd_link_hash_entry
*h
;
1141 char set_name
[1 + sizeof "__CTOR_LIST__"];
1143 if (config
.warn_constructors
)
1144 einfo (_("%P: warning: global constructor %s used\n"), name
);
1146 if (! config
.build_constructors
)
1149 /* Ensure that BFD_RELOC_CTOR exists now, so that we can give a
1150 useful error message. */
1151 if (bfd_reloc_type_lookup (link_info
.output_bfd
, BFD_RELOC_CTOR
) == NULL
1152 && (info
->relocatable
1153 || bfd_reloc_type_lookup (abfd
, BFD_RELOC_CTOR
) == NULL
))
1154 einfo (_("%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n"));
1157 if (bfd_get_symbol_leading_char (abfd
) != '\0')
1158 *s
++ = bfd_get_symbol_leading_char (abfd
);
1160 strcpy (s
, "__CTOR_LIST__");
1162 strcpy (s
, "__DTOR_LIST__");
1164 h
= bfd_link_hash_lookup (info
->hash
, set_name
, TRUE
, TRUE
, TRUE
);
1165 if (h
== (struct bfd_link_hash_entry
*) NULL
)
1166 einfo (_("%P%F: bfd_link_hash_lookup failed: %E\n"));
1167 if (h
->type
== bfd_link_hash_new
)
1169 h
->type
= bfd_link_hash_undefined
;
1170 h
->u
.undef
.abfd
= abfd
;
1171 /* We don't call bfd_link_add_undef to add this to the list of
1172 undefined symbols because we are going to define it
1176 ldctor_add_set_entry (h
, BFD_RELOC_CTOR
, name
, section
, value
);
1180 /* A structure used by warning_callback to pass information through
1181 bfd_map_over_sections. */
1183 struct warning_callback_info
1186 const char *warning
;
1191 /* This is called when there is a reference to a warning symbol. */
1194 warning_callback (struct bfd_link_info
*info ATTRIBUTE_UNUSED
,
1195 const char *warning
,
1201 /* This is a hack to support warn_multiple_gp. FIXME: This should
1202 have a cleaner interface, but what? */
1203 if (! config
.warn_multiple_gp
1204 && strcmp (warning
, "using multiple gp values") == 0)
1207 if (section
!= NULL
)
1208 einfo ("%C: %s%s\n", abfd
, section
, address
, _("warning: "), warning
);
1209 else if (abfd
== NULL
)
1210 einfo ("%P: %s%s\n", _("warning: "), warning
);
1211 else if (symbol
== NULL
)
1212 einfo ("%B: %s%s\n", abfd
, _("warning: "), warning
);
1215 lang_input_statement_type
*entry
;
1217 struct warning_callback_info info
;
1219 /* Look through the relocs to see if we can find a plausible
1221 entry
= (lang_input_statement_type
*) abfd
->usrdata
;
1222 if (entry
!= NULL
&& entry
->asymbols
!= NULL
)
1223 asymbols
= entry
->asymbols
;
1229 symsize
= bfd_get_symtab_upper_bound (abfd
);
1231 einfo (_("%B%F: could not read symbols: %E\n"), abfd
);
1232 asymbols
= xmalloc (symsize
);
1233 symbol_count
= bfd_canonicalize_symtab (abfd
, asymbols
);
1234 if (symbol_count
< 0)
1235 einfo (_("%B%F: could not read symbols: %E\n"), abfd
);
1238 entry
->asymbols
= asymbols
;
1239 entry
->symbol_count
= symbol_count
;
1244 info
.warning
= warning
;
1245 info
.symbol
= symbol
;
1246 info
.asymbols
= asymbols
;
1247 bfd_map_over_sections (abfd
, warning_find_reloc
, &info
);
1250 einfo ("%B: %s%s\n", abfd
, _("warning: "), warning
);
1259 /* This is called by warning_callback for each section. It checks the
1260 relocs of the section to see if it can find a reference to the
1261 symbol which triggered the warning. If it can, it uses the reloc
1262 to give an error message with a file and line number. */
1265 warning_find_reloc (bfd
*abfd
, asection
*sec
, void *iarg
)
1267 struct warning_callback_info
*info
= iarg
;
1271 arelent
**p
, **pend
;
1276 relsize
= bfd_get_reloc_upper_bound (abfd
, sec
);
1278 einfo (_("%B%F: could not read relocs: %E\n"), abfd
);
1282 relpp
= xmalloc (relsize
);
1283 relcount
= bfd_canonicalize_reloc (abfd
, sec
, relpp
, info
->asymbols
);
1285 einfo (_("%B%F: could not read relocs: %E\n"), abfd
);
1288 pend
= p
+ relcount
;
1289 for (; p
< pend
&& *p
!= NULL
; p
++)
1293 if (q
->sym_ptr_ptr
!= NULL
1294 && *q
->sym_ptr_ptr
!= NULL
1295 && strcmp (bfd_asymbol_name (*q
->sym_ptr_ptr
), info
->symbol
) == 0)
1297 /* We found a reloc for the symbol we are looking for. */
1298 einfo ("%C: %s%s\n", abfd
, sec
, q
->address
, _("warning: "),
1308 /* This is called when an undefined symbol is found. */
1311 undefined_symbol (struct bfd_link_info
*info ATTRIBUTE_UNUSED
,
1318 static char *error_name
;
1319 static unsigned int error_count
;
1321 #define MAX_ERRORS_IN_A_ROW 5
1323 if (config
.warn_once
)
1325 static struct bfd_hash_table
*hash
;
1327 /* Only warn once about a particular undefined symbol. */
1330 hash
= xmalloc (sizeof (struct bfd_hash_table
));
1331 if (!bfd_hash_table_init (hash
, bfd_hash_newfunc
,
1332 sizeof (struct bfd_hash_entry
)))
1333 einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
1336 if (bfd_hash_lookup (hash
, name
, FALSE
, FALSE
) != NULL
)
1339 if (bfd_hash_lookup (hash
, name
, TRUE
, TRUE
) == NULL
)
1340 einfo (_("%F%P: bfd_hash_lookup failed: %E\n"));
1343 /* We never print more than a reasonable number of errors in a row
1344 for a single symbol. */
1345 if (error_name
!= NULL
1346 && strcmp (name
, error_name
) == 0)
1351 if (error_name
!= NULL
)
1353 error_name
= xstrdup (name
);
1356 if (section
!= NULL
)
1358 if (error_count
< MAX_ERRORS_IN_A_ROW
)
1361 einfo (_("%X%C: undefined reference to `%T'\n"),
1362 abfd
, section
, address
, name
);
1364 einfo (_("%C: warning: undefined reference to `%T'\n"),
1365 abfd
, section
, address
, name
);
1367 else if (error_count
== MAX_ERRORS_IN_A_ROW
)
1370 einfo (_("%X%D: more undefined references to `%T' follow\n"),
1371 abfd
, section
, address
, name
);
1373 einfo (_("%D: warning: more undefined references to `%T' follow\n"),
1374 abfd
, section
, address
, name
);
1381 if (error_count
< MAX_ERRORS_IN_A_ROW
)
1384 einfo (_("%X%B: undefined reference to `%T'\n"),
1387 einfo (_("%B: warning: undefined reference to `%T'\n"),
1390 else if (error_count
== MAX_ERRORS_IN_A_ROW
)
1393 einfo (_("%X%B: more undefined references to `%T' follow\n"),
1396 einfo (_("%B: warning: more undefined references to `%T' follow\n"),
1406 /* Counter to limit the number of relocation overflow error messages
1407 to print. Errors are printed as it is decremented. When it's
1408 called and the counter is zero, a final message is printed
1409 indicating more relocations were omitted. When it gets to -1, no
1410 such errors are printed. If it's initially set to a value less
1411 than -1, all such errors will be printed (--verbose does this). */
1413 int overflow_cutoff_limit
= 10;
1415 /* This is called when a reloc overflows. */
1418 reloc_overflow (struct bfd_link_info
*info ATTRIBUTE_UNUSED
,
1419 struct bfd_link_hash_entry
*entry
,
1421 const char *reloc_name
,
1427 if (overflow_cutoff_limit
== -1)
1430 einfo ("%X%C:", abfd
, section
, address
);
1432 if (overflow_cutoff_limit
>= 0
1433 && overflow_cutoff_limit
-- == 0)
1435 einfo (_(" additional relocation overflows omitted from the output\n"));
1441 while (entry
->type
== bfd_link_hash_indirect
1442 || entry
->type
== bfd_link_hash_warning
)
1443 entry
= entry
->u
.i
.link
;
1444 switch (entry
->type
)
1446 case bfd_link_hash_undefined
:
1447 case bfd_link_hash_undefweak
:
1448 einfo (_(" relocation truncated to fit: %s against undefined symbol `%T'"),
1449 reloc_name
, entry
->root
.string
);
1451 case bfd_link_hash_defined
:
1452 case bfd_link_hash_defweak
:
1453 einfo (_(" relocation truncated to fit: %s against symbol `%T' defined in %A section in %B"),
1454 reloc_name
, entry
->root
.string
,
1455 entry
->u
.def
.section
,
1456 entry
->u
.def
.section
== bfd_abs_section_ptr
1457 ? link_info
.output_bfd
: entry
->u
.def
.section
->owner
);
1465 einfo (_(" relocation truncated to fit: %s against `%T'"),
1468 einfo ("+%v", addend
);
1473 /* This is called when a dangerous relocation is made. */
1476 reloc_dangerous (struct bfd_link_info
*info ATTRIBUTE_UNUSED
,
1477 const char *message
,
1482 einfo (_("%X%C: dangerous relocation: %s\n"),
1483 abfd
, section
, address
, message
);
1487 /* This is called when a reloc is being generated attached to a symbol
1488 that is not being output. */
1491 unattached_reloc (struct bfd_link_info
*info ATTRIBUTE_UNUSED
,
1497 einfo (_("%X%C: reloc refers to symbol `%T' which is not being output\n"),
1498 abfd
, section
, address
, name
);
1502 /* This is called if link_info.notice_all is set, or when a symbol in
1503 link_info.notice_hash is found. Symbols are put in notice_hash
1504 using the -y option. */
1507 notice (struct bfd_link_info
*info
,
1515 if (command_line
.cref
|| nocrossref_list
!= NULL
)
1516 return handle_asneeded_cref (abfd
, value
);
1520 if (! info
->notice_all
1521 || (info
->notice_hash
!= NULL
1522 && bfd_hash_lookup (info
->notice_hash
, name
, FALSE
, FALSE
) != NULL
))
1524 if (bfd_is_und_section (section
))
1525 einfo ("%B: reference to %s\n", abfd
, name
);
1527 einfo ("%B: definition of %s\n", abfd
, name
);
1530 if (command_line
.cref
|| nocrossref_list
!= NULL
)
1531 add_cref (name
, abfd
, section
, value
);