summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2015-09-08 21:11:25 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2015-09-08 21:11:25 +0000
commit8be15899b4d23575ea2acd893c4cb64a5328d525 (patch)
tree3618c4f17a97265ad0b079fb5e770233abf5d8e9
parent0127d80986a29a6dea137440c835809b9ae581da (diff)
downloadbcm5719-llvm-8be15899b4d23575ea2acd893c4cb64a5328d525.tar.gz
bcm5719-llvm-8be15899b4d23575ea2acd893c4cb64a5328d525.zip
[lld][elf2] Fix hard coded entry address.
llvm-svn: 247073
-rw-r--r--lld/ELF/Writer.cpp6
-rw-r--r--lld/test/elf2/basic.s2
-rw-r--r--lld/test/elf2/basic32.s2
3 files changed, 7 insertions, 3 deletions
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index ab98ddce862..c41d034c9f3 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -576,7 +576,11 @@ template <class ELFT> void Writer<ELFT>::writeHeader() {
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 f696f8ec6a4..f615acb6b50 100644
--- a/lld/test/elf2/basic.s
+++ b/lld/test/elf2/basic.s
@@ -23,7 +23,7 @@ _start:
# 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 151b83ba840..719487124bb 100644
--- a/lld/test/elf2/basic32.s
+++ b/lld/test/elf2/basic32.s
@@ -23,7 +23,7 @@ _start:
# 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)
OpenPOWER on IntegriCloud