aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Edelsohn <dje.gcc@gmail.com>1995-03-07 07:34:21 +0000
committerDavid Edelsohn <dje.gcc@gmail.com>1995-03-07 07:34:21 +0000
commitdf168c35f94856d85b7995ad54796fdc57ab3dcc (patch)
tree5fd61ba2bfa4d3fdecffefe3817e47dc809fbd4e
parentb939d1f43b4befbd6186ea2f83cffe92af2b35f3 (diff)
downloadgdb-df168c35f94856d85b7995ad54796fdc57ab3dcc.zip
gdb-df168c35f94856d85b7995ad54796fdc57ab3dcc.tar.gz
gdb-df168c35f94856d85b7995ad54796fdc57ab3dcc.tar.bz2
* elfcode.h (elf_sort_hdrs): Keep SHT_NOBITS sections after
!SHT_NOBITS ones.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elfcode.h23
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;