/* Main program of GNU linker.
- Copyright (C) 1991-2018 Free Software Foundation, Inc.
+ Copyright (C) 1991-2020 Free Software Foundation, Inc.
Written by Steve Chamberlain steve@cygnus.com
This file is part of the GNU Binutils.
#include "libiberty.h"
#include "progress.h"
#include "bfdlink.h"
+#include "ctf-api.h"
#include "filenames.h"
#include "ld.h"
int g_switch_value = 8;
/* Nonzero means print names of input files as processed. */
-bfd_boolean trace_files;
+unsigned int trace_files;
/* Nonzero means report actions taken by the linker, and describe the linker script in use. */
bfd_boolean verbose;
einfo,
info_msg,
minfo,
- ldlang_override_segment_assignment
+ ldlang_override_segment_assignment,
+ ldlang_ctf_apply_strsym,
+ ldlang_write_ctf_late
};
static bfd_assert_handler_type default_bfd_assert_handler;
config.make_executable = TRUE;
config.magic_demand_paged = TRUE;
config.text_read_only = TRUE;
+ config.print_map_discarded = TRUE;
link_info.disable_target_specific_optimizations = -1;
command_line.warn_mismatch = TRUE;
if (saved_script_handle == NULL
&& command_line.default_script != NULL)
{
- ldfile_open_command_file (command_line.default_script);
+ ldfile_open_script_file (command_line.default_script);
parser_input = input_script;
yyparse ();
}
einfo (_("%F%P: no input files\n"));
}
- if (trace_files)
+ if (verbose)
info_msg (_("%P: mode %s\n"), emulation);
ldemul_after_parse ();
config.map_filename);
}
}
+ link_info.has_map_file = TRUE;
}
lang_process ();
want to ignore for relocatable output?) */
if (!config.make_executable && !force_make_executable)
{
- if (trace_files)
+ if (verbose)
einfo (_("%P: link errors found, deleting executable `%s'\n"),
output_filename);
input->local_sym_name = abfd->filename;
input->the_bfd = abfd;
- parent = abfd->my_archive->usrdata;
+ parent = bfd_usrdata (abfd->my_archive);
if (parent != NULL && !parent->flags.reload)
- parent->next = (lang_statement_union_type *) input;
+ parent->next = input;
/* Save the original data for trace files/tries below, as plugins
(if enabled) may possibly alter it to point to a replacement
{
/* Don't claim new IR symbols after all IR symbols have
been claimed. */
- if (trace_files || verbose)
+ if (verbose)
info_msg ("%pI: no new IR symbols to claimi\n",
&orig_input);
input->flags.claimed = 0;
minfo ("(%s)\n", name);
}
- if (trace_files || verbose)
+ if (verbose
+ || trace_files > 1
+ || (trace_files && bfd_is_thin_archive (orig_input.the_bfd->my_archive)))
info_msg ("%pI\n", &orig_input);
return TRUE;
}
if (overflow_cutoff_limit == -1)
return;
- einfo ("%X%P: %H:", abfd, section, address);
+ einfo ("%X%H:", abfd, section, address);
if (overflow_cutoff_limit >= 0
&& overflow_cutoff_limit-- == 0)
asection *section,
bfd_vma address)
{
- einfo (_("%X%P: %H: dangerous relocation: %s\n"),
+ einfo (_("%X%H: dangerous relocation: %s\n"),
abfd, section, address, message);
}
asection *section,
bfd_vma address)
{
- einfo (_("%X%P: %H: reloc refers to symbol `%pT' which is not being output\n"),
+ einfo (_("%X%H: reloc refers to symbol `%pT' which is not being output\n"),
abfd, section, address, name);
}