[AArch64] Fix function pointer variable with -Bsymbolic-functions

bfd/ChangeLog

2015-01-13 Thomas Preud'homme <thomas.preudhomme@arm.com>

    * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Use
    SYMBOLIC_BIND to check if a symbol should be bound symbolically.

ld/testsuite/ChangeLog

2015-01-13 Thomas Preud'homme <thomas.preudhomme@arm.com>

    * ld-aarch64/aarch64-elf.exp: Added relocs-257-symbolic-func test.
    * ld-aarch64/relocs-257-symbolic-func.d: New file.
    * ld-aarch64/relocs-257-symbolic-func.s: Likewise.
This commit is contained in:
Jiong Wang 2015-01-13 11:36:54 +00:00
parent 0172429c3b
commit 0941db698e
6 changed files with 29 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2015-01-13 Thomas Preud'homme <thomas.preudhomme@arm.com>
* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Use SYMBOLIC_BIND
to check if a symbol should be bound symbolically.
2015-01-13 Jiong Wang <jiong.wang@arm.com> 2015-01-13 Jiong Wang <jiong.wang@arm.com>
* elfnn-aarch64.c: (elfNN_aarch64_howto_table): Enable overflow check * elfnn-aarch64.c: (elfNN_aarch64_howto_table): Enable overflow check

View File

@ -4337,7 +4337,7 @@ elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
memset (&outrel, 0, sizeof outrel); memset (&outrel, 0, sizeof outrel);
else if (h != NULL else if (h != NULL
&& h->dynindx != -1 && h->dynindx != -1
&& (!info->shared || !info->symbolic || !h->def_regular)) && (!info->shared || !SYMBOLIC_BIND (info, h) || !h->def_regular))
outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type); outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type);
else else
{ {

View File

@ -1,3 +1,9 @@
2015-01-13 Thomas Preud'homme <thomas.preudhomme@arm.com>
* ld-aarch64/aarch64-elf.exp: Added relocs-257-symbolic-func test.
* ld-aarch64/relocs-257-symbolic-func.d: New file.
* ld-aarch64/relocs-257-symbolic-func.s: Likewise.
2015-01-13 Jiong Wang <jiong.wang@arm.com> 2015-01-13 Jiong Wang <jiong.wang@arm.com>
* ld-aarch64/tprel_g2_overflow.s: New testcase. * ld-aarch64/tprel_g2_overflow.s: New testcase.

View File

@ -177,6 +177,7 @@ run_dump_test "ifunc-21"
run_dump_test "ifunc-22" run_dump_test "ifunc-22"
run_dump_test "relasz" run_dump_test "relasz"
run_dump_test "relocs-257-symbolic-func"
set aarch64elflinktests { set aarch64elflinktests {
{"ld-aarch64/so with global symbol" "-shared" "" "" {copy-reloc-so.s} {"ld-aarch64/so with global symbol" "-shared" "" "" {copy-reloc-so.s}

View File

@ -0,0 +1,5 @@
#source: relocs-257-symbolic-func.s
#ld: -shared -Bsymbolic-functions
#readelf: -r --wide
#...
.* +R_AARCH64_RELATIVE +.*

View File

@ -0,0 +1,11 @@
.text
.global tempy
.type tempy, %function
tempy:
.size tempy, .-tempy
.section .data.rel
.align 3
.type tempy_ptr, %object
.size tempy_ptr, 8
tempy_ptr:
.xword tempy