Add support for reading files with more than 0xff00 sections.

llvm-svn: 245880
diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp
index 7db8a25..a58093f 100644
--- a/lld/ELF/InputFiles.cpp
+++ b/lld/ELF/InputFiles.cpp
@@ -46,6 +46,12 @@
     case SHT_SYMTAB:
       Symtab = &Sec;
       break;
+    case SHT_SYMTAB_SHNDX: {
+      ErrorOr<ArrayRef<Elf_Word>> ErrorOrTable = ELFObj->getSHNDXTable(Sec);
+      error(ErrorOrTable);
+      SymtabSHNDX = *ErrorOrTable;
+      break;
+    }
     case SHT_STRTAB:
     case SHT_NULL:
     case SHT_RELA:
@@ -82,7 +88,11 @@
   ErrorOr<StringRef> NameOrErr = Sym->getName(StringTable);
   error(NameOrErr.getError());
   StringRef Name = *NameOrErr;
-  uint16_t SecIndex = Sym->st_shndx;
+
+  uint32_t SecIndex = Sym->st_shndx;
+  if (SecIndex == SHN_XINDEX)
+    SecIndex = ELFObj->getExtendedSymbolTableIndex(Sym, Symtab, SymtabSHNDX);
+
   switch (Sym->getBinding()) {
   default:
     error("unexpected binding");