summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKaelyn Takata <rikka@google.com>2014-04-14 16:50:22 +0000
committerKaelyn Takata <rikka@google.com>2014-04-14 16:50:22 +0000
commitde2b2a32f41735e690b09dee29b0a200b57d4f12 (patch)
tree4253a02ba370a15f64c365ccdeb20889f60ef860 /test
parentadc90c9d6d1f6cf13a374399f3a3c574ddcbd8b5 (diff)
downloadllvm-de2b2a32f41735e690b09dee29b0a200b57d4f12.tar.gz
llvm-de2b2a32f41735e690b09dee29b0a200b57d4f12.tar.bz2
llvm-de2b2a32f41735e690b09dee29b0a200b57d4f12.tar.xz
Fix up MCFixup::getAccessVariant to handle unary expressions.
This allows correct relocations to be generated for a symbolic address that is being adjusted by a negative constant. Since r204294, such expressions have triggered undefined behavior when LLVM was built without assertions. Credit goes to Rafael for this patch; I'm submitting it on his behalf as he is on vacation this week. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206192 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/MC/ELF/relocation.s3
1 files changed, 3 insertions, 0 deletions
diff --git a/test/MC/ELF/relocation.s b/test/MC/ELF/relocation.s
index d2ee6afda3..7755f06f3f 100644
--- a/test/MC/ELF/relocation.s
+++ b/test/MC/ELF/relocation.s
@@ -28,6 +28,8 @@ bar:
zed = foo +2
call zed@PLT
+ leaq -1+foo(%rip), %r11
+
// CHECK: Section {
// CHECK: Name: .rela.text
// CHECK: Relocations [
@@ -53,6 +55,7 @@ bar:
// CHECK-NEXT: 0x8D R_X86_64_PC16 foo 0x8D
// CHECK-NEXT: 0x8F R_X86_64_PC8 foo 0x8F
// CHECK-NEXT: 0x91 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFE
+// CHECK-NEXT: 0x98 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFB
// CHECK-NEXT: ]
// CHECK-NEXT: }