aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog10
-rw-r--r--bfd/elf.c4
-rw-r--r--bfd/elf32-i370.c3
-rw-r--r--bfd/elf32-ppc.c3
4 files changed, 14 insertions, 6 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index f5dc25e..8c3eb13 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,13 @@
+2010-05-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/11600
+ * elf.c (_bfd_elf_make_section_from_shdr): Handle SHF_EXCLUDE
+ (elf_fake_sections): Likewise.
+
+ * elf32-i370.c (i370_elf_section_from_shdr): Don't handle
+ SHF_EXCLUDE here.
+ * elf32-ppc.c (ppc_elf_fake_sections): Likewise.
+
2010-05-17 Tristan Gingold <gingold@adacore.com>
* vms-alpha.c: Include esgps.h and eidc.h.
diff --git a/bfd/elf.c b/bfd/elf.c
index a5a24c5..0fa75d2 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -876,6 +876,8 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
return FALSE;
if ((hdr->sh_flags & SHF_TLS) != 0)
flags |= SEC_THREAD_LOCAL;
+ if ((hdr->sh_flags & SHF_EXCLUDE) != 0)
+ flags |= SEC_EXCLUDE;
if ((flags & SEC_ALLOC) == 0)
{
@@ -2627,6 +2629,8 @@ elf_fake_sections (bfd *abfd, asection *asect, void *failedptrarg)
}
}
}
+ if ((asect->flags & (SEC_GROUP | SEC_EXCLUDE)) == SEC_EXCLUDE)
+ this_hdr->sh_flags |= SHF_EXCLUDE;
/* Check for processor-specific section types. */
sh_type = this_hdr->sh_type;
diff --git a/bfd/elf32-i370.c b/bfd/elf32-i370.c
index c419edd..ff0208e 100644
--- a/bfd/elf32-i370.c
+++ b/bfd/elf32-i370.c
@@ -375,9 +375,6 @@ i370_elf_section_from_shdr (bfd *abfd,
newsect = hdr->bfd_section;
flags = bfd_get_section_flags (abfd, newsect);
- if (hdr->sh_flags & SHF_EXCLUDE)
- flags |= SEC_EXCLUDE;
-
if (hdr->sh_type == SHT_ORDERED)
flags |= SEC_SORT_ENTRIES;
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index 28274c4..1580599 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -1994,9 +1994,6 @@ ppc_elf_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
Elf_Internal_Shdr *shdr,
asection *asect)
{
- if ((asect->flags & (SEC_GROUP | SEC_EXCLUDE)) == SEC_EXCLUDE)
- shdr->sh_flags |= SHF_EXCLUDE;
-
if ((asect->flags & SEC_SORT_ENTRIES) != 0)
shdr->sh_type = SHT_ORDERED;