diff options
-rw-r--r-- | bfd/ChangeLog | 8 | ||||
-rw-r--r-- | bfd/som.c | 11 | ||||
-rw-r--r-- | bfd/syms.c | 4 |
3 files changed, 22 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3144a72..4bdee1c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,13 @@ 2021-04-29 Nick Clifton <nickc@redhat.com> + PR 27793 + * som.c (som_slurp_symbol_table): Assign symbols without any scope + to the undefined section. + (som_decode_symclass): Check for a missing symbol section. + * syms.c (bfd_decode_symclass): Likewise. + +2021-04-29 Nick Clifton <nickc@redhat.com> + PR 27792 * som.c (som_slurp_string_table): Place a terminating NUL byte at the end of the table. @@ -4740,7 +4740,7 @@ som_slurp_symbol_table (bfd *abfd) goto error_return; } sym->symbol.value = bfd_getb32 (bufp->symbol_value); - sym->symbol.section = 0; + sym->symbol.section = NULL; sym->symbol.flags = 0; switch (symbol_type) @@ -4800,6 +4800,10 @@ som_slurp_symbol_table (bfd *abfd) sym->symbol.section = bfd_section_from_som_symbol (abfd, bufp); sym->symbol.value -= sym->symbol.section->vma; break; + + default: + sym->symbol.section = bfd_und_section_ptr; + break; } /* Check for a weak symbol. */ @@ -5848,6 +5852,11 @@ som_decode_symclass (asymbol *symbol) { char c; + /* If the symbol did not have a scope specified, + then it will not have associated section. */ + if (symbol == NULL || symbol->section == NULL) + return '?'; + if (bfd_is_com_section (symbol->section)) return 'C'; if (bfd_is_und_section (symbol->section)) @@ -654,6 +654,10 @@ bfd_decode_symclass (asymbol *symbol) { char c; + /* Paranoia... */ + if (symbol == NULL || symbol->section == NULL) + return '?'; + if (symbol->section && bfd_is_com_section (symbol->section)) { if (symbol->section->flags & SEC_SMALL_DATA) |