diff options
author | Christophe Lyon <christophe.lyon@st.com> | 2009-03-06 08:57:58 +0000 |
---|---|---|
committer | Christophe Lyon <christophe.lyon@st.com> | 2009-03-06 08:57:58 +0000 |
commit | 8cd931b713e8ef36bdedb6015562c9f0fd1b8e4f (patch) | |
tree | 721be252e02b29c125acf2567292b0f0a45f87bc /ld/testsuite/ld-arm | |
parent | f0da3b538d1fec3f9e4707409ea200e3b625f12a (diff) | |
download | gdb-8cd931b713e8ef36bdedb6015562c9f0fd1b8e4f.zip gdb-8cd931b713e8ef36bdedb6015562c9f0fd1b8e4f.tar.gz gdb-8cd931b713e8ef36bdedb6015562c9f0fd1b8e4f.tar.bz2 |
09-03-05 Christophe Lyon <christophe.lyon@st.com>
bfd/
* elf32-arm.c (group_sections): Take next section size into
account before accepting to group it.
testsuite/
* ld-arm/arm-elf.exp: Add new farcall-group-limit test.
* ld-arm/farcall-group-limit.d: New file.
* ld-arm/farcall-group3.s: New file.
* ld-arm/farcall-group4.s: New file.
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 |