2013-04-10 Venkataramanan Kumar <venkataramanan.kumar@linaro.org>
* ld-aarch64/gc-plt1.s: New file. * ld-aarch64/gc-plt2.s: Likewise. * ld-aarch64/gc-plt-hidden.s: Likewise. * ld-aarch64/gc-plt-main.s: Likewise. * ld-aarch64/gc-relocs-257.s: Likewise. * ld-aarch64/gc-plt-relocs.d: Update expected objdump. * ld-aarch64/gc-relocs-257.d: Likewise. * ld-aarch64/gc-relocs-257-dyn.d: Likewise. * ld-aarch64/aarch64-elf.exp: Add test.
This commit is contained in:
parent
393fd4c376
commit
edb2fa9a96
10 changed files with 138 additions and 0 deletions
|
@ -1,3 +1,15 @@
|
|||
2013-04-10 Venkataramanan Kumar <venkataramanan.kumar@linaro.org>
|
||||
|
||||
* ld-aarch64/gc-plt1.s: New file.
|
||||
* ld-aarch64/gc-plt2.s: Likewise.
|
||||
* ld-aarch64/gc-plt-hidden.s: Likewise.
|
||||
* ld-aarch64/gc-plt-main.s: Likewise.
|
||||
* ld-aarch64/gc-relocs-257.s: Likewise.
|
||||
* ld-aarch64/gc-plt-relocs.d: Update expected objdump.
|
||||
* ld-aarch64/gc-relocs-257.d: Likewise.
|
||||
* ld-aarch64/gc-relocs-257-dyn.d: Likewise.
|
||||
* ld-aarch64/aarch64-elf.exp: Add test.
|
||||
|
||||
2013-04-08 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
|
||||
|
||||
* ld-aarch64/gc-tls-relocs.d: Handle big endian format.
|
||||
|
|
|
@ -111,3 +111,6 @@ run_dump_test "tls-relax-ie-le-3"
|
|||
run_dump_test "tlsle-symbol-offset"
|
||||
run_dump_test "gc-got-relocs"
|
||||
run_dump_test "gc-tls-relocs"
|
||||
run_dump_test "gc-plt-relocs"
|
||||
run_dump_test "gc-relocs-257-dyn"
|
||||
run_dump_test "gc-relocs-257"
|
||||
|
|
7
ld/testsuite/ld-aarch64/gc-plt-hidden.s
Normal file
7
ld/testsuite/ld-aarch64/gc-plt-hidden.s
Normal file
|
@ -0,0 +1,7 @@
|
|||
.text
|
||||
.globl hidfn
|
||||
.hidden hidfn
|
||||
.type hidfn, %function
|
||||
hidfn:
|
||||
and x0, x0, x0
|
||||
.size hidfn, . - hidfn
|
8
ld/testsuite/ld-aarch64/gc-plt-main.s
Normal file
8
ld/testsuite/ld-aarch64/gc-plt-main.s
Normal file
|
@ -0,0 +1,8 @@
|
|||
.data
|
||||
.global var
|
||||
.text
|
||||
.globl _start
|
||||
.type _start, %function
|
||||
_start:
|
||||
bl foo
|
||||
.size _start, . - _start
|
48
ld/testsuite/ld-aarch64/gc-plt-relocs.d
Normal file
48
ld/testsuite/ld-aarch64/gc-plt-relocs.d
Normal file
|
@ -0,0 +1,48 @@
|
|||
#source: gc-plt1.s
|
||||
#source: gc-plt-main.s
|
||||
#source: gc-plt-hidden.s
|
||||
#source: gc-plt2.s
|
||||
#ld: --gc-sections -T aarch64.ld --shared
|
||||
#objdump: -dT
|
||||
|
||||
# Shared object with plt related relocs against global symbol
|
||||
# and local functions gced. After gc-section removal we are
|
||||
# checking that the function does not exist.
|
||||
|
||||
.*: file format elf64-(little|big)aarch64
|
||||
|
||||
DYNAMIC SYMBOL TABLE:
|
||||
0+8000 l d \.text 0+ \.text
|
||||
0+8000 g DF \.text 0+4 _start
|
||||
0+0000 D \*UND\* 0+ foo
|
||||
0+8008 g DF \.text 0+ bar
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0+8000 \<_start\>:
|
||||
8000: 9400000c bl 8030 \<foo\+0x24\>
|
||||
|
||||
0+8004 \<hidfn\>:
|
||||
8004: 8a000000 and x0, x0, x0
|
||||
|
||||
0+8008 \<bar\>:
|
||||
8008: 14000001 b 800c \<foo\>
|
||||
|
||||
0+800c \<foo\>:
|
||||
800c: 97fffffe bl 8004 \<hidfn\>
|
||||
|
||||
Disassembly of section .plt:
|
||||
|
||||
0+8010 \<\.plt\>:
|
||||
8010: a9bf7bf0 stp x16, x30, \[sp,#-16\]!
|
||||
8014: b0000010 adrp x16, 9000 .*
|
||||
8018: f9400a11 ldr x17, \[x16,#16\]
|
||||
801c: 91004210 add x16, x16, #0x10
|
||||
8020: d61f0220 br x17
|
||||
8024: d503201f nop
|
||||
8028: d503201f nop
|
||||
802c: d503201f nop
|
||||
8030: b0000010 adrp x16, 9000 .*
|
||||
8034: f9400e11 ldr x17, \[x16,#24\]
|
||||
8038: 91006210 add x16, x16, #0x18
|
||||
803c: d61f0220 br x17
|
9
ld/testsuite/ld-aarch64/gc-plt1.s
Normal file
9
ld/testsuite/ld-aarch64/gc-plt1.s
Normal file
|
@ -0,0 +1,9 @@
|
|||
plt_relocs:
|
||||
adrp x0, :pg_hi21:var
|
||||
ldr x0, [x0, :lo12:var]
|
||||
|
||||
adrp x1, :pg_hi21_nc:var
|
||||
ldr x1, [x1, :lo12:var]
|
||||
|
||||
b bar
|
||||
bl foo
|
11
ld/testsuite/ld-aarch64/gc-plt2.s
Normal file
11
ld/testsuite/ld-aarch64/gc-plt2.s
Normal file
|
@ -0,0 +1,11 @@
|
|||
.text
|
||||
.align 2
|
||||
.global bar
|
||||
.type bar, %function
|
||||
bar:
|
||||
b foo
|
||||
|
||||
.align 2
|
||||
.type foo, %function
|
||||
foo:
|
||||
bl hidfn
|
16
ld/testsuite/ld-aarch64/gc-relocs-257-dyn.d
Normal file
16
ld/testsuite/ld-aarch64/gc-relocs-257-dyn.d
Normal file
|
@ -0,0 +1,16 @@
|
|||
#source: gc-start.s
|
||||
#source: gc-relocs-257.s
|
||||
#ld: --defsym tempy=0x11012 --defsym tempy2=0x45034 --defsym tempy3=0x1234 -T aarch64.ld -shared --gc-sections
|
||||
#objdump: -R -d
|
||||
|
||||
# This tests if the linker is able to remove dynamic relocs created
|
||||
# for R_AARCH64_ABS64 while removing a gc section. The section is
|
||||
# also removed. So after gc, we should be left with the startup code.
|
||||
|
||||
.*: file format elf64-(little|big)aarch64
|
||||
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0+8000 \<_start\>:
|
||||
8000: d503201f nop
|
16
ld/testsuite/ld-aarch64/gc-relocs-257.d
Normal file
16
ld/testsuite/ld-aarch64/gc-relocs-257.d
Normal file
|
@ -0,0 +1,16 @@
|
|||
#source: gc-start.s
|
||||
#source: gc-relocs-257.s
|
||||
#ld: --defsym tempy=0x11012 --defsym tempy2=0x45034 --defsym tempy3=0x1234 -T aarch64.ld --gc-sections
|
||||
#objdump: -d
|
||||
|
||||
# This tests if linker is able to remove gc section containing
|
||||
# R_AARCH64_ABS64 relocs. So after gc, we should be left with
|
||||
# only the startup code.
|
||||
|
||||
.*: file format elf64-(little|big)aarch64
|
||||
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0+8000 \<_start\>:
|
||||
8000: d503201f nop
|
8
ld/testsuite/ld-aarch64/gc-relocs-257.s
Normal file
8
ld/testsuite/ld-aarch64/gc-relocs-257.s
Normal file
|
@ -0,0 +1,8 @@
|
|||
.text
|
||||
.word tempy
|
||||
.xword tempy2
|
||||
.hword tempy3
|
||||
.hword tempy3+8
|
||||
|
||||
and x0, x0, x0
|
||||
and x0, x0, #0x1
|
Loading…
Reference in a new issue