diff options
| author | Davide Italiano <davide@freebsd.org> | 2016-01-14 01:30:21 +0000 |
|---|---|---|
| committer | Davide Italiano <davide@freebsd.org> | 2016-01-14 01:30:21 +0000 |
| commit | 0d4fbae0e7cad9c024e33e33ad33ed366975215d (patch) | |
| tree | 1771d9c7ce9ca19d3f3cb721c0b0b1be97ee1869 /lld/ELF/Target.cpp | |
| parent | 3463e696fb4253a8cf16d3b5198480bbb4b10af2 (diff) | |
| download | bcm5719-llvm-0d4fbae0e7cad9c024e33e33ad33ed366975215d.tar.gz bcm5719-llvm-0d4fbae0e7cad9c024e33e33ad33ed366975215d.zip | |
[ELF/AArch64] Support R_AARCH64_LDST128_ABS_LO12_NC relocation.
llvm-svn: 257731
Diffstat (limited to 'lld/ELF/Target.cpp')
| -rw-r--r-- | lld/ELF/Target.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp index 6d42dbe86e5..10ce7255037 100644 --- a/lld/ELF/Target.cpp +++ b/lld/ELF/Target.cpp @@ -1269,6 +1269,7 @@ bool AArch64TargetInfo::needsCopyRel(uint32_t Type, const SymbolBody &S) const { case R_AARCH64_LDST8_ABS_LO12_NC: case R_AARCH64_LDST32_ABS_LO12_NC: case R_AARCH64_LDST64_ABS_LO12_NC: + case R_AARCH64_LDST128_ABS_LO12_NC: if (auto *SS = dyn_cast<SharedSymbol<ELF64LE>>(&S)) return SS->Sym.getType() == STT_OBJECT; return false; @@ -1376,6 +1377,9 @@ void AArch64TargetInfo::relocateOne(uint8_t *Loc, uint8_t *BufEnd, checkAlignment<8>(SA, Type); or32le(Loc, (SA & 0xFF8) << 7); break; + case R_AARCH64_LDST128_ABS_LO12_NC: + or32le(Loc, (SA & 0x0FF8) << 6); + break; case R_AARCH64_LDST8_ABS_LO12_NC: or32le(Loc, (SA & 0xFFF) << 10); break; |

