[lld][elf2] Fix hard coded entry address.

llvm-svn: 247073
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index ab98ddc..c41d034 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -576,7 +576,11 @@
   auto &FirstObj = cast<ObjectFile<ELFT>>(*Symtab.getFirstELF());
   EHdr->e_machine = FirstObj.getEMachine();
   EHdr->e_version = EV_CURRENT;
-  EHdr->e_entry = 0x401000;
+
+  llvm::DenseMap<StringRef, Symbol *>::const_iterator Entry =
+      Symtab.getSymbols().find("_start");
+
+  EHdr->e_entry = getSymVA(cast<DefinedRegular<ELFT>>(Entry->second->Body));
   EHdr->e_phoff = sizeof(Elf_Ehdr_Impl<ELFT>);
   EHdr->e_shoff = SectionHeaderOff;
   EHdr->e_ehsize = sizeof(Elf_Ehdr_Impl<ELFT>);
diff --git a/lld/test/elf2/basic.s b/lld/test/elf2/basic.s
index f696f8e..f615acb 100644
--- a/lld/test/elf2/basic.s
+++ b/lld/test/elf2/basic.s
@@ -23,7 +23,7 @@
 # CHECK-NEXT:   Type: Executable (0x2)
 # CHECK-NEXT:   Machine: EM_X86_64 (0x3E)
 # CHECK-NEXT:   Version: 1
-# CHECK-NEXT:   Entry: 0x401000
+# CHECK-NEXT:   Entry: 0x1000
 # CHECK-NEXT:   ProgramHeaderOffset: 0x40
 # CHECK-NEXT:   SectionHeaderOffset: 0x1070
 # CHECK-NEXT:   Flags [ (0x0)
diff --git a/lld/test/elf2/basic32.s b/lld/test/elf2/basic32.s
index 151b83b..7194871 100644
--- a/lld/test/elf2/basic32.s
+++ b/lld/test/elf2/basic32.s
@@ -23,7 +23,7 @@
 # CHECK-NEXT:   Type: Executable (0x2)
 # CHECK-NEXT:   Machine: EM_386 (0x3)
 # CHECK-NEXT:   Version: 1
-# CHECK-NEXT:   Entry: 0x401000
+# CHECK-NEXT:   Entry: 0x1000
 # CHECK-NEXT:   ProgramHeaderOffset: 0x34
 # CHECK-NEXT:   SectionHeaderOffset: 0x1058
 # CHECK-NEXT:   Flags [ (0x0)