Have getRelExpr handle all cases on x86.
This requires adding a few more expression types, but is already a small
simplification. Having Writer.cpp know the exact expression will also
allow further simplifications.
llvm-svn: 266604
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 325e571b..c799d54 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -563,7 +563,7 @@
// If a relocation needs GOT, we create a GOT slot for the symbol.
if (Expr == R_GOT || Expr == R_MIPS_GOT || Expr == R_MIPS_GOT_LOCAL ||
- Expr == R_GOT_PAGE_PC || Expr == R_GOT_PC) {
+ Expr == R_GOT_PAGE_PC || Expr == R_GOT_PC || Expr == R_GOT_FROM_END) {
uint32_t T = Body.isTls() ? Target->getTlsGotRel(Type) : Type;
C.Relocations.push_back({Expr, T, Offset, Addend, &Body});
if (Body.isInGot())