diff options
-rw-r--r-- | bfd/ChangeLog | 18 | ||||
-rw-r--r-- | bfd/som.c | 22 |
2 files changed, 35 insertions, 5 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 993c78d..49b5ed9 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,21 @@ +Mon Aug 7 14:51:08 1995 Jeff Law (law@snake.cs.utah.edu) + + * som.c (som_decode_symclass): Handle absolute symbols by checking + the SOM type (since they will rarely if ever be in the absolute + section). + +Wed Aug 6 09:12:50 1995 Doug Evans <dje@canuck.cygnus.com> + + * archures.c (bfd_mach_sparc, bfd_mach_sparc64): Define. + * bfd-in2.h: Regenerated. + * cpu-sparc.c (sparc_arch_info): Renamed from arch_info_struct. + (sparc64_arch_info): New static variable. + (bfd_sparc_arch): Link in sparc64_arch_info. + * elf64-sparc.c (sparc64_elf_xxx): Renamed from elf64_xxx. + (sparc64_elf_object_p): New static function. + (elf_backend_object_p): Define. + * config/sparc64-elf.mt (SELECT_VECS): Add bfd_elf32_sparc_vec. + Sat Aug 5 00:04:08 1995 Jeff Law (law@snake.cs.utah.edu) * som (som_get_reloc_upper_bound): Return -1 on error. Compute @@ -1523,7 +1523,12 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff) bfd_set_error (bfd_error_no_memory); return NULL; } - *final_types[0] = R_FSEL; + if (field == e_fsel) + *final_types[0] = R_FSEL; + else if (field == e_rsel) + *final_types[0] = R_RSEL; + else if (field == e_lsel) + *final_types[0] = R_LSEL; *final_types[1] = R_COMP2; *final_types[2] = R_COMP2; *final_types[3] = R_COMP1; @@ -1576,7 +1581,12 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff) bfd_set_error (bfd_error_no_memory); return NULL; } - *final_types[1] = R_FSEL; + if (field == e_fsel) + *final_types[0] = R_FSEL; + else if (field == e_rsel) + *final_types[0] = R_RSEL; + else if (field == e_lsel) + *final_types[0] = R_LSEL; *final_types[1] = R_COMP2; *final_types[2] = R_COMP2; *final_types[3] = R_COMP1; @@ -4605,8 +4615,8 @@ som_get_reloc_upper_bound (abfd, asect) if (asect->flags & SEC_RELOC) { if (! som_slurp_reloc_table (abfd, asect, NULL, true)) - return false; - return (asect->reloc_count + 1) * sizeof (arelent); + return -1; + return (asect->reloc_count + 1) * sizeof (arelent *); } /* There are no relocations. */ return 0; @@ -4998,7 +5008,9 @@ som_decode_symclass (symbol) if (!(symbol->flags & (BSF_GLOBAL|BSF_LOCAL))) return '?'; - if (bfd_is_abs_section (symbol->section)) + if (bfd_is_abs_section (symbol->section) + || (som_symbol_data (symbol) != NULL + && som_symbol_data (symbol)->som_type == SYMBOL_TYPE_ABSOLUTE)) c = 'a'; else if (symbol->section) c = som_section_type (symbol->section->name); |