/* Don't find the real header size if only marking sections;
The bfd function may cache incorrect data. */
if (expld.phase != lang_mark_phase_enum)
- hdr_size = bfd_sizeof_headers (link_info.output_bfd, &link_info);
+ hdr_size = (bfd_sizeof_headers (link_info.output_bfd, &link_info)
+ / bfd_octets_per_byte (link_info.output_bfd, NULL));
new_number (hdr_size);
}
break;
tree->name.name,
TRUE, FALSE, TRUE);
if (!h)
- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
+ {
+ if (expld.phase != lang_first_phase_enum)
+ einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
+ }
else if (h->type == bfd_link_hash_defined
|| h->type == bfd_link_hash_defweak)
{
bfd_link_hide_symbol (link_info.output_bfd,
&link_info, h);
- /* Copy the symbol type if this is an expression only
+ /* Copy the symbol type and set non_ir_ref_regular
+ on the source if this is an expression only
referencing a single symbol. (If the expression
contains ternary conditions, ignoring symbols on
false branches.) */
if (expld.assign_src != NULL
&& (expld.assign_src
!= (struct bfd_link_hash_entry *) -1))
- bfd_copy_link_hash_symbol_type (link_info.output_bfd,
- h, expld.assign_src);
+ {
+ bfd_copy_link_hash_symbol_type (link_info.output_bfd,
+ h, expld.assign_src);
+ expld.assign_src->non_ir_ref_regular = TRUE;
+ }
}
}
}