diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2017-06-23 04:07:44 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2017-06-23 04:07:44 +0000 |
commit | 58173b97209bfc907dd0b47ecfc5ab7c1fe1f036 (patch) | |
tree | c05199260e332ee7793659d617a2766a84f06d04 /llvm/test | |
parent | 4ab0f4910a2b494b89f3ea11516fb04d3f3a49c8 (diff) | |
download | bcm5719-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.s | 12 | ||||
-rw-r--r-- | llvm/test/MC/COFF/cross-section-relative.s | 31 |
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: } |