* 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>.
This commit is contained in:
Ian Lance Taylor 1999-01-29 01:07:32 +00:00
parent 401be973eb
commit a96acce310
2 changed files with 18 additions and 10 deletions

View File

@ -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

View File

@ -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);
}