mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
aarch64: Test DT_RELR with discarded sections
This commit is contained in:
parent
961befd693
commit
b284a87b49
@ -475,6 +475,8 @@ run_dump_test_lp64 "relr-got-pie"
|
||||
run_dump_test_lp64 "relr-got-shared"
|
||||
run_dump_test_lp64 "relr-text-pie"
|
||||
run_dump_test_lp64 "relr-text-shared"
|
||||
run_dump_test_lp64 "relr-discard-pie"
|
||||
run_dump_test_lp64 "relr-discard-shared"
|
||||
|
||||
if { ![skip_sframe_tests] } {
|
||||
run_dump_test "sframe-simple-1"
|
||||
|
18
ld/testsuite/ld-aarch64/relr-discard-pie.d
Normal file
18
ld/testsuite/ld-aarch64/relr-discard-pie.d
Normal file
@ -0,0 +1,18 @@
|
||||
#source: relr-discard.s
|
||||
#ld: -pie --no-apply-dynamic-relocs -z pack-relative-relocs -T relr-discard.ld
|
||||
#readelf: -rW
|
||||
|
||||
# Note: There are unnecessary GOT entries and *_NONE relocations
|
||||
# for those GOT entries and discarded locations, this is bug 31850.
|
||||
|
||||
Relocation section '\.rela\.dyn' at offset 0x1.* contains 4 entries:
|
||||
Offset Info Type Symbol's Value Symbol's Name \+ Addend
|
||||
0000000000000000 0000000000000000 R_AARCH64_NONE 0
|
||||
0000000000000000 0000000000000000 R_AARCH64_NONE 0
|
||||
0000000000000000 0000000000000000 R_AARCH64_NONE 0
|
||||
0000000000000000 0000000000000000 R_AARCH64_NONE 0
|
||||
|
||||
Relocation section '\.relr\.dyn' at offset 0x1.* contains 2 entries which relocate 2 locations:
|
||||
Index: Entry Address Symbolic Address
|
||||
0000: 0000000000020008 0000000000020008 _GLOBAL_OFFSET_TABLE_ \+ 0x8
|
||||
0001: 0000000000000003 0000000000020010 _GLOBAL_OFFSET_TABLE_ \+ 0x10
|
18
ld/testsuite/ld-aarch64/relr-discard-shared.d
Normal file
18
ld/testsuite/ld-aarch64/relr-discard-shared.d
Normal file
@ -0,0 +1,18 @@
|
||||
#source: relr-discard.s
|
||||
#ld: -shared --no-apply-dynamic-relocs -z pack-relative-relocs -T relr-discard.ld
|
||||
#readelf: -rW
|
||||
|
||||
# Note: There are unnecessary GOT entries and *_NONE relocations
|
||||
# for those GOT entries and discarded locations, this is bug 31850.
|
||||
|
||||
Relocation section '\.rela\.dyn' at offset 0x1.* contains 5 entries:
|
||||
Offset Info Type Symbol's Value Symbol's Name \+ Addend
|
||||
0000000000000000 0000000000000000 R_AARCH64_NONE 0
|
||||
0000000000000000 0000000000000000 R_AARCH64_NONE 0
|
||||
0000000000000000 0000000000000000 R_AARCH64_NONE 0
|
||||
0000000000000000 0000000000000000 R_AARCH64_NONE 0
|
||||
0000000000020010 .* R_AARCH64_GLOB_DAT 000000000001000c sym_global \+ 0
|
||||
|
||||
Relocation section '\.relr\.dyn' at offset 0x1.* contains 1 entry which relocates 1 location:
|
||||
Index: Entry Address Symbolic Address
|
||||
0000: 0000000000020008 0000000000020008 _GLOBAL_OFFSET_TABLE_ \+ 0x8
|
13
ld/testsuite/ld-aarch64/relr-discard.ld
Normal file
13
ld/testsuite/ld-aarch64/relr-discard.ld
Normal file
@ -0,0 +1,13 @@
|
||||
OUTPUT_ARCH(aarch64)
|
||||
ENTRY(_start)
|
||||
SECTIONS
|
||||
{
|
||||
/DISCARD/ : { *(.discard.*) }
|
||||
|
||||
. = 0x10000;
|
||||
.text : { *(.text) }
|
||||
. = 0x20000;
|
||||
.got : { *(.got) *(.got.plt)}
|
||||
. = 0x30000;
|
||||
.data : { *(.data) *(.data.*) }
|
||||
}
|
63
ld/testsuite/ld-aarch64/relr-discard.s
Normal file
63
ld/testsuite/ld-aarch64/relr-discard.s
Normal file
@ -0,0 +1,63 @@
|
||||
// Test DT_RELR with references in discarded sections.
|
||||
|
||||
.text
|
||||
.p2align 3
|
||||
.global _start
|
||||
_start:
|
||||
nop
|
||||
|
||||
sym_local:
|
||||
nop
|
||||
|
||||
.global sym_hidden
|
||||
.hidden sym_hidden
|
||||
sym_hidden:
|
||||
nop
|
||||
|
||||
.global sym_global
|
||||
sym_global:
|
||||
nop
|
||||
|
||||
.global sym_global_abs
|
||||
.set sym_global_abs, 42
|
||||
|
||||
.global sym_weak_undef
|
||||
.weak sym_weak_undef
|
||||
|
||||
.section .discard.got_local,"ax"
|
||||
adrp x0, :got:sym_local
|
||||
ldr x0, [x0, :got_lo12:sym_local]
|
||||
|
||||
.section .discard.got_global,"ax"
|
||||
adrp x0, :got:sym_global
|
||||
ldr x0, [x0, :got_lo12:sym_global]
|
||||
|
||||
.section .discard.local,"a"
|
||||
.p2align 1
|
||||
discard_local:
|
||||
.xword sym_local
|
||||
|
||||
.section .discard.hidden,"a"
|
||||
.p2align 1
|
||||
discard_hidden:
|
||||
.xword sym_hidden
|
||||
|
||||
.section .discard.global,"a"
|
||||
.p2align 1
|
||||
discard_global:
|
||||
.xword sym_global
|
||||
|
||||
.section .discard.global_abs,"a"
|
||||
.p2align 1
|
||||
discard_global_abs:
|
||||
.xword sym_global_abs
|
||||
|
||||
.section .discard.weak_undef,"a"
|
||||
.p2align 1
|
||||
discard_weak_undef:
|
||||
.xword sym_weak_undef
|
||||
|
||||
.section .discard._DYNAMIC,"a"
|
||||
.p2align 1
|
||||
discard_DYNAMIC:
|
||||
.xword _DYNAMIC
|
Loading…
Reference in New Issue
Block a user