forked from Imagelibrary/binutils-gdb
RISC-V: Bind defined symbol locally in PIE
Reference commit 1dcb9720d6
bfd/
* elfnn-riscv.c (RISCV_COPY_INPUT_RELOC): Bind defined symbol
locally in PIE.
ld/
* testsuite/ld-riscv-elf/pie-bind-locally-a.s: New test source.
* testsuite/ld-riscv-elf/pie-bind-locally-b.s: Likewise.
* testsuite/ld-riscv-elf/pie-bind-locally-rv32.d: New testcase.
* testsuite/ld-riscv-elf/pie-bind-locally-rv64.d: Likewise.
Signed-off-by: Linsen Zhou <i@lin.moe>
This commit is contained in:
@@ -99,7 +99,7 @@
|
||||
((H) != NULL \
|
||||
&& (H)->dynindx != -1 \
|
||||
&& (!bfd_link_pic (INFO) \
|
||||
|| !SYMBOLIC_BIND ((INFO), (H)) \
|
||||
|| !(bfd_link_pie ((INFO)) || SYMBOLIC_BIND ((INFO), (H))) \
|
||||
|| !(H)->def_regular))
|
||||
|
||||
/* True if this is actually a static link, or it is a -Bsymbolic link
|
||||
|
||||
@@ -235,6 +235,9 @@ if [istarget "riscv*-*-*"] {
|
||||
|
||||
run_dump_test "zicfilp-unlabeled-plt"
|
||||
|
||||
run_dump_test "pie-bind-locally-rv32"
|
||||
run_dump_test "pie-bind-locally-rv64"
|
||||
|
||||
# IFUNC testcases.
|
||||
# Check IFUNC by single type relocs.
|
||||
run_dump_test_ifunc "ifunc-reloc-call-01" rv32 exe
|
||||
|
||||
5
ld/testsuite/ld-riscv-elf/pie-bind-locally-a.s
Normal file
5
ld/testsuite/ld-riscv-elf/pie-bind-locally-a.s
Normal file
@@ -0,0 +1,5 @@
|
||||
.text
|
||||
.global _start
|
||||
_start:
|
||||
.option pic
|
||||
la a0, _start
|
||||
8
ld/testsuite/ld-riscv-elf/pie-bind-locally-b.s
Normal file
8
ld/testsuite/ld-riscv-elf/pie-bind-locally-b.s
Normal file
@@ -0,0 +1,8 @@
|
||||
.section .data.rel,"aw",%progbits
|
||||
.type q, %object
|
||||
q:
|
||||
.ifdef __64_bit__
|
||||
.quad _start
|
||||
.else
|
||||
.word _start
|
||||
.endif
|
||||
10
ld/testsuite/ld-riscv-elf/pie-bind-locally-rv32.d
Normal file
10
ld/testsuite/ld-riscv-elf/pie-bind-locally-rv32.d
Normal file
@@ -0,0 +1,10 @@
|
||||
#source: pie-bind-locally-a.s
|
||||
#source: pie-bind-locally-b.s
|
||||
#as: -march=rv32i -mabi=ilp32
|
||||
#ld: -m[riscv_choose_ilp32_emul] -pie
|
||||
#readelf: -Wr
|
||||
|
||||
Relocation section '\.rela\.dyn' at offset .* contains 2 entries:
|
||||
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
|
||||
[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_RISCV_RELATIVE[ ].*
|
||||
[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_RISCV_RELATIVE[ ].*
|
||||
10
ld/testsuite/ld-riscv-elf/pie-bind-locally-rv64.d
Normal file
10
ld/testsuite/ld-riscv-elf/pie-bind-locally-rv64.d
Normal file
@@ -0,0 +1,10 @@
|
||||
#source: pie-bind-locally-a.s
|
||||
#source: pie-bind-locally-b.s
|
||||
#as: -march=rv64i -mabi=lp64 -defsym __64_bit__=1
|
||||
#ld: -m[riscv_choose_lp64_emul] -pie
|
||||
#readelf: -Wr
|
||||
|
||||
Relocation section '\.rela\.dyn' at offset .* contains 2 entries:
|
||||
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
|
||||
[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_RISCV_RELATIVE[ ].*
|
||||
[0-9a-f]+[ ]+[0-9a-f]+[ ]+R_RISCV_RELATIVE[ ].*
|
||||
Reference in New Issue
Block a user