From 204ba9e37eb78aebc70aec88d2a55b7893166f79 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 13 Sep 1994 20:25:46 +0000 Subject: [PATCH] * aoutx.h (NAME(aout,final_link)): Don't assume that all the input files are a.out. --- bfd/ChangeLog | 5 +++++ bfd/aoutx.h | 39 +++++++++++++++++++++++---------------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 4b9a159b90..84d7fa192a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +Tue Sep 13 16:23:57 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) + + * aoutx.h (NAME(aout,final_link)): Don't assume that all the input + files are a.out. + Tue Sep 13 11:09:39 1994 J.T. Conklin (jtc@rtl.cygnus.com) * configure.host (sparc-*-netbsd): use sparcnbsd. diff --git a/bfd/aoutx.h b/bfd/aoutx.h index 1c716e270f..c800bb717a 100644 --- a/bfd/aoutx.h +++ b/bfd/aoutx.h @@ -698,6 +698,10 @@ NAME(aout,machine_type) (arch, machine, unknown) if (machine == 0) arch_flags = M_29K; break; + case bfd_arch_arm: + if (machine == 0) arch_flags = M_ARM; + break; + case bfd_arch_mips: switch (machine) { case 0: @@ -1767,7 +1771,7 @@ add_to_stringtab (abfd, tab, str, copy) bfd_size_type index; /* An index of 0 always means the empty string. */ - if (*str == '\0') + if (str == 0 || *str == '\0') return 0; /* Don't hash if BFD_TRADITIONAL_FORMAT is set, because SunOS dbx @@ -3307,23 +3311,26 @@ NAME(aout,final_link) (abfd, info, callback) } } - sz = bfd_section_size (sub, obj_textsec (sub)); - if (sz > max_contents_size) - max_contents_size = sz; - sz = bfd_section_size (sub, obj_datasec (sub)); - if (sz > max_contents_size) - max_contents_size = sz; + if (bfd_get_flavour (sub) == bfd_target_aout_flavour) + { + sz = bfd_section_size (sub, obj_textsec (sub)); + if (sz > max_contents_size) + max_contents_size = sz; + sz = bfd_section_size (sub, obj_datasec (sub)); + if (sz > max_contents_size) + max_contents_size = sz; - sz = exec_hdr (sub)->a_trsize; - if (sz > max_relocs_size) - max_relocs_size = sz; - sz = exec_hdr (sub)->a_drsize; - if (sz > max_relocs_size) - max_relocs_size = sz; + sz = exec_hdr (sub)->a_trsize; + if (sz > max_relocs_size) + max_relocs_size = sz; + sz = exec_hdr (sub)->a_drsize; + if (sz > max_relocs_size) + max_relocs_size = sz; - sz = obj_aout_external_sym_count (sub); - if (sz > max_sym_count) - max_sym_count = sz; + sz = obj_aout_external_sym_count (sub); + if (sz > max_sym_count) + max_sym_count = sz; + } } if (info->relocateable)