aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorCatherine Moore <clm@redhat.com>2000-02-24 13:41:02 +0000
committerCatherine Moore <clm@redhat.com>2000-02-24 13:41:02 +0000
commitba20314ec2f75a571b7210bd65a98c313d917011 (patch)
treeb68b43af84a82d4f5653d27982a1836b7e1f8f11 /bfd
parentf5795b0849504dbcaa446d89721b9a3fb4731ff3 (diff)
downloadgdb-ba20314ec2f75a571b7210bd65a98c313d917011.zip
gdb-ba20314ec2f75a571b7210bd65a98c313d917011.tar.gz
gdb-ba20314ec2f75a571b7210bd65a98c313d917011.tar.bz2
* 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')
-rw-r--r--bfd/ChangeLog13
-rw-r--r--bfd/som.c15
2 files changed, 27 insertions, 1 deletions
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 <clm@cygnus.com>
+
+ * 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 <stcarrez@worldnet.fr>
* 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;