diff options
Diffstat (limited to 'ld/testsuite/ld-kvx/farcall-back.d')
-rw-r--r-- | ld/testsuite/ld-kvx/farcall-back.d | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/ld/testsuite/ld-kvx/farcall-back.d b/ld/testsuite/ld-kvx/farcall-back.d new file mode 100644 index 0000000..c17dda7 --- /dev/null +++ b/ld/testsuite/ld-kvx/farcall-back.d @@ -0,0 +1,79 @@ +#name: kvx-farcall-back +#source: farcall-back.s +#as: +#ld: -Ttext 0x1000 --section-start .foo=0x80001000 +#objdump: -dr + +#... + +Disassembly of section .text: + +.* <_start>: + .*: .. .. .. .. call .* <__bar1_veneer>;; + + .*: .. .. .. .. goto .* <__bar1_veneer>;; + + .*: .. .. .. .. call .* <__bar2_veneer>;; + + .*: .. .. .. .. goto .* <__bar2_veneer>;; + + .*: .. .. .. .. call .* <__bar3_veneer>;; + + .*: .. .. .. .. goto .* <__bar3_veneer>;; + + .*: 00 00 d0 0f ret;; + + ... + +.* <_back>: + .*: 00 00 d0 0f ret;; + +.* <__bar3_veneer>: + .*: 00 .. 40 e0 0c 00 20 00 make \$r16 = .* \(0x.*\);; + + .*: 10 00 d8 0f igoto \$r16;; + +.* <__bar2_veneer>: + .*: 00 .. 40 e0 08 00 20 00 make \$r16 = .* \(0x.*\);; + + .*: 10 00 d8 0f igoto \$r16;; + +.* <__bar1_veneer>: + .*: 00 .. 40 e0 04 00 20 00 make \$r16 = .* \(0x.*\);; + + .*: 10 00 d8 0f igoto \$r16;; + + +Disassembly of section .foo: + +.* <bar1>: +.*: 00 00 d0 0f ret;; + +.*: .. .. .. .. goto .* <___start_veneer>;; + + ... + +.* <bar2>: +.*: 00 00 d0 0f ret;; + +.*: .. .. .. .. goto .* <___start_veneer>;; + + ... + +.* <bar3>: +.*: 00 00 d0 0f ret;; + +.*: .. .. .. .. goto .* <___back_veneer>;; + + +.* <___start_veneer>: +.*: 00 .. 40 e0 04 00 00 00 make \$r16 = .* \(0x.*\);; + +.*: 10 00 d8 0f igoto \$r16;; + +.* <___back_veneer>: +.*: 00 .. 40 e0 08 00 00 00 make \$r16 = .* \(0x.*\);; + +.*: 10 00 d8 0f igoto \$r16;; + + |