diff options
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-or1k/or1k.exp | 22 | ||||
-rw-r--r-- | ld/testsuite/ld-or1k/plt1.dd | 27 | ||||
-rw-r--r-- | ld/testsuite/ld-or1k/plt1.s | 11 | ||||
-rw-r--r-- | ld/testsuite/ld-or1k/plt1.x.dd | 27 | ||||
-rw-r--r-- | ld/testsuite/ld-or1k/plta1.dd | 27 | ||||
-rw-r--r-- | ld/testsuite/ld-or1k/plta1.s | 11 | ||||
-rw-r--r-- | ld/testsuite/ld-or1k/pltlib.s | 12 |
8 files changed, 147 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 7e6195b..b0c9eaa 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,5 +1,15 @@ 2018-10-05 Richard Henderson <rth@twiddle.net> + * testsuite/ld-or1k/or1k.exp: Add test cases for plt generation. + * testsuite/ld-or1k/plt1.dd: New file. + * testsuite/ld-or1k/plt1.s: New file. + * testsuite/ld-or1k/plt1.x.dd: New file. + * testsuite/ld-or1k/plta1.dd: New file. + * testsuite/ld-or1k/plta1.s: New file. + * testsuite/ld-or1k/pltlib.s: New file. + +2018-10-05 Richard Henderson <rth@twiddle.net> + * testsuite/ld-or1k/offsets1.d: New file. * testsuite/ld-or1k/offsets1.s: New file. * testsuite/ld-or1k/or1k.exp: New file. diff --git a/ld/testsuite/ld-or1k/or1k.exp b/ld/testsuite/ld-or1k/or1k.exp index 8f09a7c..540ca29 100644 --- a/ld/testsuite/ld-or1k/or1k.exp +++ b/ld/testsuite/ld-or1k/or1k.exp @@ -38,6 +38,23 @@ set or1ktests { "offsets1"} } +set or1kplttests { + {"PLTA -fpic -shared" "-fpic -shared" "" + "" {plta1.s} + {{objdump -dr plta1.dd}} + "libplta1.so"} + {"PLT -fpic -shared" "-fpic -shared" "" + "" {plt1.s} + {{objdump -dr plt1.dd}} + "libplt1.so"} + {"Helper shared library" "-fpic -shared" "" + "" {pltlib.s} {} "libpltlib.so"} + {"PLT -fno-pic exec -relax" "-relax tmpdir/libpltlib.so" "" + "" {plt1.s} + {{objdump -dr plt1.x.dd}} + "plt1.x"} +} + # Not implemented yet # {"TLS -fpic -shared" "-shared -melf64alpha" "" # "" {align.s tlspic1.s tlspic2.s} @@ -66,4 +83,9 @@ set or1ktests { # "" {tlsg.s} # {{objdump -sj.debug_foobar tlsg.sd}} "tlsg"} +# Shared objects not supported on newlib run_ld_link_tests $or1ktests +if { ![istarget "or1k*-*-elf*"] } { + run_ld_link_tests $or1kplttests + return +} diff --git a/ld/testsuite/ld-or1k/plt1.dd b/ld/testsuite/ld-or1k/plt1.dd new file mode 100644 index 0000000..a982530 --- /dev/null +++ b/ld/testsuite/ld-or1k/plt1.dd @@ -0,0 +1,27 @@ + +.*\.so: file format elf32-or1k + + +Disassembly of section \.plt: + +[0-9a-f]+ <\.plt>: + [0-9a-f]+: 85 f0 00 08 l\.lwz r15,8\(r16\) + [0-9a-f]+: 44 00 78 00 l\.jr r15 + [0-9a-f]+: 85 90 00 04 l\.lwz r12,4\(r16\) + [0-9a-f]+: 15 00 00 00 l\.nop 0x0 + [0-9a-f]+: 85 90 00 0c l\.lwz r12,12\(r16\) + [0-9a-f]+: 44 00 60 00 l\.jr r12 + [0-9a-f]+: a9 60 00 00 l\.ori r11,r0,0x0 + [0-9a-f]+: 15 00 00 00 l\.nop 0x0 + [0-9a-f]+: 85 90 00 10 l\.lwz r12,16\(r16\) + [0-9a-f]+: 44 00 60 00 l\.jr r12 + [0-9a-f]+: a9 60 00 0c l\.ori r11,r0,0xc + [0-9a-f]+: 15 00 00 00 l\.nop 0x0 + +Disassembly of section \.text: + +[0-9a-f]+ <_start>: + [0-9a-f]+: 03 ff ff f8 l\.j [0-9a-f]+ <.plt\+0x10> + [0-9a-f]+: 15 00 00 00 l\.nop 0x0 + [0-9a-f]+: 03 ff ff fa l\.j [0-9a-f]+ <.plt\+0x20> + [0-9a-f]+: 15 00 00 00 l\.nop 0x0 diff --git a/ld/testsuite/ld-or1k/plt1.s b/ld/testsuite/ld-or1k/plt1.s new file mode 100644 index 0000000..a5573bd --- /dev/null +++ b/ld/testsuite/ld-or1k/plt1.s @@ -0,0 +1,11 @@ + .data + .p2align 16 + + .text + .globl _start +_start: + + l.j plt(x) + l.nop + l.j plt(y) + l.nop diff --git a/ld/testsuite/ld-or1k/plt1.x.dd b/ld/testsuite/ld-or1k/plt1.x.dd new file mode 100644 index 0000000..d2f47a1 --- /dev/null +++ b/ld/testsuite/ld-or1k/plt1.x.dd @@ -0,0 +1,27 @@ + +.*\.x: file format elf32-or1k + + +Disassembly of section \.plt: + +[0-9a-f]+ <\.plt>: + +[0-9a-f]+: 19 80 00 00 l\.movhi r12,0x0 + +[0-9a-f]+: 85 ec [0-9a-f]+ [0-9a-f]+ l\.lwz r15,[0-9]+\(r12\) + +[0-9a-f]+: 44 00 78 00 l\.jr r15 + +[0-9a-f]+: 85 8c [0-9a-f]+ [0-9a-f]+ l\.lwz r12,[0-9]+\(r12\) + +[0-9a-f]+: 19 80 00 00 l\.movhi r12,0x0 + +[0-9a-f]+: 85 8c [0-9a-f]+ [0-9a-f]+ l\.lwz r12,[0-9]+\(r12\) + +[0-9a-f]+: 44 00 60 00 l\.jr r12 + +[0-9a-f]+: a9 60 00 00 l\.ori r11,r0,0x0 + +[0-9a-f]+: 19 80 00 00 l\.movhi r12,0x0 + +[0-9a-f]+: 85 8c [0-9a-f]+ [0-9a-f]+ l\.lwz r12,[0-9]+\(r12\) + +[0-9a-f]+: 44 00 60 00 l\.jr r12 + +[0-9a-f]+: a9 60 00 0c l\.ori r11,r0,0xc + +Disassembly of section \.text: + +[0-9a-f]+ <_start>: + +[0-9a-f]+: 03 ff ff f8 l\.j [0-9a-f]+ <.plt\+0x10> + +[0-9a-f]+: 15 00 00 00 l\.nop 0x0 + +[0-9a-f]+: 03 ff ff fa l\.j [0-9a-f]+ <.plt\+0x20> + +[0-9a-f]+: 15 00 00 00 l\.nop 0x0 diff --git a/ld/testsuite/ld-or1k/plta1.dd b/ld/testsuite/ld-or1k/plta1.dd new file mode 100644 index 0000000..6767c41 --- /dev/null +++ b/ld/testsuite/ld-or1k/plta1.dd @@ -0,0 +1,27 @@ + +.*\.so: file format elf32-or1k + + +Disassembly of section .plt: + +[0-9a-f]+ <.plt>: + [0-9a-f]+: 09 80 00 01 l\.adrp r12,2000 <.*> + [0-9a-f]+: 85 ec 02 10 l\.lwz r15,528\(r12\) + [0-9a-f]+: 44 00 78 00 l\.jr r15 + [0-9a-f]+: 85 8c 02 0c l\.lwz r12,524\(r12\) + [0-9a-f]+: 09 80 00 01 l\.adrp r12,2000 <.*> + [0-9a-f]+: 85 8c 02 14 l\.lwz r12,532\(r12\) + [0-9a-f]+: 44 00 60 00 l\.jr r12 + [0-9a-f]+: a9 60 00 00 l\.ori r11,r0,0x0 + [0-9a-f]+: 09 80 00 01 l\.adrp r12,2000 <.*> + [0-9a-f]+: 85 8c 02 18 l\.lwz r12,536\(r12\) + [0-9a-f]+: 44 00 60 00 l\.jr r12 + [0-9a-f]+: a9 60 00 0c l\.ori r11,r0,0xc + +Disassembly of section .text: + +[0-9a-f]+ <_start>: + [0-9a-f]+: 03 ff ff f8 l\.j [0-9a-f]+ <.plt\+0x10> + [0-9a-f]+: 15 00 00 00 l\.nop 0x0 + [0-9a-f]+: 03 ff ff fa l\.j [0-9a-f]+ <.plt\+0x20> + [0-9a-f]+: 15 00 00 00 l\.nop 0x0 diff --git a/ld/testsuite/ld-or1k/plta1.s b/ld/testsuite/ld-or1k/plta1.s new file mode 100644 index 0000000..82f8175 --- /dev/null +++ b/ld/testsuite/ld-or1k/plta1.s @@ -0,0 +1,11 @@ + .data + .p2align 16 + + .text + .globl _start +_start: + + l.j plta(x) + l.nop + l.j plta(y) + l.nop diff --git a/ld/testsuite/ld-or1k/pltlib.s b/ld/testsuite/ld-or1k/pltlib.s new file mode 100644 index 0000000..baf76ca --- /dev/null +++ b/ld/testsuite/ld-or1k/pltlib.s @@ -0,0 +1,12 @@ + .section .data + .globl x, y +x: .long 33 +y: .long 44 + + .section .text + .align 4 + .global func + .type func, @function +func: + l.jr r9 + l.nop |