summaryrefslogtreecommitdiffstats
path: root/gas/testsuite/gas
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2010-04-29 14:44:15 +0000
committerNick Clifton <nickc@redhat.com>2010-04-29 14:44:15 +0000
commit77db8e2e96ba37bb1915261d21f7287f15b67bf8 (patch)
tree95d5cd9e621e6912a423b1b35b9120b31360df4d /gas/testsuite/gas
parentc0643a5132a92140534e5a0de9fd26ca5c5e9060 (diff)
downloadppe42-binutils-77db8e2e96ba37bb1915261d21f7287f15b67bf8.tar.gz
ppe42-binutils-77db8e2e96ba37bb1915261d21f7287f15b67bf8.zip
* write.c (fixup_segment): Do not assume we know the section a
defined weak symbol is in. * config/tc-arm.c (relax_adr, relax_branch, md_apply_fix): Treat weak symbols as not known to be in the same section, even if they are defined. * gas/arm/weakdef-1.s: New. * gas/arm/weakdef-1.d: New. * gas/arm/weakdef-2.s: New. * gas/arm/weakdef-2.d: New. * gas/arm/weakdef-2.l: New.
Diffstat (limited to 'gas/testsuite/gas')
-rw-r--r--gas/testsuite/gas/arm/weakdef-1.d20
-rw-r--r--gas/testsuite/gas/arm/weakdef-1.s18
-rw-r--r--gas/testsuite/gas/arm/weakdef-2.d5
-rw-r--r--gas/testsuite/gas/arm/weakdef-2.l3
-rw-r--r--gas/testsuite/gas/arm/weakdef-2.s10
5 files changed, 56 insertions, 0 deletions
diff --git a/gas/testsuite/gas/arm/weakdef-1.d b/gas/testsuite/gas/arm/weakdef-1.d
new file mode 100644
index 0000000000..8351fc23c4
--- /dev/null
+++ b/gas/testsuite/gas/arm/weakdef-1.d
@@ -0,0 +1,20 @@
+# name: Thumb branch to weak
+# as:
+# objdump: -dr
+# This test is only valid on ELF based ports.
+#not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
+
+.*: +file format .*arm.*
+
+
+Disassembly of section .text:
+
+0+000 <Weak>:
+ 0: e7fe b.n 2 <Strong>
+ 0: R_ARM_THM_JUMP11 Strong
+
+0+002 <Strong>:
+ 2: f7ff bffe b.w 0 <Random>
+ 2: R_ARM_THM_JUMP24 Random
+ 6: f7ff bffe b.w 0 <Weak>
+ 6: R_ARM_THM_JUMP24 Weak
diff --git a/gas/testsuite/gas/arm/weakdef-1.s b/gas/testsuite/gas/arm/weakdef-1.s
new file mode 100644
index 0000000000..4aa6bc46a4
--- /dev/null
+++ b/gas/testsuite/gas/arm/weakdef-1.s
@@ -0,0 +1,18 @@
+ .syntax unified
+ .text
+ .thumb
+
+ .globl Weak
+ .weak Weak
+ .thumb_func
+ .type Weak, %function
+Weak:
+ b Strong
+ .size Weak, .-Weak
+
+ .globl Strong
+ .type Strong, %function
+Strong:
+ b Random
+ b Weak
+ .size Strong, .-Strong
diff --git a/gas/testsuite/gas/arm/weakdef-2.d b/gas/testsuite/gas/arm/weakdef-2.d
new file mode 100644
index 0000000000..e0ff272abb
--- /dev/null
+++ b/gas/testsuite/gas/arm/weakdef-2.d
@@ -0,0 +1,5 @@
+# name: adr of weak
+# as:
+# error-output: weakdef-2.l
+# This test is only valid on ELF based ports.
+#not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
diff --git a/gas/testsuite/gas/arm/weakdef-2.l b/gas/testsuite/gas/arm/weakdef-2.l
new file mode 100644
index 0000000000..7aec5e1ffd
--- /dev/null
+++ b/gas/testsuite/gas/arm/weakdef-2.l
@@ -0,0 +1,3 @@
+[^:]*: Assembler messages:
+[^:]*:9: Error: symbol Weak is weak and may be overridden later
+[^:]*:10: Error: symbol Weak is weak and may be overridden later
diff --git a/gas/testsuite/gas/arm/weakdef-2.s b/gas/testsuite/gas/arm/weakdef-2.s
new file mode 100644
index 0000000000..08da196159
--- /dev/null
+++ b/gas/testsuite/gas/arm/weakdef-2.s
@@ -0,0 +1,10 @@
+ .syntax unified
+ .text
+ .globl Strong
+Strong:
+ adrl r0,Strong
+ adr r0,Strong
+ .globl Weak
+ .weak Weak
+Weak: adrl r0,Weak
+ adr r0,Weak
OpenPOWER on IntegriCloud