binutils-gdb/ld/testsuite/ld-aarch64/relasz.d
Will Newton c955de363b bfd/elfnn-aarch64.c: Fix calculation of DT_RELASZ
The current code subtracts the size of the output section containing
relplt from RELASZ. In some cases this will be the same output
section as the dynamic relocs causing a value of zero to be output.
Calculating the size from input sections seems to make more sense.

bfd/ChangeLog:

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.

ld/testsuite/ChangeLog:

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-25 09:01:50 +00:00

19 lines
825 B
Makefile

#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