Compute value of local symbol with getVA.

llvm-svn: 263225
diff --git a/lld/ELF/OutputSections.cpp b/lld/ELF/OutputSections.cpp
index 05f1b9c..5d74a66 100644
--- a/lld/ELF/OutputSections.cpp
+++ b/lld/ELF/OutputSections.cpp
@@ -266,21 +266,12 @@
     SymbolBody *Sym = Rel.Sym;
 
     if (IsRela) {
-      uintX_t VA = 0;
-      uintX_t Addend = Rel.Addend;
-      if (Rel.UseSymVA) {
-        if (auto *L = dyn_cast<LocalSymbol<ELFT>>(Sym)) {
-          uintX_t Pos = L->Sym.st_value;
-          if (L->Sym.getType() == STT_SECTION) {
-            Pos += Addend;
-            Addend = 0;
-          }
-          VA = L->Section->OutSec->getVA() + L->Section->getOffset(Pos);
-        } else {
-          VA = Sym->getVA<ELFT>();
-        }
-      }
-      reinterpret_cast<Elf_Rela *>(P)->r_addend = Addend + VA;
+      uintX_t VA;
+      if (Rel.UseSymVA)
+        VA = Sym->getVA<ELFT>(Rel.Addend);
+      else
+        VA = Rel.Addend;
+      reinterpret_cast<Elf_Rela *>(P)->r_addend = VA;
     }
 
     P->r_offset = Rel.getOffset();