Browse Source

Don't hardcode .got.plt into DATA_SEGMENT_RELRO_END evaluation

ld/

	PR ld/14215
	* ldexp.c (fold_name <SIZEOF, ALIGNOF>): Allow forward section
	references.
	* emulparams/elf32_x86_64.sh (SEPARATE_GOTPLT): Depend on size of
	.got.plt.
	* emulparams/elf32mb_linux.sh (SEPARATE_GOTPLT): Likewise.
	* emulparams/elf32tilegx.sh (SEPARATE_GOTPLT): Likewise.
	* emulparams/elf32tilepro.sh (SEPARATE_GOTPLT): Likewise.
	* emulparams/elf64tilegx.sh (SEPARATE_GOTPLT): Likewise.
	* emulparams/elf_i386.sh (SEPARATE_GOTPLT): Likewise.
	* emulparams/elf_k1om.sh (SEPARATE_GOTPLT): Likewise.
	* emulparams/elf_l1om.sh (SEPARATE_GOTPLT): Likewise.
	* emulparams/elf_x86_64.sh (SEPARATE_GOTPLT): Likewise.

ld/testsuite/

	PR ld/14215
	* ld-i386/i386.exp: Run pr14215.
	* ld-x86-64/x86-64.exp: Likewise.

	* ld-i386/pr14215.d: New file.
	* ld-i386/pr14215.s: Likewise.
	* ld-x86-64/pr14215.d: Likewise.
	* ld-x86-64/pr14215.s: Likewise.
cygwin-64bit-branch
H.J. Lu 14 years ago
parent
commit
17d6eea5d5
  1. 16
      ld/ChangeLog
  2. 2
      ld/emulparams/elf32_x86_64.sh
  3. 2
      ld/emulparams/elf32mb_linux.sh
  4. 2
      ld/emulparams/elf32tilegx.sh
  5. 2
      ld/emulparams/elf32tilepro.sh
  6. 2
      ld/emulparams/elf64tilegx.sh
  7. 2
      ld/emulparams/elf_i386.sh
  8. 2
      ld/emulparams/elf_k1om.sh
  9. 2
      ld/emulparams/elf_l1om.sh
  10. 2
      ld/emulparams/elf_x86_64.sh
  11. 4
      ld/ldexp.c
  12. 11
      ld/testsuite/ChangeLog
  13. 1
      ld/testsuite/ld-i386/i386.exp
  14. 9
      ld/testsuite/ld-i386/pr14215.d
  15. 4
      ld/testsuite/ld-i386/pr14215.s
  16. 9
      ld/testsuite/ld-x86-64/pr14215.d
  17. 4
      ld/testsuite/ld-x86-64/pr14215.s
  18. 1
      ld/testsuite/ld-x86-64/x86-64.exp

16
ld/ChangeLog

@ -1,3 +1,19 @@
2012-06-11 Alan Modra <amodra@gmail.com>
PR ld/14215
* ldexp.c (fold_name <SIZEOF, ALIGNOF>): Allow forward section
references.
* emulparams/elf32_x86_64.sh (SEPARATE_GOTPLT): Depend on size of
.got.plt.
* emulparams/elf32mb_linux.sh (SEPARATE_GOTPLT): Likewise.
* emulparams/elf32tilegx.sh (SEPARATE_GOTPLT): Likewise.
* emulparams/elf32tilepro.sh (SEPARATE_GOTPLT): Likewise.
* emulparams/elf64tilegx.sh (SEPARATE_GOTPLT): Likewise.
* emulparams/elf_i386.sh (SEPARATE_GOTPLT): Likewise.
* emulparams/elf_k1om.sh (SEPARATE_GOTPLT): Likewise.
* emulparams/elf_l1om.sh (SEPARATE_GOTPLT): Likewise.
* emulparams/elf_x86_64.sh (SEPARATE_GOTPLT): Likewise.
2012-06-07 Georg-Johann Lay <avr@gjlay.de>
PR 13697

2
ld/emulparams/elf32_x86_64.sh

@ -13,7 +13,7 @@ GENERATE_SHLIB_SCRIPT=yes
GENERATE_PIE_SCRIPT=yes
NO_SMALL_DATA=yes
LARGE_SECTIONS=yes
SEPARATE_GOTPLT=24
SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0"
IREL_IN_PLT=
if [ "x${host}" = "x${target}" ]; then

2
ld/emulparams/elf32mb_linux.sh

@ -13,5 +13,5 @@ TEMPLATE_NAME=elf32
GENERATE_SHLIB_SCRIPT=yes
GENERATE_PIE_SCRIPT=yes
NO_SMALL_DATA=yes
SEPARATE_GOTPLT=12
SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 12 ? 12 : 0"

2
ld/emulparams/elf32tilegx.sh

@ -16,7 +16,7 @@ GENERATE_SHLIB_SCRIPT=yes
GENERATE_COMBRELOC_SCRIPT=yes
GENERATE_PIE_SCRIPT=yes
NO_SMALL_DATA=yes
SEPARATE_GOTPLT=8
SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 8 ? 8 : 0"
# Look for 32 bit target libraries in /lib32, /usr/lib32 etc., first.
LIBPATH_SUFFIX=32
OTHER_SECTIONS="

