aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-arm
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2011-05-31 14:07:58 +0000
committerPaul Brook <paul@codesourcery.com>2011-05-31 14:07:58 +0000
commit63e1a0fcbacd4cee2d74a2f31c84bce7807e5e77 (patch)
tree6d40bb661791da5d0de645f36d957332c2133c86 /ld/testsuite/ld-arm
parent10960bfbce1719b569d2f7e3b0a9931ec7f2b5d9 (diff)
downloadgdb-63e1a0fcbacd4cee2d74a2f31c84bce7807e5e77.zip
gdb-63e1a0fcbacd4cee2d74a2f31c84bce7807e5e77.tar.gz
gdb-63e1a0fcbacd4cee2d74a2f31c84bce7807e5e77.tar.bz2
2011-05-31 Paul Brook <paul@codesourcery.com>
bfd/ * elf32-arm.c (elf32_arm_final_link_relocate): Only do bl conversion for known functions. (elf32_arm_swap_symbol_in): Only set ST_BRANCH_TO_ARM for function symbols. include/elf/ * arm.h (arm_st_branch_type): Add ST_BRANCH_UNKNOWN. ld/testsuite/ * ld-arm/cortex-a8-far.d: Adjust expected output. * ld-arm/arm-call1.s: Give function symbol correct type. * ld-arm/arm-call2.s: Ditto. * ld-arm/farcall-group4.s: Ditto. * ld-arm/arm-elf.exp (cortex-a8-far): Define far symbols with correct type via assembly file. * ld-arm/cortex-a8-far-3.s: New file. * ld-arm/abs-call-1.s: Add Thumb tests
Diffstat (limited to 'ld/testsuite/ld-arm')
-rw-r--r--ld/testsuite/ld-arm/abs-call-1.d7
-rw-r--r--ld/testsuite/ld-arm/abs-call-1.s7
-rw-r--r--ld/testsuite/ld-arm/arm-call1.s1
-rw-r--r--ld/testsuite/ld-arm/arm-call2.s1
-rw-r--r--ld/testsuite/ld-arm/arm-elf.exp4
-rw-r--r--ld/testsuite/ld-arm/cortex-a8-far-3.s9
-rw-r--r--ld/testsuite/ld-arm/farcall-group4.s1
7 files changed, 27 insertions, 3 deletions
diff --git a/ld/testsuite/ld-arm/abs-call-1.d b/ld/testsuite/ld-arm/abs-call-1.d
index 4482beb..7214e3a 100644
--- a/ld/testsuite/ld-arm/abs-call-1.d
+++ b/ld/testsuite/ld-arm/abs-call-1.d
@@ -6,4 +6,9 @@ Disassembly of section .text:
00008000 <arm>:
8000: eb03dffe bl 100000 <foo>
8004: ea03dffd b 100000 <foo>
- 8008: eb03dffc bl 100000 <foo>
+ 8008: fa03dffc blx 100000 <foo>
+ 800c: eb03dffb bl 100000 <foo>
+00008010 <thumb>:
+ 8010: f0f7 fff6 bl 100000 <foo>
+ 8014: f0f7 bff4 b\.w 100000 <foo>
+ 8018: f0f7 eff2 blx 100000 <foo>
diff --git a/ld/testsuite/ld-arm/abs-call-1.s b/ld/testsuite/ld-arm/abs-call-1.s
index c0a66b4..ab1ac3d 100644
--- a/ld/testsuite/ld-arm/abs-call-1.s
+++ b/ld/testsuite/ld-arm/abs-call-1.s
@@ -4,5 +4,12 @@
arm: bl 0x100000
b 0x100000
+ blx 0x100000
bl foo
+ .syntax unified
+ .thumb
+thumb: bl 0x100000
+ b 0x100000
+ blx 0x100000
+ @ bl foo is broken - gas fails to preserve the symbol reference
diff --git a/ld/testsuite/ld-arm/arm-call1.s b/ld/testsuite/ld-arm/arm-call1.s
index e6ea1f2..e4ab1c2 100644
--- a/ld/testsuite/ld-arm/arm-call1.s
+++ b/ld/testsuite/ld-arm/arm-call1.s
@@ -2,6 +2,7 @@
.text
.arch armv5t
.global _start
+ .type _start, %function
_start:
bl arm
bl t1
diff --git a/ld/testsuite/ld-arm/arm-call2.s b/ld/testsuite/ld-arm/arm-call2.s
index 30ae349..02aa379 100644
--- a/ld/testsuite/ld-arm/arm-call2.s
+++ b/ld/testsuite/ld-arm/arm-call2.s
@@ -4,6 +4,7 @@
.global t1
.global t2
.global t5
+ .type arm, %function
arm:
bx lr
.thumb
diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp
index a8c51c2..8b8495e 100644
--- a/ld/testsuite/ld-arm/arm-elf.exp
+++ b/ld/testsuite/ld-arm/arm-elf.exp
@@ -276,8 +276,8 @@ set armelftests {
{{objdump -dr cortex-a8-fix-blx-rel-thumb.d}}
"cortex-a8-fix-blx-rel-thumb"}
{"Cortex-A8 erratum fix, relocate bl.w and far call"
- "-EL -Ttext=0x00 --fix-cortex-a8 --defsym far_fn1=0x80000000 --defsym far_fn2=0x80000004 --defsym far_fn=0x7fff0000 --defsym _start=0"
- "-EL -mcpu=cortex-a8" {cortex-a8-far-1.s cortex-a8-far-2.s}
+ "-EL -Ttext=0x00 --fix-cortex-a8 --defsym _start=0"
+ "-EL -mcpu=cortex-a8" {cortex-a8-far-1.s cortex-a8-far-2.s cortex-a8-far-3.s}
{{objdump -dr cortex-a8-far.d}}
"cortex-a8-far"}
{"Cortex-A8 erratum fix, headers"
diff --git a/ld/testsuite/ld-arm/cortex-a8-far-3.s b/ld/testsuite/ld-arm/cortex-a8-far-3.s
new file mode 100644
index 0000000..48241a5
--- /dev/null
+++ b/ld/testsuite/ld-arm/cortex-a8-far-3.s
@@ -0,0 +1,9 @@
+.globl far_fn
+.type far_fn, %function
+.set far_fn, 0x7fff0000
+.globl far_fn1
+.type far_fn1, %function
+.set far_fn1, 0x80000000
+.globl far_fn2
+.type far_fn2, %function
+.set far_fn2, 0x80000004
diff --git a/ld/testsuite/ld-arm/farcall-group4.s b/ld/testsuite/ld-arm/farcall-group4.s
index 17f503b..95ad035 100644
--- a/ld/testsuite/ld-arm/farcall-group4.s
+++ b/ld/testsuite/ld-arm/farcall-group4.s
@@ -8,6 +8,7 @@ myfunc:
bl bar
.section .far, "xa"
+ .type bar, %function
.global bar
bar:
bx lr