diff options
Diffstat (limited to 'ld/testsuite/ld-arm')
-rw-r--r-- | ld/testsuite/ld-arm/arm-elf.exp | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-arm/farcall-group-limit.d | 21 | ||||
-rw-r--r-- | ld/testsuite/ld-arm/farcall-group3.s | 9 | ||||
-rw-r--r-- | ld/testsuite/ld-arm/farcall-group4.s | 13 |
4 files changed, 46 insertions, 0 deletions
diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp index 0dfc441..b9c7513 100644 --- a/ld/testsuite/ld-arm/arm-elf.exp +++ b/ld/testsuite/ld-arm/arm-elf.exp @@ -338,6 +338,9 @@ set armeabitests { {"Group size=2" "-Ttext 0x1000 --section-start .foo=0x2003020 --stub-group-size=2" "" {farcall-group.s farcall-group2.s} {{objdump -d farcall-group-size2.d}} "farcall-group-size2"} + {"Group size limit" "-Ttext 0x1000 --section-start .far=0x2003020" "" {farcall-group3.s farcall-group4.s} + {{objdump -d farcall-group-limit.d}} + "farcall-group-limit"} {"Mixed ARM/Thumb dynamic application with farcalls" "tmpdir/mixed-lib.so -T arm-dyn.ld --section-start .far_arm=0x2100000 --section-start .far_thumb=0x2200000" "" {farcall-mixed-app.s} diff --git a/ld/testsuite/ld-arm/farcall-group-limit.d b/ld/testsuite/ld-arm/farcall-group-limit.d new file mode 100644 index 0000000..204dcd8 --- /dev/null +++ b/ld/testsuite/ld-arm/farcall-group-limit.d @@ -0,0 +1,21 @@ + +.*: file format .* + +Disassembly of section .text: + +00001000 <_start>: + 1000: eb000000 bl 1008 <__bar_veneer> + 1004: 00000000 andeq r0, r0, r0 + +00001008 <__bar_veneer>: + 1008: e51ff004 ldr pc, \[pc, #-4\] ; 100c <__bar_veneer\+0x4> + 100c: 02003020 .word 0x02003020 + +00001010 <myfunc>: + ... + 2001010: eb000802 bl 2003020 <bar> + +Disassembly of section .far: + +02003020 <bar>: + 2003020: e12fff1e bx lr diff --git a/ld/testsuite/ld-arm/farcall-group3.s b/ld/testsuite/ld-arm/farcall-group3.s new file mode 100644 index 0000000..ea2ce7f --- /dev/null +++ b/ld/testsuite/ld-arm/farcall-group3.s @@ -0,0 +1,9 @@ +@ Test to ensure that ARM calls exceeding 32Mb generate stubs, +@ and that stubs are correctly inserted between input sections +@ when one contribution size exceeds the limit. + + .text + .global bar + .global _start +_start: + bl bar diff --git a/ld/testsuite/ld-arm/farcall-group4.s b/ld/testsuite/ld-arm/farcall-group4.s new file mode 100644 index 0000000..17f503b --- /dev/null +++ b/ld/testsuite/ld-arm/farcall-group4.s @@ -0,0 +1,13 @@ +@ Test to ensure that ARM calls exceeding 32Mb generate stubs, +@ and that a large input section forces stub insertion before its +@ contribution. + + .text +myfunc: + .space 0x2000000 + bl bar + + .section .far, "xa" + .global bar +bar: + bx lr |