From: Ian Lance Taylor Date: Tue, 6 Sep 1994 20:40:37 +0000 (+0000) Subject: Minor tweaks to make COFF code support both new and old style linker. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6ceff8e7d2bcd87fc647a9cc8c37b51f56865eac;p=binutils-gdb.git Minor tweaks to make COFF code support both new and old style linker. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index fc4a4f7b0bc..c3e16fdd6a1 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -31,7 +31,8 @@ Tue Sep 6 14:51:11 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) 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. @@ -48,7 +49,8 @@ Tue Sep 6 14:51:11 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) 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 diff --git a/bfd/coffcode.h b/bfd/coffcode.h index f1729dda1d6..4c3850d7134 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -1741,11 +1741,6 @@ coff_write_object_contents (abfd) */ 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) @@ -1757,8 +1752,6 @@ coff_write_object_contents (abfd) 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; @@ -1866,6 +1859,18 @@ coff_write_object_contents (abfd) 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);