is positive, since it always is. Remove use of pad, which is
always zero. Check obj_raw_syment_count, not bfd_get_symcount,
for the number of symbols, but only write them out if
- bfd_get_symcount is non-zero.
+ bfd_get_symcount is non-zero. Don't check obj_raw_syment_count
+ until after coff_write_symbols is called.
(coff_slurp_symbol_table): Use obj_raw_syment_count, not
bfd_get_symcount for the number of symbols. Don't set
obj_conv_table_size.
and obj_conv_table_size here.
(coff_count_linenumbers): Reindent. If bfd_get_symcount is zero,
add up the line numbers from the sections.
- (coff_write_symbols): Don't set bfd_get_symcount.
+ (coff_write_symbols): Set obj_raw_syment_count, not
+ bfd_get_symcount.
(coff_pointerize_aux): Don't pointerize a nonpositive x_endndx
field.
(coff_get_normalized_symtab): Use obj_raw_syment_count, not
*/
internal_f.f_timdat = 0;
- if (obj_raw_syment_count (abfd) != 0)
- internal_f.f_symptr = sym_base;
- else
- internal_f.f_symptr = 0;
-
internal_f.f_flags = 0;
if (abfd->flags & EXEC_P)
internal_f.f_flags |= F_RELFLG;
if (!haslinno)
internal_f.f_flags |= F_LNNO;
- if (obj_raw_syment_count (abfd) == 0)
- internal_f.f_flags |= F_LSYMS;
if (abfd->flags & EXEC_P)
internal_f.f_flags |= F_EXEC;
if (! coff_write_relocs (abfd))
return false;
}
+
+ /* If bfd_get_symcount (abfd) != 0, then we are not using the COFF
+ backend linker, and obj_raw_syment_count is not valid until after
+ coff_write_symbols is called. */
+ if (obj_raw_syment_count (abfd) != 0)
+ internal_f.f_symptr = sym_base;
+ else
+ {
+ internal_f.f_symptr = 0;
+ internal_f.f_flags |= F_LSYMS;
+ }
+
if (text_sec)
{
internal_a.tsize = bfd_get_section_size_before_reloc (text_sec);