aboutsummaryrefslogtreecommitdiff
path: root/binutils
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 /binutils
parente17c9e56cb62a1791215b8a144ef864f77e4a34f (diff)
downloadgdb-18ae9cc1db45e2e7f6467b91d8abbc5eb45fbaa5.zip
gdb-18ae9cc1db45e2e7f6467b91d8abbc5eb45fbaa5.tar.gz
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 'binutils')
-rw-r--r--binutils/ChangeLog6
-rw-r--r--binutils/readelf.c9
-rw-r--r--binutils/testsuite/ChangeLog10
-rw-r--r--binutils/testsuite/binutils-all/exclude-1.s16
-rw-r--r--binutils/testsuite/binutils-all/exclude-1a.d9
-rw-r--r--binutils/testsuite/binutils-all/exclude-1b.d9
-rw-r--r--binutils/testsuite/binutils-all/objcopy.exp3
7 files changed, 58 insertions, 4 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 964e483..9c8d87c 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+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.
+
2010-05-07 Tristan Gingold <gingold@adacore.com>
* Makefile.in: Regenerate with automake 1.11.1.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 53699b2..bcb24c2 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -4152,8 +4152,9 @@ get_elf_section_flags (bfd_vma sh_flags)
/* 15 */ { STRING_COMMA_LEN ("VMS_VECTOR") },
/* 16 */ { STRING_COMMA_LEN ("VMS_ALLOC_64BIT") },
/* 17 */ { STRING_COMMA_LEN ("VMS_PROTECTED") },
- /* SPARC specific. */
+ /* Generic. */
/* 18 */ { STRING_COMMA_LEN ("EXCLUDE") },
+ /* SPARC specific. */
/* 19 */ { STRING_COMMA_LEN ("ORDERED") }
};
@@ -4185,6 +4186,7 @@ get_elf_section_flags (bfd_vma sh_flags)
case SHF_OS_NONCONFORMING: sindex = 7; break;
case SHF_GROUP: sindex = 8; break;
case SHF_TLS: sindex = 9; break;
+ case SHF_EXCLUDE: sindex = 18; break;
default:
sindex = -1;
@@ -4218,9 +4220,7 @@ get_elf_section_flags (bfd_vma sh_flags)
case EM_SPARC32PLUS:
case EM_SPARCV9:
case EM_SPARC:
- if (flag == SHF_EXCLUDE)
- sindex = 18;
- else if (flag == SHF_ORDERED)
+ if (flag == SHF_ORDERED)
sindex = 19;
break;
default:
@@ -4263,6 +4263,7 @@ get_elf_section_flags (bfd_vma sh_flags)
case SHF_OS_NONCONFORMING: *p = 'O'; break;
case SHF_GROUP: *p = 'G'; break;
case SHF_TLS: *p = 'T'; break;
+ case SHF_EXCLUDE: *p = 'E'; break;
default:
if ((elf_header.e_machine == EM_X86_64
diff --git a/binutils/testsuite/ChangeLog b/binutils/testsuite/ChangeLog
index 3b08cda..1f4d19b 100644
--- a/binutils/testsuite/ChangeLog
+++ b/binutils/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+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.
+
2010-04-30 H.J. Lu <hongjiu.lu@intel.com>
* binutils-all/dlltool.exp: Add a missing `"'.
diff --git a/binutils/testsuite/binutils-all/exclude-1.s b/binutils/testsuite/binutils-all/exclude-1.s
new file mode 100644
index 0000000..475088f
--- /dev/null
+++ b/binutils/testsuite/binutils-all/exclude-1.s
@@ -0,0 +1,16 @@
+ .text
+ .type start,"function"
+ .global start
+start:
+ .type _start,"function"
+ .global _start
+_start:
+ .type __start,"function"
+ .global __start
+__start:
+ .type main,"function"
+ .global main
+main:
+ .long 0
+ .section .foo1,"e", %progbits
+ .byte 0,0,0,0
diff --git a/binutils/testsuite/binutils-all/exclude-1a.d b/binutils/testsuite/binutils-all/exclude-1a.d
new file mode 100644
index 0000000..3a311b5
--- /dev/null
+++ b/binutils/testsuite/binutils-all/exclude-1a.d
@@ -0,0 +1,9 @@
+#PROG: objcopy
+#source: exclude-1.s
+#objcopy:
+#readelf: -S --wide
+#name: objcopy on sections with SHF_EXCLUDE
+
+#...
+[ ]*\[.*\][ ]+\.foo1[ ]+PROGBITS.*[ ]+E[ ]+.*
+#pass
diff --git a/binutils/testsuite/binutils-all/exclude-1b.d b/binutils/testsuite/binutils-all/exclude-1b.d
new file mode 100644
index 0000000..ac387fb
--- /dev/null
+++ b/binutils/testsuite/binutils-all/exclude-1b.d
@@ -0,0 +1,9 @@
+#PROG: strip
+#source: exclude-1.s
+#strip: --strip-unneeded
+#readelf: -S --wide
+#name: strip --strip-unneeded on sections with SHF_EXCLUDE
+
+#...
+[ ]*\[.*\][ ]+\.foo1[ ]+PROGBITS.*[ ]+E[ ]+.*
+#pass
diff --git a/binutils/testsuite/binutils-all/objcopy.exp b/binutils/testsuite/binutils-all/objcopy.exp
index 5c7de8c..94a31aa 100644
--- a/binutils/testsuite/binutils-all/objcopy.exp
+++ b/binutils/testsuite/binutils-all/objcopy.exp
@@ -880,5 +880,8 @@ if [is_elf_format] {
run_dump_test "add-section"
run_dump_test "add-empty-section"
+
+ run_dump_test "exclude-1a"
+ run_dump_test "exclude-1b"
}
run_dump_test "localize-hidden-2"