diff options
author | Catherine Moore <clm@redhat.com> | 2000-02-24 13:41:02 +0000 |
---|---|---|
committer | Catherine Moore <clm@redhat.com> | 2000-02-24 13:41:02 +0000 |
commit | 950725a87f001d46f9c2a6b230b0e44d4ce0daf5 (patch) | |
tree | 4b6e9f18a12974e761375da304ce3fcd287b65db /bfd/som.c | |
parent | 930080dda03bc8a9d5e526beb89e2e004e2efd1d (diff) | |
download | gdb-950725a87f001d46f9c2a6b230b0e44d4ce0daf5.tar.gz |
* 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.
Diffstat (limited to 'bfd/som.c')
-rw-r--r-- | bfd/som.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/bfd/som.c b/bfd/som.c index 6f2b6c3abd6..492ac2307fa 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; |