aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1999-01-29 01:07:32 +0000
committerIan Lance Taylor <ian@airs.com>1999-01-29 01:07:32 +0000
commita96acce3108f11454ecfe610d61ffb1fa93b2730 (patch)
tree8cf4a0b5df9b7d252793273341b933c48602c6c1
parent401be973ebbd42f82e879c58cd3a486674043f91 (diff)
downloadgdb-a96acce3108f11454ecfe610d61ffb1fa93b2730.zip
gdb-a96acce3108f11454ecfe610d61ffb1fa93b2730.tar.gz
gdb-a96acce3108f11454ecfe610d61ffb1fa93b2730.tar.bz2
* binary.c (binary_set_section_contents): Don't return early for a
non-loadable section, in case the first section is non-loadable. Don't set the low lma for a SEC_NEVER_LOAD section. From Maciej W. Rozycki <macro@ds2.pg.gda.pl>.
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/binary.c21
2 files changed, 18 insertions, 10 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index ecbcbac..40b7b92 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+Thu Jan 28 20:05:22 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * binary.c (binary_set_section_contents): Don't return early for a
+ non-loadable section, in case the first section is non-loadable.
+ Don't set the low lma for a SEC_NEVER_LOAD section. From Maciej
+ W. Rozycki <macro@ds2.pg.gda.pl>.
+
1999-01-28 Nick Clifton <nickc@cygnus.com>
* elf32-fr30.c (fr30_reloc_map): Add R_FR30_GNU_VTINHERIT and
diff --git a/bfd/binary.c b/bfd/binary.c
index f71ada1..819d531 100644
--- a/bfd/binary.c
+++ b/bfd/binary.c
@@ -1,5 +1,5 @@
/* BFD back-end for binary objects.
- Copyright 1994, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
+ Copyright 1994, 95, 96, 97, 98, 1999 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>
This file is part of BFD, the Binary File Descriptor library.
@@ -255,14 +255,6 @@ binary_set_section_contents (abfd, sec, data, offset, size)
file_ptr offset;
bfd_size_type size;
{
- /* We don't want to output anything for a section that is neither
- loaded nor allocated. The contents of such a section are not
- meaningful in the binary format. */
- if ((sec->flags & (SEC_LOAD | SEC_ALLOC)) == 0)
- return true;
- if ((sec->flags & SEC_NEVER_LOAD) != 0)
- return true;
-
if (! abfd->output_has_begun)
{
boolean found_low;
@@ -275,7 +267,8 @@ binary_set_section_contents (abfd, sec, data, offset, size)
found_low = false;
low = 0;
for (s = abfd->sections; s != NULL; s = s->next)
- if (((s->flags & (SEC_HAS_CONTENTS | SEC_LOAD | SEC_ALLOC))
+ if (((s->flags
+ & (SEC_HAS_CONTENTS | SEC_LOAD | SEC_ALLOC | SEC_NEVER_LOAD))
== (SEC_HAS_CONTENTS | SEC_LOAD | SEC_ALLOC))
&& (! found_low || s->lma < low))
{
@@ -303,6 +296,14 @@ binary_set_section_contents (abfd, sec, data, offset, size)
abfd->output_has_begun = true;
}
+ /* We don't want to output anything for a section that is neither
+ loaded nor allocated. The contents of such a section are not
+ meaningful in the binary format. */
+ if ((sec->flags & (SEC_LOAD | SEC_ALLOC)) == 0)
+ return true;
+ if ((sec->flags & SEC_NEVER_LOAD) != 0)
+ return true;
+
return _bfd_generic_set_section_contents (abfd, sec, data, offset, size);
}