summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2017-06-23 04:07:44 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2017-06-23 04:07:44 +0000
commit58173b97209bfc907dd0b47ecfc5ab7c1fe1f036 (patch)
treec05199260e332ee7793659d617a2766a84f06d04 /llvm/test
parent4ab0f4910a2b494b89f3ea11516fb04d3f3a49c8 (diff)
downloadbcm5719-llvm-58173b97209bfc907dd0b47ecfc5ab7c1fe1f036.tar.gz
bcm5719-llvm-58173b97209bfc907dd0b47ecfc5ab7c1fe1f036.zip
COFF: Produce an error on invalid pcrel relocs.
X86_64 COFF only has support for 32 bit pcrel relocations. Produce an error on all others. Note that gnu as has extended the relocation values to support this. It is not clear if we should support the gnu extension. llvm-svn: 306082
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/MC/COFF/cross-section-relative-err.s12
-rw-r--r--llvm/test/MC/COFF/cross-section-relative.s31
2 files changed, 18 insertions, 25 deletions
diff --git a/llvm/test/MC/COFF/cross-section-relative-err.s b/llvm/test/MC/COFF/cross-section-relative-err.s
new file mode 100644
index 00000000000..e237f60e9a3
--- /dev/null
+++ b/llvm/test/MC/COFF/cross-section-relative-err.s
@@ -0,0 +1,12 @@
+// RUN: not llvm-mc -filetype=obj -triple x86_64-pc-win32 %s -o /dev/null 2>&1 | FileCheck %s
+
+
+// CHECK: [[@LINE+1]]:{{[0-9]+}}: error: Cannot represent this expression
+ .byte foo - .
+
+// CHECK: [[@LINE+1]]:{{[0-9]+}}: error: Cannot represent this expression
+ .short foo - .
+
+// CHECK: [[@LINE+1]]:{{[0-9]+}}: error: Cannot represent this expression
+ .quad foo - .
+
diff --git a/llvm/test/MC/COFF/cross-section-relative.s b/llvm/test/MC/COFF/cross-section-relative.s
index 8d96c8f8df4..6f172922e9b 100644
--- a/llvm/test/MC/COFF/cross-section-relative.s
+++ b/llvm/test/MC/COFF/cross-section-relative.s
@@ -27,17 +27,14 @@ g4:
.globl t1 # @t1
.align 8
t1:
- .quad (g3-t1)+4
.globl t2 # @t2
.align 8
t2:
- .quad g3-t2
.globl t3 # @t3
.align 8
t3:
- .quad (g3-t3)-4
.globl t4 # @t4
.align 4
@@ -78,10 +75,9 @@ t6:
// READOBJ-NEXT: IMAGE_SCN_MEM_WRITE (0x80000000)
// READOBJ-NEXT: ]
// READOBJ-NEXT: SectionData (
-// READOBJ-NEXT: 0000: 08000000 00000000 04000000 00000000 |
-// READOBJ-NEXT: 0010: 00000000 00000000 04000000 00000000 |
-// READOBJ-NEXT: 0020: 01020000 00000000 00010000 00000000 |
-// READOBJ-NEXT: 0030: 04000000 00000000 04000000 |
+// READOBJ-NEXT: 0000: 04000000 00000000 00000000 00000000 |
+// READOBJ-NEXT: 0010: 01020000 00000000 00010000 00000000 |
+// READOBJ-NEXT: 0020: 04000000 00000000 04000000 |
// READOBJ-NEXT: )
// READOBJ-NEXT: }
// READOBJ-NEXT: ]
@@ -93,32 +89,17 @@ t6:
// READOBJ-NEXT: Symbol: g3
// READOBJ-NEXT: }
// READOBJ-NEXT: Relocation {
-// READOBJ-NEXT: Offset: 0x8
-// READOBJ-NEXT: Type: IMAGE_REL_AMD64_REL32 (4)
-// READOBJ-NEXT: Symbol: g3
-// READOBJ-NEXT: }
-// READOBJ-NEXT: Relocation {
-// READOBJ-NEXT: Offset: 0x10
-// READOBJ-NEXT: Type: IMAGE_REL_AMD64_REL32 (4)
-// READOBJ-NEXT: Symbol: g3
-// READOBJ-NEXT: }
-// READOBJ-NEXT: Relocation {
-// READOBJ-NEXT: Offset: 0x18
-// READOBJ-NEXT: Type: IMAGE_REL_AMD64_REL32 (4)
-// READOBJ-NEXT: Symbol: g3
-// READOBJ-NEXT: }
-// READOBJ-NEXT: Relocation {
-// READOBJ-NEXT: Offset: 0x1C
+// READOBJ-NEXT: Offset: 0x4
// READOBJ-NEXT: Type: IMAGE_REL_AMD64_ADDR32NB (3)
// READOBJ-NEXT: Symbol: g3
// READOBJ-NEXT: }
// READOBJ-NEXT: Relocation {
-// READOBJ-NEXT: Offset: 0x30
+// READOBJ-NEXT: Offset: 0x20
// READOBJ-NEXT: Type: IMAGE_REL_AMD64_REL32 (4)
// READOBJ-NEXT: Symbol: g3
// READOBJ-NEXT: }
// READOBJ-NEXT: Relocation {
-// READOBJ-NEXT: Offset: 0x38
+// READOBJ-NEXT: Offset: 0x28
// READOBJ-NEXT: Type: IMAGE_REL_AMD64_REL32 (4)
// READOBJ-NEXT: Symbol: foobar
// READOBJ-NEXT: }
OpenPOWER on IntegriCloud