aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2010-05-18 03:31:07 +0000
committerH.J. Lu <hjl.tools@gmail.com>2010-05-18 03:31:07 +0000
commit18ae9cc1db45e2e7f6467b91d8abbc5eb45fbaa5 (patch)
tree8b15ae2b881a6f2a7301ecc8c24bd239f2261942 /bfd
parente17c9e56cb62a1791215b8a144ef864f77e4a34f (diff)
downloadfsf-binutils-gdb-18ae9cc1db45e2e7f6467b91d8abbc5eb45fbaa5.zip
fsf-binutils-gdb-18ae9cc1db45e2e7f6467b91d8abbc5eb45fbaa5.tar.gz
fsf-binutils-gdb-18ae9cc1db45e2e7f6467b91d8abbc5eb45fbaa5.tar.bz2
Implement generic SHF_EXCLUDE.
bfd/ 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. binutils/ 2010-05-18 H.J. Lu <hongjiu.lu@intel.com> PR gas/11600 * readelf.c (get_elf_section_flags): Treat SHF_EXCLUDE as a generic flag. binutils/testsuite/ 2010-05-18 H.J. Lu <hongjiu.lu@intel.com> PR gas/11600 * binutils-all/objcopy.exp: Run exclude-1a and exclude-1b for ELF targets. * binutils-all/exclude-1.s: New. * binutils-all/exclude-1a.d: Likewise. * binutils-all/exclude-1b.d: Likewise. gas/ 2010-05-18 H.J. Lu <hongjiu.lu@intel.com> PR gas/11600 * obj-elf.c (obj_elf_change_section): Handle SHF_EXCLUDE. (obj_elf_parse_section_letters): Likewise. (obj_elf_section_word): Likewise. * config/tc-ppc.c (ppc_section_letter): Removed. (ppc_section_word): Likewise. * config/tc-ppc.h (ppc_section_letter): Likewise. (ppc_section_word): Likewise. (md_elf_section_letter): Likewise. (md_elf_section_word): Likewise. * doc/as.texinfo: Document `e' and `#exclude'. gas/testsuite/ 2010-05-18 H.J. Lu <hongjiu.lu@intel.com> PR gas/11600 * gas/elf/elf.exp: Run section8. * gas/elf/section8.d: New. * gas/elf/section8.s: Likewise. include/elf/ 2010-05-18 H.J. Lu <hongjiu.lu@intel.com> PR gas/11600 * common.h (SHF_EXCLUDE): New. * i370.h (SHF_EXCLUDE): Removed. * or32.h (SHF_EXCLUDE): Likewise. * ppc.h (SHF_EXCLUDE): Likewise. * sparc.h (SHF_EXCLUDE): Likewise. ld/testsuite/ 2010-05-18 H.J. Lu <hongjiu.lu@intel.com> PR gas/11600 * ld-elf/exclude3.s: New. * ld-elf/exclude3a.d: Likewise. * ld-elf/exclude3b.d: Likewise. * ld-elf/exclude3c.d: Likewise.
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;