From ba20314ec2f75a571b7210bd65a98c313d917011 Mon Sep 17 00:00:00 2001 From: Catherine Moore Date: Thu, 24 Feb 2000 13:41:02 +0000 Subject: [PATCH] * som.c (som_misc_symbol_info): Add field secondary_def. (som_bfd_derive_misc_symbol_info): Initialize secondary_def. (som_build_and_write_symbol_table): Keep track of secondary_def field. (som_slurp_symbol_table): Set BSF_WEAK symbol flag if secondary_def field is set. (som_bfd_ar_write_symbol_stuff): Initialize secondary_def. --- bfd/ChangeLog | 13 +++++++++++++ bfd/som.c | 15 ++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3534c54..32b94ce 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,16 @@ +2000-02-24 Catherine Moore + + * som.c (som_misc_symbol_info): Add field + secondary_def. + (som_bfd_derive_misc_symbol_info): Initialize + secondary_def. + (som_build_and_write_symbol_table): Keep track + of secondary_def field. + (som_slurp_symbol_table): Set BSF_WEAK symbol flag + if secondary_def field is set. + (som_bfd_ar_write_symbol_stuff): Initialize + secondary_def. + 2000-02-23 Stephane Carrez * dwarf2.c (read_address): Read 16-bits addresses. diff --git a/bfd/som.c b/bfd/som.c index 6f2b6c3..492ac23 100644 --- a/bfd/som.c +++ b/bfd/som.c @@ -148,6 +148,7 @@ struct som_misc_symbol_info unsigned int symbol_info; unsigned int symbol_value; unsigned int priv_level; + unsigned int secondary_def; }; /* Forward declarations */ @@ -4052,6 +4053,13 @@ som_bfd_derive_misc_symbol_info (abfd, sym, info) /* Set the symbol's value. */ info->symbol_value = sym->value + sym->section->vma; + + /* The secondary_def field is for weak symbols. */ + if (sym->flags & BSF_WEAK) + info->secondary_def = true; + else + info->secondary_def = false; + } /* Build and write, in one big chunk, the entire symbol table for @@ -4095,6 +4103,7 @@ som_build_and_write_symbol_table (abfd) som_symtab[i].symbol_info = info.symbol_info; som_symtab[i].xleast = 3; som_symtab[i].symbol_value = info.symbol_value | info.priv_level; + som_symtab[i].secondary_def = info.secondary_def; } /* Everything is ready, seek to the right location and @@ -4382,6 +4391,10 @@ som_slurp_symbol_table (abfd) break; } + /* Check for a weak symbol. */ + if (bufp->secondary_def) + sym->symbol.flags |= BSF_WEAK; + /* Mark section symbols and symbols used by the debugger. Note $START$ is a magic code symbol, NOT a section symbol. */ if (sym->symbol.name[0] == '$' @@ -5924,7 +5937,7 @@ som_bfd_ar_write_symbol_stuff (abfd, nsyms, string_size, lst, elength) /* Fill in the lst symbol record. */ curr_lst_sym->hidden = 0; - curr_lst_sym->secondary_def = 0; + curr_lst_sym->secondary_def = info.secondary_def; curr_lst_sym->symbol_type = info.symbol_type; curr_lst_sym->symbol_scope = info.symbol_scope; curr_lst_sym->check_level = 0; -- 2.7.4