summaryrefslogtreecommitdiffstats
path: root/lld/ELF/InputSection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lld/ELF/InputSection.cpp')
-rw-r--r--lld/ELF/InputSection.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/lld/ELF/InputSection.cpp b/lld/ELF/InputSection.cpp
index 7fcb279b8d3..88eccbe7e42 100644
--- a/lld/ELF/InputSection.cpp
+++ b/lld/ELF/InputSection.cpp
@@ -624,15 +624,15 @@ static uint64_t getRelocTargetVA(const InputFile *File, RelType Type, int64_t A,
return Sym.getGotVA() + A;
case R_GOTONLY_PC:
return In.Got->getVA() + A - P;
- case R_GOTONLY_PC_FROM_END:
- return In.Got->getVA() + A - P + In.Got->getSize();
+ case R_GOTPLTONLY_PC:
+ return In.GotPlt->getVA() + A - P;
case R_GOTREL:
return Sym.getVA(A) - In.Got->getVA();
- case R_GOTREL_FROM_END:
- return Sym.getVA(A) - In.Got->getVA() - In.Got->getSize();
- case R_GOT_FROM_END:
+ case R_GOTPLTREL:
+ return Sym.getVA(A) - In.GotPlt->getVA();
+ case R_GOTPLT:
case R_RELAX_TLS_GD_TO_IE_END:
- return Sym.getGotOffset() + A - In.Got->getSize();
+ return Sym.getGotVA() + A - In.GotPlt->getVA();
case R_TLSLD_GOT_OFF:
case R_GOT_OFF:
case R_RELAX_TLS_GD_TO_IE_GOT_OFF:
@@ -758,12 +758,12 @@ static uint64_t getRelocTargetVA(const InputFile *File, RelType Type, int64_t A,
getAArch64Page(P);
case R_TLSGD_GOT:
return In.Got->getGlobalDynOffset(Sym) + A;
- case R_TLSGD_GOT_FROM_END:
- return In.Got->getGlobalDynOffset(Sym) + A - In.Got->getSize();
+ case R_TLSGD_GOTPLT:
+ return In.Got->getVA() + In.Got->getGlobalDynOffset(Sym) + A - In.GotPlt->getVA();
case R_TLSGD_PC:
return In.Got->getGlobalDynAddr(Sym) + A - P;
- case R_TLSLD_GOT_FROM_END:
- return In.Got->getTlsIndexOff() + A - In.Got->getSize();
+ case R_TLSLD_GOTPLT:
+ return In.Got->getVA() + In.Got->getTlsIndexOff() + A - In.GotPlt->getVA();
case R_TLSLD_GOT:
return In.Got->getTlsIndexOff() + A;
case R_TLSLD_PC:
OpenPOWER on IntegriCloud