* som.h (som_exec_data): New field "version_id".

* som.c (som_object_setup): Record the version_id if it
        exists.
        (som_prep_headers): Do not initialize version_id here.
        (som_finish_writing): Initialize version_id here.
This commit is contained in:
Jeff Law 2001-10-05 21:55:12 +00:00
parent e24d7c123d
commit 1761749581
3 changed files with 23 additions and 4 deletions

View file

@ -1,4 +1,12 @@
2001-10-05 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> 2001-10-05 Jeff Law <law@redhat.com>
* som.h (som_exec_data): New field "version_id".
* som.c (som_object_setup): Record the version_id if it
exists.
(som_prep_headers): Do not initialize version_id here.
(som_finish_writing): Initialize version_id here.
2000-10-05 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
* elf32-mips.c (elf_mips_howto_table): Fix some relocation howtos * elf32-mips.c (elf_mips_howto_table): Fix some relocation howtos
according to the MIPS/SGI ELF64 ABI Draft. according to the MIPS/SGI ELF64 ABI Draft.

View file

@ -1814,6 +1814,8 @@ som_object_setup (abfd, file_hdrp, aux_hdrp, current_offset)
obj_som_exec_data (abfd)->exec_flags = aux_hdrp->exec_flags; obj_som_exec_data (abfd)->exec_flags = aux_hdrp->exec_flags;
} }
obj_som_exec_data (abfd)->version_id = file_hdrp->version_id;
bfd_default_set_arch_mach (abfd, bfd_arch_hppa, pa10); bfd_default_set_arch_mach (abfd, bfd_arch_hppa, pa10);
bfd_get_symcount (abfd) = file_hdrp->symbol_total; bfd_get_symcount (abfd) = file_hdrp->symbol_total;
@ -2320,9 +2322,6 @@ som_prep_headers (abfd)
else else
file_hdr->a_magic = RELOC_MAGIC; file_hdr->a_magic = RELOC_MAGIC;
/* Only new format SOM is supported. */
file_hdr->version_id = NEW_VERSION_ID;
/* These fields are optional, and embedding timestamps is not always /* These fields are optional, and embedding timestamps is not always
a wise thing to do, it makes comparing objects during a multi-stage a wise thing to do, it makes comparing objects during a multi-stage
bootstrap difficult. */ bootstrap difficult. */
@ -3688,6 +3687,14 @@ som_finish_writing (abfd)
unsigned int total_reloc_size; unsigned int total_reloc_size;
bfd_size_type amt; bfd_size_type amt;
/* We must set up the version identifier here as objcopy/strip copy
private BFD data too late for us to handle this in som_begin_writing. */
if (obj_som_exec_data (abfd)
&& obj_som_exec_data (abfd)->version_id)
obj_som_file_hdr (abfd)->version_id = obj_som_exec_data (abfd)->version_id;
else
obj_som_file_hdr (abfd)->version_id = NEW_VERSION_ID;
/* Next is the symbol table. These are fixed length records. /* Next is the symbol table. These are fixed length records.
Count the number of symbols to determine how much room is needed Count the number of symbols to determine how much room is needed

View file

@ -94,6 +94,10 @@ struct som_exec_data
null pointer dereferencing is allowed and the like. */ null pointer dereferencing is allowed and the like. */
long exec_flags; long exec_flags;
/* We must preserve the version identifier too. Some versions
of the HP linker do not grok NEW_VERSION_ID for reasons unknown. */
unsigned int version_id;
/* Add more stuff here as needed. Good examples of information /* Add more stuff here as needed. Good examples of information
we might want to pass would be presumed_dp, entry_* and maybe we might want to pass would be presumed_dp, entry_* and maybe
others from the file header. */ others from the file header. */