diff options
author | Nick Clifton <nickc@redhat.com> | 1999-05-28 13:24:33 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 1999-05-28 13:24:33 +0000 |
commit | e6c51ed4dfc35cad59f92b1e364511385858401a (patch) | |
tree | 3240776f91249a08e427368fddd74ebe0f11e004 | |
parent | 229cf42b3388829e250cfab927fbb116e6d946ae (diff) | |
download | gdb-e6c51ed4dfc35cad59f92b1e364511385858401a.zip gdb-e6c51ed4dfc35cad59f92b1e364511385858401a.tar.gz gdb-e6c51ed4dfc35cad59f92b1e364511385858401a.tar.bz2 |
Initialise EI_OSABI and EI_ABIVERSION fields of e_ident array.
Add ability for backends to process program and section headers after they
have been created.
-rw-r--r-- | bfd/ChangeLog | 14 | ||||
-rw-r--r-- | bfd/elf-bfd.h | 6 | ||||
-rw-r--r-- | bfd/elf.c | 7 | ||||
-rw-r--r-- | bfd/elfxx-target.h | 4 |
4 files changed, 31 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 09dac05..621fa91 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,17 @@ +1999-05-28 Nick Clifton <nickc@cygnus.com> + + * elf-bfd.h (struct elf_backend_data): Add new field: + elf_backend_post_process_headers. + + * elfxx-target.h (elf_backend_post_process_headers): Define to + NULL if not already defined. + (elfNN_bed): Initialise elf_backend_post_process_headers field. + + * elf.c (prep_headers): Set the EI_OSABI and EI_ABIVERSION fields + to zero. + (_bfd_elf_compute_section_file_positions): Call + elf_backend_post_process_headers if defined. + 1999-05-28 Ian Lance Taylor <ian@zembu.com> * configure.in: Check whether getuid and getgid exist. diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index 82ffe2a..218780d 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -515,6 +515,12 @@ struct elf_backend_data PARAMS ((bfd *abfd, struct bfd_link_info *info, asection *o, const Elf_Internal_Rela *relocs)); + /* This function, if defined, is called after the ELF headers have + been created. This allows for things like the OS and ABI versions + to be changed. */ + void (*elf_backend_post_process_headers) + PARAMS ((bfd *, struct bfd_link_info *)); + /* The swapping table to use when dealing with ECOFF information. Used for the MIPS ELF .mdebug section. */ const struct ecoff_debug_swap *elf_backend_ecoff_debug_swap; @@ -2011,6 +2011,10 @@ _bfd_elf_compute_section_file_positions (abfd, link_info) if (! prep_headers (abfd)) return false; + /* Post process the headers if necessary. */ + if (bed->elf_backend_post_process_headers) + (*bed->elf_backend_post_process_headers) (abfd, link_info); + failed = false; bfd_map_over_sections (abfd, elf_fake_sections, &failed); if (failed) @@ -3042,6 +3046,9 @@ prep_headers (abfd) bfd_big_endian (abfd) ? ELFDATA2MSB : ELFDATA2LSB; i_ehdrp->e_ident[EI_VERSION] = bed->s->ev_current; + i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_SYSV; + i_ehdrp->e_ident[EI_ABIVERSION] = 0; + for (count = EI_PAD; count < EI_NIDENT; count++) i_ehdrp->e_ident[count] = 0; diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h index 9acabd1..dc116ef 100644 --- a/bfd/elfxx-target.h +++ b/bfd/elfxx-target.h @@ -290,6 +290,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef elf_backend_plt_header_size #define elf_backend_plt_header_size 0 #endif +#ifndef elf_backend_post_process_headers +#define elf_backend_post_process_headers NULL +#endif #ifndef ELF_MACHINE_ALT1 #define ELF_MACHINE_ALT1 0 @@ -344,6 +347,7 @@ static CONST struct elf_backend_data elfNN_bed = elf_backend_modify_segment_map, elf_backend_gc_mark_hook, elf_backend_gc_sweep_hook, + elf_backend_post_process_headers, elf_backend_ecoff_debug_swap, ELF_MACHINE_ALT1, ELF_MACHINE_ALT2, |