diff options
author | Nick Clifton <nickc@redhat.com> | 2010-04-29 14:44:15 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2010-04-29 14:44:15 +0000 |
commit | 77db8e2e96ba37bb1915261d21f7287f15b67bf8 (patch) | |
tree | 95d5cd9e621e6912a423b1b35b9120b31360df4d /gas/testsuite/gas | |
parent | c0643a5132a92140534e5a0de9fd26ca5c5e9060 (diff) | |
download | ppe42-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.d | 20 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/weakdef-1.s | 18 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/weakdef-2.d | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/weakdef-2.l | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/weakdef-2.s | 10 |
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 |