diff options
author | David Edelsohn <dje.gcc@gmail.com> | 1995-03-07 07:34:21 +0000 |
---|---|---|
committer | David Edelsohn <dje.gcc@gmail.com> | 1995-03-07 07:34:21 +0000 |
commit | df168c35f94856d85b7995ad54796fdc57ab3dcc (patch) | |
tree | 5fd61ba2bfa4d3fdecffefe3817e47dc809fbd4e /bfd | |
parent | b939d1f43b4befbd6186ea2f83cffe92af2b35f3 (diff) | |
download | gdb-df168c35f94856d85b7995ad54796fdc57ab3dcc.zip gdb-df168c35f94856d85b7995ad54796fdc57ab3dcc.tar.gz gdb-df168c35f94856d85b7995ad54796fdc57ab3dcc.tar.bz2 |
* elfcode.h (elf_sort_hdrs): Keep SHT_NOBITS sections after
!SHT_NOBITS ones.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elfcode.h | 23 |
2 files changed, 25 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 541611d..fee1f17 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +Mon Mar 6 23:31:36 1995 Doug Evans <dje@chestnut.cygnus.com> + + * elfcode.h (elf_sort_hdrs): Keep SHT_NOBITS sections after + !SHT_NOBITS ones. + Mon Mar 6 09:53:08 1995 Jeff Law (law@snake.cs.utah.edu) * cpu-hppa.c (arch_info_struct): Support both PA1.0 and PA1.1 diff --git a/bfd/elfcode.h b/bfd/elfcode.h index 36e2243..72908ca 100644 --- a/bfd/elfcode.h +++ b/bfd/elfcode.h @@ -867,7 +867,9 @@ elf_object_p (abfd) /* Check that the ELF e_machine field matches what this particular BFD format expects. */ - if (ebd->elf_machine_code != i_ehdrp->e_machine) + if (ebd->elf_machine_code != i_ehdrp->e_machine + && (ebd->elf_machine_alt1 == 0 || i_ehdrp->e_machine != ebd->elf_machine_alt1) + && (ebd->elf_machine_alt2 == 0 || i_ehdrp->e_machine != ebd->elf_machine_alt2)) { const bfd_target * const *target_ptr; @@ -2265,8 +2267,21 @@ elf_sort_hdrs (arg1, arg2) return -1; else if (hdr1->sh_addr > hdr2->sh_addr) return 1; + if (hdr1->sh_size == 0) + { + if (hdr2->sh_size == 0) + { + /* Put !SHT_NOBITS sections before SHT_NOBITS ones. + The main loop in map_program_segments requires this. */ + return (hdr1->sh_type == SHT_NOBITS) - (hdr2->sh_type == SHT_NOBITS); + } + else + return -1; + } + else if (hdr2->sh_size == 0) + return 1; /* Put !SHT_NOBITS sections before SHT_NOBITS ones. - The main loop in map_program_segments assumes this. */ + The main loop in map_program_segments requires this. */ return (hdr1->sh_type == SHT_NOBITS) - (hdr2->sh_type == SHT_NOBITS); } else @@ -3764,7 +3779,9 @@ elf_core_file_p (abfd) /* Check that the ELF e_machine field matches what this particular BFD format expects. */ - if (ebd->elf_machine_code != i_ehdrp->e_machine) + if (ebd->elf_machine_code != i_ehdrp->e_machine + && (ebd->elf_machine_alt1 == 0 || i_ehdrp->e_machine != ebd->elf_machine_alt1) + && (ebd->elf_machine_alt2 == 0 || i_ehdrp->e_machine != ebd->elf_machine_alt2)) { const bfd_target * const *target_ptr; |