This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[COMMITTED PATCH] *-*-nacl* layout: Drop requirement that some section have SEC_HAS_CONTENTS set.
- From: Roland McGrath <mcgrathr at google dot com>
- To: "binutils at sourceware dot org" <binutils at sourceware dot org>
- Date: Fri, 1 Nov 2013 14:53:23 -0700
- Subject: [COMMITTED PATCH] *-*-nacl* layout: Drop requirement that some section have SEC_HAS_CONTENTS set.
- Authentication-results: sourceware.org; auth=none
This check was useless for the imaginary case it was trying to handle, and
it broke a real case because an unfinished .note.gnu.build-id section does
not have SEC_HAS_CONTENTS set for some reason (despite its not being
destined to produce SHT_NOBITS).
Committed to trunk and 2.24 branch.
bfd/
2013-11-01 Roland McGrath <mcgrathr@google.com>
* elf-nacl.c (segment_eligible_for_headers): Drop requirement that
some section have SEC_HAS_CONTENTS set. It's not set for
.note.gnu.build-id, and a segment of only read-only SHT_NOBITS
sections is implausible and not really supportable anyway.
--- a/bfd/elf-nacl.c
+++ b/bfd/elf-nacl.c
@@ -44,14 +44,13 @@ segment_executable (struct elf_segment_map *seg)
}
/* Determine if this segment is eligible to receive the file and program
- headers. It must be read-only, non-executable, and have contents.
+ headers. It must be read-only and non-executable.
Its first section must start far enough past the page boundary to
allow space for the headers. */
static bfd_boolean
segment_eligible_for_headers (struct elf_segment_map *seg,
bfd_vma minpagesize, bfd_vma sizeof_headers)
{
- bfd_boolean any_contents = FALSE;
unsigned int i;
if (seg->count == 0 || seg->sections[0]->lma % minpagesize < sizeof_headers)
return FALSE;
@@ -59,10 +58,8 @@ segment_eligible_for_headers (struct elf_segment_map *seg,
{
if ((seg->sections[i]->flags & (SEC_CODE|SEC_READONLY)) != SEC_READONLY)
return FALSE;
- if (seg->sections[i]->flags & SEC_HAS_CONTENTS)
- any_contents = TRUE;
}
- return any_contents;
+ return TRUE;
}