[AArch64] Bind defined symbol locally in PIE

bfd/
	PR target/20737
	* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Bind defined
	symbol locally in PIE.

ld/
	* testsuite/ld-aarch64/pie-bind-locally-a.s: New test source.
	* testsuite/ld-aarch64/pie-bind-locally-b.s: Likewise.
	* testsuite/ld-aarch64/pie-bind-locally.d: New testcase.
	* testsuite/ld-aarch64/aarch64-elf.exp: Run new testcase.
This commit is contained in:
Jiong Wang 2016-11-10 09:25:17 +00:00
parent 9b9720149d
commit ac33b731d2
7 changed files with 38 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2016-11-10 Jiong Wang <jiong.wang@arm.com>
PR target/20737
* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Bind defined
symbol locally in PIE.
2016-11-08 Pedro Alves <palves@redhat.com>
* dwarf2.c (struct funcinfo) <is_linkage>: Type is bfd_boolean,

View File

@ -5193,7 +5193,8 @@ elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
else if (h != NULL
&& h->dynindx != -1
&& (!bfd_link_pic (info)
|| !SYMBOLIC_BIND (info, h)
|| !(bfd_link_pie (info)
|| SYMBOLIC_BIND (info, h))
|| !h->def_regular))
outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type);
else

View File

@ -1,3 +1,11 @@
2016-11-10 Jiong Wang <jiong.wang@arm.com>
PR target/20737
* testsuite/ld-aarch64/pie-bind-locally-a.s: New test source.
* testsuite/ld-aarch64/pie-bind-locally-b.s: Likewise.
* testsuite/ld-aarch64/pie-bind-locally.d: New testcase.
* testsuite/ld-aarch64/aarch64-elf.exp: Run new testcase.
2016-11-07 Nick Clifton <nickc@redhat.com>
PR ld/20784

View File

@ -287,6 +287,8 @@ run_dump_test "rela-abs-relative"
run_dump_test "rela-abs-relative-be"
run_dump_test "rela-abs-relative-opt"
run_dump_test "pie-bind-locally"
set aarch64elflinktests {
{"ld-aarch64/so with global symbol" "-shared" "" "" {copy-reloc-so.s}
{} "copy-reloc-so.so"}

View File

@ -0,0 +1,5 @@
.text
.align 2
.global _start
_start:
ldr x0, [x0, #:got_lo12:_start]

View File

@ -0,0 +1,6 @@
.section .data.rel,"aw",%progbits
.align 3
.type q, %object
.size q, 8
q:
.xword _start

View File

@ -0,0 +1,9 @@
#source: pie-bind-locally-a.s
#source: pie-bind-locally-b.s
#ld: -pie
#readelf: -Wr
Relocation section '\.rela\.dyn' at offset .* contains 2 entries:
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_AARCH64_RELATIVE[ ].*
[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_AARCH64_RELATIVE[ ].*