2
ld/emulparams/elf32tilepro.sh

@ -17,7 +17,7 @@ GENERATE_SHLIB_SCRIPT=yes
GENERATE_COMBRELOC_SCRIPT=yes
GENERATE_PIE_SCRIPT=yes
NO_SMALL_DATA=yes
SEPARATE_GOTPLT=8
SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 8 ? 8 : 0"
OTHER_SECTIONS="
/* TILEPRO architecture interrupt vector areas */
.intrpt0 0xfc000000 : { KEEP(*(.intrpt0)) }

2
ld/emulparams/elf64tilegx.sh

@ -17,7 +17,7 @@ GENERATE_SHLIB_SCRIPT=yes
GENERATE_COMBRELOC_SCRIPT=yes
GENERATE_PIE_SCRIPT=yes
NO_SMALL_DATA=yes
SEPARATE_GOTPLT=16
SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 16 ? 16 : 0"
OTHER_SECTIONS="
/* TILE architecture interrupt vector areas */
.intrpt0 0xfffffffffc000000 : { KEEP(*(.intrpt0)) }

2
ld/emulparams/elf_i386.sh

@ -11,5 +11,5 @@ TEMPLATE_NAME=elf32
GENERATE_SHLIB_SCRIPT=yes
GENERATE_PIE_SCRIPT=yes
NO_SMALL_DATA=yes
SEPARATE_GOTPLT=12
SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 12 ? 12 : 0"
IREL_IN_PLT=

2
ld/emulparams/elf_k1om.sh

@ -14,7 +14,7 @@ GENERATE_SHLIB_SCRIPT=yes
GENERATE_PIE_SCRIPT=yes
NO_SMALL_DATA=yes
LARGE_SECTIONS=yes
SEPARATE_GOTPLT=24
SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0"
if [ "x${host}" = "x${target}" ]; then
case " $EMULATION_LIBPATH " in

2
ld/emulparams/elf_l1om.sh

@ -14,7 +14,7 @@ GENERATE_SHLIB_SCRIPT=yes
GENERATE_PIE_SCRIPT=yes
NO_SMALL_DATA=yes
LARGE_SECTIONS=yes
SEPARATE_GOTPLT=24
SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0"
if [ "x${host}" = "x${target}" ]; then
case " $EMULATION_LIBPATH " in

2
ld/emulparams/elf_x86_64.sh

@ -13,7 +13,7 @@ GENERATE_SHLIB_SCRIPT=yes
GENERATE_PIE_SCRIPT=yes
NO_SMALL_DATA=yes
LARGE_SECTIONS=yes
SEPARATE_GOTPLT=24
SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0"
IREL_IN_PLT=
if [ "x${host}" = "x${target}" ]; then

4
ld/ldexp.c

@ -681,7 +681,7 @@ fold_name (etree_type *tree)
tree, tree->name.name);
new_number (0);
}
else if (os->processed_vma)
else if (os->bfd_section != NULL)
{
bfd_vma val;
@ -693,6 +693,8 @@ fold_name (etree_type *tree)
new_number (val);
}
else
new_number (0);
}
break;

11
ld/testsuite/ChangeLog

@ -1,3 +1,14 @@
2012-06-11 H.J. Lu <hongjiu.lu@intel.com>
PR ld/14215
* ld-i386/i386.exp: Run pr14215.
* ld-x86-64/x86-64.exp: Likewise.
* ld-i386/pr14215.d: New file.
* ld-i386/pr14215.s: Likewise.
* ld-x86-64/pr14215.d: Likewise.
* ld-x86-64/pr14215.s: Likewise.
2012-06-06 Alan Modra <amodra@gmail.com>
* ld-alpha/tlsbin.rd, * ld-alpha/tlsbinr.rd, * ld-alpha/tlspic.rd,

1
ld/testsuite/ld-i386/i386.exp

@ -245,3 +245,4 @@ if { !([istarget "i?86-*-linux*"]
run_dump_test "compressed1"
run_dump_test "pr12627"
run_dump_test "pr13302"
run_dump_test "pr14215"

9
ld/testsuite/ld-i386/pr14215.d

@ -0,0 +1,9 @@
#name: PR ld/14215
#as: --32
#ld: -melf_i386 -shared -z relro
#readelf: -l --wide
#failif
#...
03 .dynamic .got .data
#...

4
ld/testsuite/ld-i386/pr14215.s

@ -0,0 +1,4 @@
.section .got
.space 0x2a8, 4
.data
.zero 12

9
ld/testsuite/ld-x86-64/pr14215.d

@ -0,0 +1,9 @@
#name: PR ld/14215
#as: --64
#ld: -melf_x86_64 -shared -z relro
#readelf: -l --wide
#failif
#...
03 .dynamic .got .data
#...

4
ld/testsuite/ld-x86-64/pr14215.s

@ -0,0 +1,4 @@
.section .got
.space 0x2a8, 4
.data
.zero 24

1
ld/testsuite/ld-x86-64/x86-64.exp

@ -208,6 +208,7 @@ run_dump_test "pr12921"
run_dump_test "pr13947"
run_dump_test "pr12570a"
run_dump_test "pr12570b"
run_dump_test "pr14215"
if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} {
return

Loading…
Cancel
Save