output_section_statement_newfunc,
sizeof (struct out_section_hash_entry),
61))
- einfo (_("%P%F: can not create hash table: %E\n"));
+ einfo (_("%F%P: can not create hash table: %E\n"));
}
static void
if (strcmp (n->name, name) == 0)
{
if (create)
- einfo (_("%P:%S: warning: redeclaration of memory region `%s'\n"),
+ einfo (_("%P:%pS: warning: redeclaration of memory region `%s'\n"),
NULL, name);
return r;
}
if (!create && strcmp (name, DEFAULT_MEMORY_REGION))
- einfo (_("%P:%S: warning: memory region `%s' not declared\n"),
+ einfo (_("%P:%pS: warning: memory region `%s' not declared\n"),
NULL, name);
new_region = (lang_memory_region_type *)
the default memory region. */
if (strcmp (region_name, DEFAULT_MEMORY_REGION) == 0
|| strcmp (alias, DEFAULT_MEMORY_REGION) == 0)
- einfo (_("%F%P:%S: error: alias for default memory region\n"), NULL);
+ einfo (_("%F%P:%pS: error: alias for default memory region\n"), NULL);
/* Look for the target region and check if the alias is not already
in use. */
if (region == NULL && strcmp (n->name, region_name) == 0)
region = r;
if (strcmp (n->name, alias) == 0)
- einfo (_("%F%P:%S: error: redefinition of memory region "
+ einfo (_("%F%P:%pS: error: redefinition of memory region "
"alias `%s'\n"),
NULL, alias);
}
/* Check if the target region exists. */
if (region == NULL)
- einfo (_("%F%P:%S: error: memory region `%s' "
+ einfo (_("%F%P:%pS: error: memory region `%s' "
"for alias `%s' does not exist\n"),
NULL, region_name, alias);
if (entry == NULL)
{
if (create)
- einfo (_("%P%F: failed creating section `%s': %E\n"), name);
+ einfo (_("%F%P: failed creating section `%s': %E\n"), name);
return NULL;
}
name));
if (entry == NULL)
{
- einfo (_("%P%F: failed creating section `%s': %E\n"), name);
+ einfo (_("%F%P: failed creating section `%s': %E\n"), name);
return NULL;
}
entry->root = last_ent->root;
}
if (m->ref != NULL)
- minfo ("%B ", m->ref);
- minfo ("(%T)\n", m->name);
+ minfo ("%pB ", m->ref);
+ minfo ("(%pT)\n", m->name);
}
}
init_os (lang_output_section_statement_type *s, flagword flags)
{
if (strcmp (s->name, DISCARD_SECTION_NAME) == 0)
- einfo (_("%P%F: Illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
+ einfo (_("%F%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
if (s->constraint != SPECIAL)
s->bfd_section = bfd_get_section_by_name (link_info.output_bfd, s->name);
s->name, flags);
if (s->bfd_section == NULL)
{
- einfo (_("%P%F: output format %s cannot represent section"
+ einfo (_("%F%P: output format %s cannot represent section"
" called %s: %E\n"),
link_info.output_bfd->xvec->name, s->name);
}
{
char **p;
- einfo (_("%B: file not recognized: %E\n"), entry->the_bfd);
- einfo (_("%B: matching formats:"), entry->the_bfd);
+ einfo (_("%P: %pB: file not recognized: %E;"
+ " matching formats:"), entry->the_bfd);
for (p = matching; *p != NULL; p++)
einfo (" %s", *p);
einfo ("%F\n");
}
else if (err != bfd_error_file_not_recognized
|| place == NULL)
- einfo (_("%F%B: file not recognized: %E\n"), entry->the_bfd);
+ einfo (_("%F%P: %pB: file not recognized: %E\n"), entry->the_bfd);
bfd_close (entry->the_bfd);
entry->the_bfd = NULL;
if (!entry->flags.reload)
ldlang_add_file (entry);
if (trace_files || verbose)
- info_msg ("%I\n", entry);
+ info_msg ("%pI\n", entry);
break;
case bfd_archive:
if (!bfd_check_format (member, bfd_object))
{
- einfo (_("%F%B: member %B in archive is not an object\n"),
+ einfo (_("%F%P: %pB: member %pB in archive is not an object\n"),
entry->the_bfd, member);
loaded = FALSE;
}
substitute BFD for us. */
if (!bfd_link_add_symbols (subsbfd, &link_info))
{
- einfo (_("%F%B: error adding symbols: %E\n"), member);
+ einfo (_("%F%P: %pB: error adding symbols: %E\n"), member);
loaded = FALSE;
}
}
if (bfd_link_add_symbols (entry->the_bfd, &link_info))
entry->flags.loaded = TRUE;
else
- einfo (_("%F%B: error adding symbols: %E\n"), entry->the_bfd);
+ einfo (_("%F%P: %pB: error adding symbols: %E\n"), entry->the_bfd);
return entry->flags.loaded;
}
if (link_info.output_bfd == NULL)
{
if (bfd_get_error () == bfd_error_invalid_target)
- einfo (_("%P%F: target %s not found\n"), output_target);
+ einfo (_("%F%P: target %s not found\n"), output_target);
- einfo (_("%P%F: cannot open output file %s: %E\n"), name);
+ einfo (_("%F%P: cannot open output file %s: %E\n"), name);
}
delete_output_file_on_failure = TRUE;
if (!bfd_set_format (link_info.output_bfd, bfd_object))
- einfo (_("%P%F:%s: can not make object file: %E\n"), name);
+ einfo (_("%F%P: %s: can not make object file: %E\n"), name);
if (!bfd_set_arch_mach (link_info.output_bfd,
ldfile_output_architecture,
ldfile_output_machine))
- einfo (_("%P%F:%s: can not set architecture: %E\n"), name);
+ einfo (_("%F%P: %s: can not set architecture: %E\n"), name);
link_info.hash = bfd_link_hash_table_create (link_info.output_bfd);
if (link_info.hash == NULL)
- einfo (_("%P%F: can not create hash table: %E\n"));
+ einfo (_("%F%P: can not create hash table: %E\n"));
bfd_set_gp_size (link_info.output_bfd, g_switch_value);
}
h = bfd_link_hash_lookup (link_info.hash, name, TRUE, FALSE, TRUE);
if (h == NULL)
- einfo (_("%P%F: bfd_link_hash_lookup failed: %E\n"));
+ einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
if (h->type == bfd_link_hash_new)
{
h->type = bfd_link_hash_undefined;
if (h == NULL
|| (h->type != bfd_link_hash_defined
&& h->type != bfd_link_hash_defweak))
- einfo(_("%P%X: required symbol `%s' not defined\n"), ptr->name);
+ einfo(_("%X%P: required symbol `%s' not defined\n"), ptr->name);
}
}
}
/* Called from ldwrite to clear out asection.map_head and
- asection.map_tail for use as link_orders in ldwrite.
- FIXME: Except for sh64elf.em which starts creating link_orders in
- its after_allocation routine so needs to call it early. */
+ asection.map_tail for use as link_orders in ldwrite. */
void
lang_clear_os_map (void)
+ hash_entry->u.def.section->output_offset
+ hash_entry->u.def.section->output_section->vma));
- minfo (" %T\n", hash_entry->root.string);
+ minfo (" %pT\n", hash_entry->root.string);
}
return TRUE;
size = 0;
}
- minfo ("0x%V %W %B\n", addr, size, i->owner);
+ minfo ("0x%V %W %pB\n", addr, size, i->owner);
if (size != i->rawsize && i->rawsize != 0)
{
}
pad->padding_statement.output_offset = dot - output_section->vma;
pad->padding_statement.size = alignment_needed;
- output_section->size = TO_SIZE (dot + TO_ADDR (alignment_needed)
- - output_section->vma);
+ if (!(output_section->flags & SEC_FIXED_SIZE))
+ output_section->size = TO_SIZE (dot + TO_ADDR (alignment_needed)
+ - output_section->vma);
}
/* Work out how much this section will move the dot point. */
/* Mark how big the output section must be to contain this now. */
dot += TO_ADDR (i->size);
- o->size = TO_SIZE (dot - o->vma);
+ if (!(o->flags & SEC_FIXED_SIZE))
+ o->size = TO_SIZE (dot - o->vma);
}
return dot;
{
if (tree != NULL)
{
- einfo (_("%X%P: address 0x%v of %B section `%s'"
+ einfo (_("%X%P: address 0x%v of %pB section `%s'"
" is not within region `%s'\n"),
region->current,
os->bfd_section->owner,
{
region->had_full_message = TRUE;
- einfo (_("%X%P: %B section `%s' will not fit in region `%s'\n"),
+ einfo (_("%X%P: %pB section `%s' will not fit in region `%s'\n"),
os->bfd_section->owner,
os->bfd_section->name,
region->name_list.name);
dot += expld.result.section->vma;
}
else if (expld.phase != lang_mark_phase_enum)
- einfo (_("%F%S: non constant or forward reference"
+ einfo (_("%F%P:%pS: non constant or forward reference"
" address expression for section %s\n"),
os->addr_tree, os->name);
}
|| os->children.head->header.next != NULL
|| (os->children.head->header.type
!= lang_input_section_enum))
- einfo (_("%P%X: Internal error on COFF shared library"
+ einfo (_("%X%P: internal error on COFF shared library"
" section %s\n"), os->name);
input = os->children.head->input_section.section;
bfd_set_section_vma (os->bfd_section->owner,
os->bfd_section,
bfd_section_vma (input->owner, input));
- os->bfd_section->size = input->size;
+ if (!(os->bfd_section->flags & SEC_FIXED_SIZE))
+ os->bfd_section->size = input->size;
break;
}
overridden by the using the --no-check-sections
switch. */
if (command_line.check_section_addresses)
- einfo (_("%P%F: error: no memory region specified"
+ einfo (_("%F%P: error: no memory region specified"
" for loadable section `%s'\n"),
bfd_get_section_name (link_info.output_bfd,
os->bfd_section));
+ os->block_value - 1)
& - (bfd_vma) os->block_value);
- os->bfd_section->size = TO_SIZE (after - os->bfd_section->vma);
+ if (!(os->bfd_section->flags & SEC_FIXED_SIZE))
+ os->bfd_section->size = TO_SIZE (after
+ - os->bfd_section->vma);
}
/* Set section lma. */
if (size < TO_SIZE ((unsigned) 1))
size = TO_SIZE ((unsigned) 1);
dot += TO_ADDR (size);
- output_section_statement->bfd_section->size
- = TO_SIZE (dot - output_section_statement->bfd_section->vma);
+ if (!(output_section_statement->bfd_section->flags
+ & SEC_FIXED_SIZE))
+ output_section_statement->bfd_section->size
+ = TO_SIZE (dot - output_section_statement->bfd_section->vma);
}
break;
output_section_statement->bfd_section;
size = bfd_get_reloc_size (s->reloc_statement.howto);
dot += TO_ADDR (size);
- output_section_statement->bfd_section->size
- = TO_SIZE (dot - output_section_statement->bfd_section->vma);
+ if (!(output_section_statement->bfd_section->flags
+ & SEC_FIXED_SIZE))
+ output_section_statement->bfd_section->size
+ = TO_SIZE (dot - output_section_statement->bfd_section->vma);
}
break;
bfd_boolean again;
if (!bfd_relax_section (i->owner, i, &link_info, &again))
- einfo (_("%P%F: can't relax section: %E\n"));
+ einfo (_("%F%P: can't relax section: %E\n"));
if (again)
*relax = TRUE;
}
--gc-sections. */
if (link_info.gc_sections && bfd_link_relocatable (&link_info)
&& !(entry_from_cmdline || undef_from_cmdline))
- einfo (_("%P%F: gc-sections requires either an entry or "
+ einfo (_("%F%P: gc-sections requires either an entry or "
"an undefined symbol\n"));
if (entry_symbol.name == NULL)
h->u.def.section->output_section)
+ h->u.def.section->output_offset);
if (!bfd_set_start_address (link_info.output_bfd, val))
- einfo (_("%P%F:%s: can't set start address\n"), entry_symbol.name);
+ einfo (_("%F%P: %s: can't set start address\n"), entry_symbol.name);
}
else
{
if (*send == '\0')
{
if (!bfd_set_start_address (link_info.output_bfd, val))
- einfo (_("%P%F: can't set start address\n"));
+ einfo (_("%F%P: can't set start address\n"));
}
else
{
if (!(bfd_set_start_address
(link_info.output_bfd,
bfd_get_section_vma (link_info.output_bfd, ts))))
- einfo (_("%P%F: can't set start address\n"));
+ einfo (_("%F%P: can't set start address\n"));
}
else
{
!= bfd_get_flavour (link_info.output_bfd)))
&& (bfd_get_file_flags (input_bfd) & HAS_RELOC) != 0)
{
- einfo (_("%P%F: Relocatable linking with relocations from"
- " format %s (%B) to format %s (%B) is not supported\n"),
+ einfo (_("%F%P: relocatable linking with relocations from"
+ " format %s (%pB) to format %s (%pB) is not supported\n"),
bfd_get_target (input_bfd), input_bfd,
bfd_get_target (link_info.output_bfd), link_info.output_bfd);
/* einfo with %F exits. */
if (compatible == NULL)
{
if (command_line.warn_mismatch)
- einfo (_("%P%X: %s architecture of input file `%B'"
+ einfo (_("%X%P: %s architecture of input file `%pB'"
" is incompatible with %s output\n"),
bfd_printable_name (input_bfd), input_bfd,
bfd_printable_name (link_info.output_bfd));
if (!bfd_merge_private_bfd_data (input_bfd, &link_info))
{
if (command_line.warn_mismatch)
- einfo (_("%P%X: failed to merge target specific data"
- " of file %B\n"), input_bfd);
+ einfo (_("%X%P: failed to merge target specific data"
+ " of file %pB\n"), input_bfd);
}
if (!command_line.warn_mismatch)
bfd_set_error_handler (pfn);
section = h->u.c.p->section;
if (!bfd_define_common_symbol (link_info.output_bfd, &link_info, h))
- einfo (_("%P%F: Could not define common symbol `%T': %E\n"),
+ einfo (_("%F%P: could not define common symbol `%pT': %E\n"),
h->root.string);
if (config.map_file != NULL)
++len;
}
- minfo ("%B\n", section->owner);
+ minfo ("%pB\n", section->owner);
}
return TRUE;
int constraint = 0;
if (config.orphan_handling == orphan_handling_error)
- einfo (_("%X%P: error: unplaced orphan section `%A' from `%B'.\n"),
+ einfo (_("%X%P: error: unplaced orphan section `%pA' from `%pB'\n"),
s, s->owner);
if (config.unique_orphan_sections || unique_section_p (s, NULL))
}
if (config.orphan_handling == orphan_handling_warn)
- einfo (_("%P: warning: orphan section `%A' from `%B' being "
- "placed in section `%s'.\n"),
+ einfo (_("%P: warning: orphan section `%pA' from `%pB' being "
+ "placed in section `%s'\n"),
s, s->owner, os->name);
}
}
break;
default:
- einfo (_("%P%F: invalid character %c (%d) in flags\n"),
+ einfo (_("%F%P: invalid character %c (%d) in flags\n"),
*flags, *flags);
break;
}
os->align_lma_with_input = align_with_input == ALIGN_WITH_INPUT;
if (os->align_lma_with_input && align != NULL)
- einfo (_("%F%P:%S: error: align with input and explicit align specified\n"),
+ einfo (_("%F%P:%pS: error: align with input and explicit align specified\n"),
NULL);
os->subsection_alignment =
{
/* Save the last size for possible use by bfd_relax_section. */
o->rawsize = o->size;
- o->size = 0;
+ if (!(o->flags & SEC_FIXED_SIZE))
+ o->size = 0;
}
}
lang_place_undefineds ();
if (!bfd_section_already_linked_table_init ())
- einfo (_("%P%F: Failed to create hash table\n"));
+ einfo (_("%F%P: can not create hash table: %E\n"));
/* Create a bfd for each input file. */
current_target = default_target;
files = file_chain;
inputfiles = input_file_chain;
if (plugin_call_all_symbols_read ())
- einfo (_("%P%F: %s: plugin reported error after all symbols read\n"),
+ einfo (_("%F%P: %s: plugin reported error after all symbols read\n"),
plugin_error_plugin ());
/* Open any newly added files, updating the file chains. */
open_input_bfds (*added.tail, OPEN_BFD_NORMAL);
{
if (first_file->filename != NULL)
{
- einfo (_("%P%F: multiple STARTUP files\n"));
+ einfo (_("%F%P: multiple STARTUP files\n"));
}
first_file->filename = name;
first_file->local_sym_name = name;
*region = lang_memory_region_lookup (memspec, FALSE);
if (have_lma && lma_memspec != 0)
- einfo (_("%X%P:%S: section has both a load address and a load region\n"),
+ einfo (_("%X%P:%pS: section has both a load address and a load region\n"),
NULL);
}
&& (*pp)->type == 1
&& !((*pp)->filehdr || (*pp)->phdrs))
{
- einfo (_("%X%P:%S: PHDRS and FILEHDR are not supported"
+ einfo (_("%X%P:%pS: PHDRS and FILEHDR are not supported"
" when prior PT_LOAD headers lack them\n"), NULL);
hdrs = FALSE;
}