aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite')
-rw-r--r--ld/testsuite/ld-arm/arm-elf.exp3
-rw-r--r--ld/testsuite/ld-arm/arm.ld1
-rw-r--r--ld/testsuite/ld-arm/armv4-bx.d19
-rw-r--r--ld/testsuite/ld-arm/armv4-bx.s8
4 files changed, 31 insertions, 0 deletions
diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp
index 8897968..3f2b69c 100644
--- a/ld/testsuite/ld-arm/arm-elf.exp
+++ b/ld/testsuite/ld-arm/arm-elf.exp
@@ -173,6 +173,9 @@ set armelftests {
{"callweak" "-static -T arm.ld" "" {callweak.s}
{{objdump -dr callweak.d}}
"callweak"}
+ {"ARMv4 interworking" "-static -T arm.ld --fix-v4bx-interworking" "--fix-v4bx -meabi=4" {armv4-bx.s}
+ {{objdump -d armv4-bx.d}}
+ "armv4-bx"}
}
run_ld_link_tests $armelftests
diff --git a/ld/testsuite/ld-arm/arm.ld b/ld/testsuite/ld-arm/arm.ld
index c9e01e6..cb73fb3 100644
--- a/ld/testsuite/ld-arm/arm.ld
+++ b/ld/testsuite/ld-arm/arm.ld
@@ -11,6 +11,7 @@ SECTIONS
*(.text)
*(.after)
*(.glue_7)
+ *(.v4_bx)
} =0
. = 0x9000;
.got : { *(.got) *(.got.plt)}
diff --git a/ld/testsuite/ld-arm/armv4-bx.d b/ld/testsuite/ld-arm/armv4-bx.d
new file mode 100644
index 0000000..095b387
--- /dev/null
+++ b/ld/testsuite/ld-arm/armv4-bx.d
@@ -0,0 +1,19 @@
+
+.*: .*file format elf32-(big|little)arm
+
+Disassembly of section \.text:
+
+00008000 <_start>:
+ 8000: ea000001 b 800c \<__bx_r14\>
+ 8004: ea000003 b 8018 \<__bx_r0\>
+ 8008: 0a000002 beq 8018 \<__bx_r0\>
+
+0000800c <__bx_r14>:
+ 800c: e31e0001 tst lr, #1 ; 0x1
+ 8010: 01a0f00e moveq pc, lr
+ 8014: e12fff1e bx lr
+
+00008018 <__bx_r0>:
+ 8018: e3100001 tst r0, #1 ; 0x1
+ 801c: 01a0f000 moveq pc, r0
+ 8020: e12fff10 bx r0
diff --git a/ld/testsuite/ld-arm/armv4-bx.s b/ld/testsuite/ld-arm/armv4-bx.s
new file mode 100644
index 0000000..ef86357
--- /dev/null
+++ b/ld/testsuite/ld-arm/armv4-bx.s
@@ -0,0 +1,8 @@
+.text
+.arch armv4
+.global _start
+.type _start, %function
+_start:
+bx lr
+bx r0
+bxeq r0