+2014-03-25 Will Newton <will.newton@linaro.org>
+
+ * elfnn-aarch64.c (elfNN_aarch64_finish_dynamic_sections):
+ Set value of DT_PLTRELSZ and DT_RELASZ based on the size
+ of input sections rather than output sections.
+
2014-03-20 Will Newton <will.newton@linaro.org>
PR ld/16715
break;
case DT_PLTRELSZ:
- s = htab->root.srelplt->output_section;
+ s = htab->root.srelplt;
dyn.d_un.d_val = s->size;
break;
about changing the DT_RELA entry. */
if (htab->root.srelplt != NULL)
{
- s = htab->root.srelplt->output_section;
+ s = htab->root.srelplt;
dyn.d_un.d_val -= s->size;
}
break;
+2014-03-25 Will Newton <will.newton@linaro.org>
+
+ * ld-aarch64/aarch64-elf.exp: Add relasz dump test.
+ * ld-aarch64/relasz.d: New file.
+ * ld-aarch64/relasz.s: Likewise.
+
2014-03-20 Richard Sandiford <rdsandiford@googlemail.com>
* ld-elf/merge.d: Remove MIPS XFAIL.
run_dump_test "ifunc-20"
run_dump_test "ifunc-21"
run_dump_test "ifunc-22"
+
+run_dump_test "relasz"
--- /dev/null
+#source: relasz.s
+#ld: -shared -Taarch64.ld
+#readelf: -d
+# Check that the RELASZ section has the correct size even if we are
+# using a non-default linker script that merges .rela.dyn and .rela.plt
+# in the output.
+
+Dynamic section at offset 0x[0-9a-f]+ contains 9 entries:
+ Tag Type Name/Value
+ 0x0000000000000004 \(HASH\) 0x[0-9a-f]+
+ 0x0000000000000005 \(STRTAB\) 0x[0-9a-f]+
+ 0x0000000000000006 \(SYMTAB\) 0x[0-9a-f]+
+ 0x000000000000000a \(STRSZ\) [0-9]+ \(bytes\)
+ 0x000000000000000b \(SYMENT\) [0-9]+ \(bytes\)
+ 0x0000000000000007 \(RELA\) 0x[0-9a-f]+
+ 0x0000000000000008 \(RELASZ\) 24 \(bytes\)
+ 0x0000000000000009 \(RELAENT\) 24 \(bytes\)
+ 0x0000000000000000 \(NULL\) 0x0
--- /dev/null
+ .text
+ .global func
+ .type func, %function
+func:
+ adrp x0, :got:foo
+ ldr x0, [x0, #:got_lo12:foo]
+ ldr w0, [x0]
+ ret
+ .size func, .-func