* elf64-alpha.c (elf64_alpha_size_dynamic_sections): Do not
authorRichard Henderson <rth@redhat.com>
Tue, 12 Apr 2011 23:23:02 +0000 (23:23 +0000)
committerRichard Henderson <rth@redhat.com>
Tue, 12 Apr 2011 23:23:02 +0000 (23:23 +0000)
        exclude empty .got sections.

bfd/ChangeLog
bfd/elf64-alpha.c
ld/testsuite/ChangeLog
ld/testsuite/ld-alpha/alpha.exp
ld/testsuite/ld-alpha/emptygot.nm [new file with mode: 0644]
ld/testsuite/ld-alpha/emptygot.s [new file with mode: 0644]

index 4d0f3e0daa3140529f74311656877a64ce55900a..ce76b34e81a0bb3cf55b30f7d9eede19cfe322e6 100644 (file)
@@ -1,3 +1,8 @@
+2011-04-12  Richard Henderson  <rth@redhat.com>
+
+       * elf64-alpha.c (elf64_alpha_size_dynamic_sections): Do not
+       exclude empty .got sections.
+
 2011-04-11  H.J. Lu  <hongjiu.lu@intel.com>
 
        * elf32-i386.c (elf_i386_reloc_type_lookup): Fix the out of bound
index 2b15a81c082a2c2c513845654757ac7f649cef1c..33b27ac6d3cbe6fc824e43d62972780895f274c0 100644 (file)
@@ -2927,7 +2927,8 @@ elf64_alpha_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
             linker does that before adjust_dynamic_symbol is called, and
             it is that function which decides whether anything needs to
             go into these sections.  */
-         s->flags |= SEC_EXCLUDE;
+         if (!CONST_STRNEQ (name, ".got"))
+           s->flags |= SEC_EXCLUDE;
        }
       else if ((s->flags & SEC_HAS_CONTENTS) != 0)
        {
index a9687a9a69a802752b5878f15461dc2e47ec1199..2c16bda0a8a62355b079cc6da4bd5a8da1578969 100644 (file)
@@ -1,3 +1,8 @@
+2011-04-12  Richard Henderson  <rth@redhat.com>
+
+       * ld-alpha/emptygot.s, ld-alpha/emptygot.nm: New test.
+       * ld-alpha/alpha.exp: Run it.
+
 2011-04-11  Mark Wielaard  <mjw@redhat.com>
 
        PR 10549
index dce2f450513211630b6a7ee91c3dad6bd934fe66..ed95d88ff7aeb3e023f3ecb77cd4f3f1b2e21454 100644 (file)
@@ -41,19 +41,24 @@ set alphatests {
      "" {align.s tlspic1.s tlspic2.s}
      {{readelf -WSsrl tlspic.rd} {objdump -drj.text tlspic.dd}
       {objdump -sj.got tlspic.sd} {objdump -sj.tdata tlspic.td}}
-      "libtlspic.so"}
+     "libtlspic.so"}
     {"Helper shared library" "-shared -melf64alpha"
      "" {tlslib.s} {} "libtlslib.so"}
     {"TLS -fpic and -fno-pic exec"
      "-melf64alpha tmpdir/libtlslib.so" "" {align.s tlsbinpic.s tlsbin.s}
      {{readelf -WSsrl tlsbin.rd} {objdump -drj.text tlsbin.dd}
       {objdump -sj.got tlsbin.sd} {objdump -sj.tdata tlsbin.td}}
-      "tlsbin"}
+     "tlsbin"}
     {"TLS -fpic and -fno-pic exec -relax"
      "-relax -melf64alpha tmpdir/libtlslib.so" "" {align.s tlsbinpic.s tlsbin.s}
      {{readelf -WSsrl tlsbinr.rd} {objdump -drj.text tlsbinr.dd}
       {objdump -sj.got tlsbinr.sd}}
-      "tlsbinr"}
+     "tlsbinr"}
+    {"empty got"
+     "-melf64alpha" ""
+     {emptygot.s}
+     {{nm "-n" emptygot.nm}}
+     "emptygot"}
 }
 
 # Not implemented yet
diff --git a/ld/testsuite/ld-alpha/emptygot.nm b/ld/testsuite/ld-alpha/emptygot.nm
new file mode 100644 (file)
index 0000000..db3a03d
--- /dev/null
@@ -0,0 +1,5 @@
+00000001200000b0 T _start
+00000001200100b8 A __bss_start
+00000001200100b8 A _edata
+00000001200100b8 s foo
+00000001200100c0 A _end
diff --git a/ld/testsuite/ld-alpha/emptygot.s b/ld/testsuite/ld-alpha/emptygot.s
new file mode 100644 (file)
index 0000000..ca6887c
--- /dev/null
@@ -0,0 +1,7 @@
+       .text
+       .globl  _start
+_start:
+       lda     $0, foo($29)    !gprel
+
+       .section        .sbss
+foo:   .quad   0