diff options
author | Jeff Law <law@redhat.com> | 1994-04-07 18:12:25 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1994-04-07 18:12:25 +0000 |
commit | 99a6c7613c5c91c5c9b7738b85cc118116afaf65 (patch) | |
tree | 41fee94298f15d470c252a130f4d8e96ca4183a3 | |
parent | 0b503989f524eabb6edf5090f4d2cdb40d12900d (diff) | |
download | gdb-99a6c7613c5c91c5c9b7738b85cc118116afaf65.zip gdb-99a6c7613c5c91c5c9b7738b85cc118116afaf65.tar.gz gdb-99a6c7613c5c91c5c9b7738b85cc118116afaf65.tar.bz2 |
* elfcode.h (elf_set_section_contents): Support calling the backend
function elf_backend_begin_write_processing when just beginning to
write an object file.
* libelf.h (elf_backend_begin_write_processing): Declare.
* elf{32,64}-target.h (elf_backend_begin_write_processing): Provide
a default definition.
(elf{32,64}_bed): Add elf_backend_begin_write_processing.
* elf32-hppa.h (elf_hppa_tc_symbol): Delete extern declaration.
(elf_hppa_tc_make_sections): Likewise.
* elf32-hppa.c (symext_chain_built): Delete.
(symext_chain_size): Renamed from symextn_contents_real_size.
(elf32_hppa_backend_{begin,final}_write_processing): New functions.
(add_entry_to_symext_chain): New function.
(hppa_elf_set_section_contents): Ignore writes to the symbol extension
section until it's been rebuilt internally.
(hppa_elf_get_section_contents): Symbol extension section is no
longer special.
(elf_backend_{begin,final}_write_processing): Define.
(elf_hppa_tc_make_sections): Simplify now that much code has
migrated into elf32_hppa_backend_{being,final}_write_processing.
-rw-r--r-- | bfd/ChangeLog | 27 | ||||
-rw-r--r-- | bfd/elf32-target.h | 4 | ||||
-rw-r--r-- | bfd/elf64-target.h | 5 | ||||
-rw-r--r-- | bfd/elfcode.h | 10 | ||||
-rw-r--r-- | bfd/libelf.h | 4 |
5 files changed, 50 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index f2f946d..085fc84 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,30 @@ +Thu Apr 7 11:10:51 1994 Jeffrey A. Law (law@snake.cs.utah.edu) + + * elfcode.h (elf_set_section_contents): Support calling the backend + function elf_backend_begin_write_processing when just beginning to + write an object file. + + * libelf.h (elf_backend_begin_write_processing): Declare. + + * elf{32,64}-target.h (elf_backend_begin_write_processing): Provide + a default definition. + (elf{32,64}_bed): Add elf_backend_begin_write_processing. + + * elf32-hppa.h (elf_hppa_tc_symbol): Delete extern declaration. + (elf_hppa_tc_make_sections): Likewise. + + * elf32-hppa.c (symext_chain_built): Delete. + (symext_chain_size): Renamed from symextn_contents_real_size. + (elf32_hppa_backend_{begin,final}_write_processing): New functions. + (add_entry_to_symext_chain): New function. + (hppa_elf_set_section_contents): Ignore writes to the symbol extension + section until it's been rebuilt internally. + (hppa_elf_get_section_contents): Symbol extension section is no + longer special. + (elf_backend_{begin,final}_write_processing): Define. + (elf_hppa_tc_make_sections): Simplify now that much code has + migrated into elf32_hppa_backend_{being,final}_write_processing. + Wed Apr 6 17:24:14 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) Add new target vectors to read the dynamic symbols and dynamic diff --git a/bfd/elf32-target.h b/bfd/elf32-target.h index f5a1fae..dc0ccf6 100644 --- a/bfd/elf32-target.h +++ b/bfd/elf32-target.h @@ -91,6 +91,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef elf_backend_section_from_bfd_section #define elf_backend_section_from_bfd_section 0 #endif +#ifndef elf_backend_begin_write_processing +#define elf_backend_begin_write_processing 0 +#endif #ifndef elf_backend_final_write_processing #define elf_backend_final_write_processing 0 #endif @@ -119,6 +122,7 @@ static CONST struct elf_backend_data elf32_bed = elf_backend_section_from_shdr, elf_backend_fake_sections, elf_backend_section_from_bfd_section, + elf_backend_begin_write_processing, elf_backend_final_write_processing, elf_backend_ecoff_debug_swap }; diff --git a/bfd/elf64-target.h b/bfd/elf64-target.h index e32f114..3194073 100644 --- a/bfd/elf64-target.h +++ b/bfd/elf64-target.h @@ -94,6 +94,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef elf_backend_section_from_bfd_section #define elf_backend_section_from_bfd_section 0 #endif +#ifndef elf_backend_begin_write_processing +#define elf_backend_begin_write_processing 0 +#endif #ifndef elf_backend_final_write_processing #define elf_backend_final_write_processing 0 #endif @@ -122,6 +125,8 @@ static CONST struct elf_backend_data elf64_bed = elf_backend_section_from_shdr, elf_backend_fake_sections, elf_backend_section_from_bfd_section, + elf_backend_begin_write_processing, + elf_backend_final_write_processing, elf_backend_ecoff_debug_swap }; diff --git a/bfd/elfcode.h b/bfd/elfcode.h index 8a54d4b..5fd4299 100644 --- a/bfd/elfcode.h +++ b/bfd/elfcode.h @@ -2374,6 +2374,10 @@ NAME(bfd_elf,write_object_contents) (abfd) if (abfd->output_has_begun == false) { + /* Do any elf backend specific processing first. */ + if (bed->elf_backend_begin_write_processing) + (*bed->elf_backend_begin_write_processing) (abfd); + if (prep_headers (abfd) == false) return false; if (elf_compute_section_file_positions (abfd) == false) @@ -3233,6 +3237,12 @@ elf_set_section_contents (abfd, section, location, offset, count) if (abfd->output_has_begun == false) /* set by bfd.c handler? */ { + struct elf_backend_data *bed = get_elf_backend_data (abfd); + + /* Do any elf backend specific processing first. */ + if (bed->elf_backend_begin_write_processing) + (*bed->elf_backend_begin_write_processing) (abfd); + /* do setup calculations (FIXME) */ if (prep_headers (abfd) == false) return false; diff --git a/bfd/libelf.h b/bfd/libelf.h index 9eb93ec..ce22cc1 100644 --- a/bfd/libelf.h +++ b/bfd/libelf.h @@ -149,6 +149,10 @@ struct elf_backend_data boolean (*elf_backend_section_from_bfd_section) PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *, int *retval)); + /* A function to do any beginning processing needed for the ELF file + before building the ELF headers and computing file positions. */ + void (*elf_backend_begin_write_processing) PARAMS ((bfd *)); + /* A function to do any final processing needed for the ELF file before writing it out. */ void (*elf_backend_final_write_processing) PARAMS ((bfd *)); |