aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf64-alpha.c3
-rw-r--r--ld/testsuite/ChangeLog5
-rw-r--r--ld/testsuite/ld-alpha/alpha.exp11
-rw-r--r--ld/testsuite/ld-alpha/emptygot.nm5
-rw-r--r--ld/testsuite/ld-alpha/emptygot.s7
6 files changed, 32 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 4d0f3e0..ce76b34 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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
diff --git a/bfd/elf64-alpha.c b/bfd/elf64-alpha.c
index 2b15a81..33b27ac 100644
--- a/bfd/elf64-alpha.c
+++ b/bfd/elf64-alpha.c
@@ -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)
{
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index a9687a9..2c16bda0 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -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
diff --git a/ld/testsuite/ld-alpha/alpha.exp b/ld/testsuite/ld-alpha/alpha.exp
index dce2f45..ed95d88 100644
--- a/ld/testsuite/ld-alpha/alpha.exp
+++ b/ld/testsuite/ld-alpha/alpha.exp
@@ -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
index 0000000..db3a03d
--- /dev/null
+++ b/ld/testsuite/ld-alpha/emptygot.nm
@@ -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
index 0000000..ca6887c
--- /dev/null
+++ b/ld/testsuite/ld-alpha/emptygot.s
@@ -0,0 +1,7 @@
+ .text
+ .globl _start
+_start:
+ lda $0, foo($29) !gprel
+
+ .section .sbss
+foo: .quad 0