aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2010-01-07 13:44:37 +0000
committerH.J. Lu <hjl.tools@gmail.com>2010-01-07 13:44:37 +0000
commit16583161e14cbe747e78da035790c48951884556 (patch)
treee1fbc701c4f2f9fde24733620bad0513cd286ac9
parent089b4803bf8f591e762c475dbabceb3c37d97ffc (diff)
downloadgdb-16583161e14cbe747e78da035790c48951884556.zip
gdb-16583161e14cbe747e78da035790c48951884556.tar.gz
gdb-16583161e14cbe747e78da035790c48951884556.tar.bz2
Always keep SHT_NOTE sections
bfd/ 2010-01-07 H.J. Lu <hongjiu.lu@intel.com> PR ld/11143 * elflink.c (elf_gc_sweep): Keep SHT_NOTE section. ld/testsuite/ 2010-01-07 H.J. Lu <hongjiu.lu@intel.com> PR ld/11143 * ld-gc/gc.exp: Run abi-note. * ld-gc/abi-note.d: New. * ld-gc/abi-note.s: Likewise.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elflink.c7
-rw-r--r--ld/testsuite/ChangeLog7
-rw-r--r--ld/testsuite/ld-gc/abi-note.d8
-rw-r--r--ld/testsuite/ld-gc/abi-note.s15
-rw-r--r--ld/testsuite/ld-gc/gc.exp3
6 files changed, 41 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 4d0db31..01950b4 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2010-01-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/11143
+ * elflink.c (elf_gc_sweep): Keep SHT_NOTE section.
+
2010-01-04 Daniel Gutson <dgutson@codesourcery.com>
* bfd.m4 (BFD_HAVE_SYS_PROCFS_TYPE): Define _STRUCTURE_PROC
diff --git a/bfd/elflink.c b/bfd/elflink.c
index bbdfe5e..284bff1 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -1,6 +1,6 @@
/* ELF linking support for BFD.
Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009
+ 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -11527,9 +11527,10 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info)
o->gc_mark = first->gc_mark;
}
else if ((o->flags & (SEC_DEBUGGING | SEC_LINKER_CREATED)) != 0
- || (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0)
+ || (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0
+ || elf_section_data (o)->this_hdr.sh_type == SHT_NOTE)
{
- /* Keep debug and special sections. */
+ /* Keep debug, special and SHT_NOTE sections. */
o->gc_mark = 1;
}
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 4a2a6da..3320c13 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2010-01-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/11143
+ * ld-gc/gc.exp: Run abi-note.
+
+ * ld-gc/abi-note.d: New.
+ * ld-gc/abi-note.s: Likewise.
For older changes see ChangeLog-2009
diff --git a/ld/testsuite/ld-gc/abi-note.d b/ld/testsuite/ld-gc/abi-note.d
new file mode 100644
index 0000000..e802fe5
--- /dev/null
+++ b/ld/testsuite/ld-gc/abi-note.d
@@ -0,0 +1,8 @@
+#name: --gc-sections with note section
+#ld: --gc-sections -e _start
+#readelf: -S --wide
+#target: *-*-linux*
+
+#...
+.* .note.ABI-tag[ ]+NOTE.*
+#...
diff --git a/ld/testsuite/ld-gc/abi-note.s b/ld/testsuite/ld-gc/abi-note.s
new file mode 100644
index 0000000..22536c0
--- /dev/null
+++ b/ld/testsuite/ld-gc/abi-note.s
@@ -0,0 +1,15 @@
+ .text
+ .global _start
+_start:
+ .long 1
+
+ .section ".note.ABI-tag", "a"
+ .p2align 2
+ .long 1f - 0f /* name length */
+ .long 3f - 2f /* data length */
+ .long 1 /* note type */
+0: .asciz "GNU" /* vendor name */
+1: .p2align 2
+2: .long 1
+ .long 2
+3: .p2align 2 /* pad out section */
diff --git a/ld/testsuite/ld-gc/gc.exp b/ld/testsuite/ld-gc/gc.exp
index c85d4f2..36df233 100644
--- a/ld/testsuite/ld-gc/gc.exp
+++ b/ld/testsuite/ld-gc/gc.exp
@@ -1,5 +1,5 @@
# Expect script for ld-gc tests
-# Copyright 2008, 2009
+# Copyright 2008, 2009, 2010
# Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
@@ -90,3 +90,4 @@ test_gc "Check --gc-section/-r/-e" "gcrel" $ld "-r --gc-sections -e main"
test_gc "Check --gc-section/-r/-u" "gcrel" $ld "-r --gc-sections -u used_func"
run_dump_test "noent"
+run_dump_test "abi-note"