Always keep SHT_NOTE sections
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 7 Jan 2010 13:44:37 +0000 (13:44 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 7 Jan 2010 13:44:37 +0000 (13:44 +0000)
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.

bfd/ChangeLog
bfd/elflink.c
ld/testsuite/ChangeLog
ld/testsuite/ld-gc/abi-note.d [new file with mode: 0644]
ld/testsuite/ld-gc/abi-note.s [new file with mode: 0644]
ld/testsuite/ld-gc/gc.exp

index 4d0db31..01950b4 100644 (file)
@@ -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
index bbdfe5e..284bff1 100644 (file)
@@ -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;
            }
 
index 4a2a6da..3320c13 100644 (file)
@@ -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
 \f
diff --git a/ld/testsuite/ld-gc/abi-note.d b/ld/testsuite/ld-gc/abi-note.d
new file mode 100644 (file)
index 0000000..e802fe5
--- /dev/null
@@ -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 (file)
index 0000000..22536c0
--- /dev/null
@@ -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 */
index c85d4f2..36df233 100644 (file)
@@ -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"