[Driver] Properly handle -entry for X86 Linux.
authorMichael J. Spencer <bigcheesegs@gmail.com>
Sun, 9 Dec 2012 23:56:37 +0000 (23:56 +0000)
committerMichael J. Spencer <bigcheesegs@gmail.com>
Sun, 9 Dec 2012 23:56:37 +0000 (23:56 +0000)
llvm-svn: 169718

lld/lib/Driver/Drivers.cpp
lld/lib/Driver/Targets.cpp

index 8ff4abe..5b3478c 100644 (file)
@@ -118,7 +118,8 @@ public:
     if (llvm::opt::Arg *A = _inputArgs->getLastArg(ld::OPT_entry))
       newArgs->AddJoinedArg(A, _core.getOption(core::OPT_entry), A->getValue());
     else
-      newArgs->AddJoinedArg(nullptr, _core.getOption(core::OPT_entry), "start");
+      newArgs->AddJoinedArg(nullptr, _core.getOption(core::OPT_entry),
+                            "_start");
 
     if (llvm::opt::Arg *A = _inputArgs->getLastArg(ld::OPT_output))
       newArgs->AddJoinedArg(A, _core.getOption(core::OPT_output),
index 9230073..496e020 100644 (file)
@@ -26,7 +26,7 @@ using namespace lld;
 
 class X86LinuxTarget final : public Target {
 public:
-  X86LinuxTarget(const LinkerOptions &lo) : Target(lo), _woe() {
+  X86LinuxTarget(const LinkerOptions &lo) : Target(lo), _woe(lo._entrySymbol) {
     _readerELF.reset(createReaderELF(_roe, _roa));
     _readerYAML.reset(createReaderYAML(_roy));
     _writer.reset(createWriterELF(_woe));
@@ -63,12 +63,12 @@ private:
   } _roy;
 
   struct WOpts : lld::WriterOptionsELF {
-    WOpts() {
+    WOpts(StringRef entry) {
       _endianness = llvm::support::little;
       _is64Bit = false;
       _type = llvm::ELF::ET_EXEC;
       _machine = llvm::ELF::EM_386;
-      _entryPoint = "_start";
+      _entryPoint = entry;
     }
   } _woe;