diff options
author | Kaelyn Takata <rikka@google.com> | 2014-04-14 16:50:22 +0000 |
---|---|---|
committer | Kaelyn Takata <rikka@google.com> | 2014-04-14 16:50:22 +0000 |
commit | de2b2a32f41735e690b09dee29b0a200b57d4f12 (patch) | |
tree | 4253a02ba370a15f64c365ccdeb20889f60ef860 /test | |
parent | adc90c9d6d1f6cf13a374399f3a3c574ddcbd8b5 (diff) | |
download | llvm-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.s | 3 |
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: } |