[lld] r240922 - COFF: Fix logic to find default entry name or subsystem.

Rui Ueyama ruiu at google.com
Thu Jul 16 15:02:06 PDT 2015


On Thu, Jul 16, 2015 at 2:51 PM, Sean Silva <chisophugis at gmail.com> wrote:

> Ok, I was looking at the wrong error. I think the root causes is that
> lib.exe is not being found. Filipe should have more info in r239937.
>

Thank you for investigating, and sorry for the breakage. I think it should
be fixed by REQUIRES: winlib to the test file. Can you verify that that
works?


>
> -- Sean Silva
>
> On Wed, Jul 15, 2015 at 3:46 PM, Sean Silva <chisophugis at gmail.com> wrote:
>
>> Thanks for the info. We've been a bit swamped internally this week but we
>> will try to dig into this based on your hint.
>>
>> -- Sean Silva
>>
>> On Mon, Jul 13, 2015 at 8:22 PM, Rui Ueyama <ruiu at google.com> wrote:
>>
>>> It seems it's failing when it's trying to read a .lib file that is
>>> created by a previous run of lld in the same test. .Lib files are created
>>> by an external command, winres, so there may be something wrong with that
>>> command in your environment? That command is part of Visual Studio.
>>>
>>>
>>> On Mon, Jul 13, 2015 at 5:57 PM, Sean Silva <chisophugis at gmail.com>
>>> wrote:
>>>
>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>
>>>> This test seems to be failing lately on one of our internal builders (
>>>> LLVM.Windows.Phase.2) that builds the open source repo. Sorry I don't
>>>> have more info at the moment, but do you have any idea what could be
>>>> causing this? Seems to be "no such file or directory" for one of the files.
>>>>
>>>> http://reviews.llvm.org/P118
>>>>
>>>> """
>>>> Command 15: "lld" "-flavor" "link2"
>>>> "/out:C:\Buildbot\Slave\builds\1.LLVM.Windows.Phase.2\llvm.obj\tools\lld\test\COFF\Output\dll.test.tmp2.exe"
>>>> "/entry:main"
>>>> "C:\Buildbot\Slave\builds\1.LLVM.Windows.Phase.2\llvm.obj\tools\lld\test\COFF\Output\dll.test.tmp2.obj"
>>>> "C:\Buildbot\Slave\builds\1.LLVM.Windows.Phase.2\llvm.obj\tools\lld\test\COFF\Output\dll.test.tmp.lib"
>>>>
>>>> Command 15 Result: 1
>>>>
>>>> Command 15 Output:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Command 15 Stderr:
>>>>
>>>> cannot open
>>>> C:\Buildbot\Slave\builds\1.LLVM.Windows.Phase.2\llvm.obj\tools\lld\test\COFF\Output\dll.test.tmp.lib:
>>>> no such file or directory
>>>>
>>>> """
>>>>
>>>> -- Sean Silva
>>>>
>>>> On Sun, Jun 28, 2015 at 6:03 PM, Rui Ueyama <ruiu at google.com> wrote:
>>>>
>>>>> Author: ruiu
>>>>> Date: Sun Jun 28 20:03:53 2015
>>>>> New Revision: 240922
>>>>>
>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=240922&view=rev
>>>>> Log:
>>>>> COFF: Fix logic to find default entry name or subsystem.
>>>>>
>>>>> The previous logic to find default entry name or subsystem does not
>>>>> seem correct (i.e. was not compatible with MSVC linker). Previously,
>>>>> default entry name was inferred from CRT functions and user-defined
>>>>> entry functions. Subsystem was inferred from CRT functions.
>>>>>
>>>>> Default entry name and subsystem are now inferred based on the
>>>>> following table. Note that we no longer use CRT functions to infer
>>>>> them.
>>>>>
>>>>>                Entry name           Subsystem
>>>>>   main         mainCRTStartup       console
>>>>>   wmain        wmainCRTStartup      console
>>>>>   WinMain      WinMainCRTStartup    windows
>>>>>   wWinMain     wWinMainCRTStartup   windows
>>>>>
>>>>> Removed:
>>>>>     lld/trunk/test/COFF/Inputs/common.yaml
>>>>> Modified:
>>>>>     lld/trunk/COFF/Driver.cpp
>>>>>     lld/trunk/COFF/Driver.h
>>>>>     lld/trunk/COFF/SymbolTable.cpp
>>>>>     lld/trunk/COFF/SymbolTable.h
>>>>>     lld/trunk/test/COFF/Inputs/icf1.yaml
>>>>>     lld/trunk/test/COFF/Inputs/icf2.yaml
>>>>>     lld/trunk/test/COFF/Inputs/icf3.yaml
>>>>>     lld/trunk/test/COFF/Inputs/icf4.yaml
>>>>>     lld/trunk/test/COFF/Inputs/icf5.yaml
>>>>>     lld/trunk/test/COFF/Inputs/import.yaml
>>>>>     lld/trunk/test/COFF/Inputs/include1a.yaml
>>>>>     lld/trunk/test/COFF/Inputs/ret42.yaml
>>>>>     lld/trunk/test/COFF/alternatename.test
>>>>>     lld/trunk/test/COFF/base.test
>>>>>     lld/trunk/test/COFF/baserel.test
>>>>>     lld/trunk/test/COFF/common.test
>>>>>     lld/trunk/test/COFF/dll.test
>>>>>     lld/trunk/test/COFF/entrylib.ll
>>>>>     lld/trunk/test/COFF/filetype.test
>>>>>     lld/trunk/test/COFF/force.test
>>>>>     lld/trunk/test/COFF/heap.test
>>>>>     lld/trunk/test/COFF/icf.test
>>>>>     lld/trunk/test/COFF/include.test
>>>>>     lld/trunk/test/COFF/include2.test
>>>>>     lld/trunk/test/COFF/internal.test
>>>>>     lld/trunk/test/COFF/linkenv.test
>>>>>     lld/trunk/test/COFF/lldmap.test
>>>>>     lld/trunk/test/COFF/locally-imported.test
>>>>>     lld/trunk/test/COFF/long-section-name.test
>>>>>     lld/trunk/test/COFF/manifest.test
>>>>>     lld/trunk/test/COFF/opt.test
>>>>>     lld/trunk/test/COFF/options.test
>>>>>     lld/trunk/test/COFF/order.test
>>>>>     lld/trunk/test/COFF/out.test
>>>>>     lld/trunk/test/COFF/resource.test
>>>>>     lld/trunk/test/COFF/responsefile.test
>>>>>     lld/trunk/test/COFF/stack.test
>>>>>     lld/trunk/test/COFF/subsystem-inference.test
>>>>>     lld/trunk/test/COFF/unwind.test
>>>>>     lld/trunk/test/COFF/version.test
>>>>>
>>>>> Modified: lld/trunk/COFF/Driver.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.cpp?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/COFF/Driver.cpp (original)
>>>>> +++ lld/trunk/COFF/Driver.cpp Sun Jun 28 20:03:53 2015
>>>>> @@ -207,15 +207,30 @@ void LinkerDriver::addUndefined(StringRe
>>>>>    Config->GCRoots.insert(Sym);
>>>>>  }
>>>>>
>>>>> -static WindowsSubsystem inferSubsystem() {
>>>>> +// Windows specific -- find default entry point name.
>>>>> +StringRef LinkerDriver::findDefaultEntry() {
>>>>> +  // User-defined main functions and their corresponding entry points.
>>>>> +  static const char *Entries[][2] = {
>>>>> +      {"main", "mainCRTStartup"},
>>>>> +      {"wmain", "wmainCRTStartup"},
>>>>> +      {"WinMain", "WinMainCRTStartup"},
>>>>> +      {"wWinMain", "wWinMainCRTStartup"},
>>>>> +  };
>>>>> +  for (auto E : Entries) {
>>>>> +    if (Symtab.findLazy(E[0]))
>>>>> +      return E[1];
>>>>> +  }
>>>>> +  return "";
>>>>> +}
>>>>> +
>>>>> +WindowsSubsystem LinkerDriver::inferSubsystem() {
>>>>>    if (Config->DLL)
>>>>>      return IMAGE_SUBSYSTEM_WINDOWS_GUI;
>>>>> -  return StringSwitch<WindowsSubsystem>(Config->EntryName)
>>>>> -      .Case("mainCRTStartup", IMAGE_SUBSYSTEM_WINDOWS_CUI)
>>>>> -      .Case("wmainCRTStartup", IMAGE_SUBSYSTEM_WINDOWS_CUI)
>>>>> -      .Case("WinMainCRTStartup", IMAGE_SUBSYSTEM_WINDOWS_GUI)
>>>>> -      .Case("wWinMainCRTStartup", IMAGE_SUBSYSTEM_WINDOWS_GUI)
>>>>> -      .Default(IMAGE_SUBSYSTEM_UNKNOWN);
>>>>> +  if (Symtab.find("main") || Symtab.find("wmain"))
>>>>> +    return IMAGE_SUBSYSTEM_WINDOWS_CUI;
>>>>> +  if (Symtab.find("WinMain") || Symtab.find("wWinMain"))
>>>>> +    return IMAGE_SUBSYSTEM_WINDOWS_GUI;
>>>>> +  return IMAGE_SUBSYSTEM_UNKNOWN;
>>>>>  }
>>>>>
>>>>>  bool LinkerDriver::link(llvm::ArrayRef<const char *> ArgsArr) {
>>>>> @@ -522,6 +537,18 @@ bool LinkerDriver::link(llvm::ArrayRef<c
>>>>>      return false;
>>>>>    }
>>>>>
>>>>> +  // Windows specific -- If entry point name is not given, we need to
>>>>> +  // infer that from user-defined entry name.
>>>>> +  if (Config->EntryName.empty() && !Config->NoEntry) {
>>>>> +    StringRef S = findDefaultEntry();
>>>>> +    if (S.empty()) {
>>>>> +      llvm::errs() << "entry point must be defined\n";
>>>>> +      return false;
>>>>> +    }
>>>>> +    Config->EntryName = S;
>>>>> +    addUndefined(S);
>>>>> +  }
>>>>> +
>>>>>    // Resolve auxiliary symbols until converge.
>>>>>    // (Trying to resolve a symbol may trigger a Lazy symbol to load a
>>>>> new file.
>>>>>    // A new file may contain a directive section to add new command
>>>>> line options.
>>>>> @@ -545,19 +572,6 @@ bool LinkerDriver::link(llvm::ArrayRef<c
>>>>>        }
>>>>>      }
>>>>>
>>>>> -    // Windows specific -- If entry point name is not given, we need
>>>>> to
>>>>> -    // infer that from user-defined entry name. The symbol table takes
>>>>> -    // care of details.
>>>>> -    if (Config->EntryName.empty() && !Config->NoEntry) {
>>>>> -      auto EntryOrErr = Symtab.findDefaultEntry();
>>>>> -      if (auto EC = EntryOrErr.getError()) {
>>>>> -        llvm::errs() << EC.message() << "\n";
>>>>> -        return false;
>>>>> -      }
>>>>> -      Config->EntryName = EntryOrErr.get();
>>>>> -      addUndefined(Config->EntryName);
>>>>> -    }
>>>>> -
>>>>>      if (auto EC = Symtab.run()) {
>>>>>        llvm::errs() << EC.message() << "\n";
>>>>>        return false;
>>>>>
>>>>> Modified: lld/trunk/COFF/Driver.h
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.h?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/COFF/Driver.h (original)
>>>>> +++ lld/trunk/COFF/Driver.h Sun Jun 28 20:03:53 2015
>>>>> @@ -94,6 +94,16 @@ private:
>>>>>
>>>>>    void addUndefined(StringRef Sym);
>>>>>
>>>>> +  // Windows specific -- "main" is not the only main function in
>>>>> Windows.
>>>>> +  // You can choose one from these four -- {w,}{WinMain,main}.
>>>>> +  // There are four different entry point functions for them,
>>>>> +  // {w,}{WinMain,main}CRTStartup, respectively. The linker needs to
>>>>> +  // choose the right one depending on which "main" function is
>>>>> defined.
>>>>> +  // This function looks up the symbol table and resolve corresponding
>>>>> +  // entry point name.
>>>>> +  StringRef findDefaultEntry();
>>>>> +  WindowsSubsystem inferSubsystem();
>>>>> +
>>>>>    // Driver is the owner of all opened files.
>>>>>    // InputFiles have MemoryBufferRefs to them.
>>>>>    std::vector<std::unique_ptr<MemoryBuffer>> OwningMBs;
>>>>>
>>>>> Modified: lld/trunk/COFF/SymbolTable.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/SymbolTable.cpp?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/COFF/SymbolTable.cpp (original)
>>>>> +++ lld/trunk/COFF/SymbolTable.cpp Sun Jun 28 20:03:53 2015
>>>>> @@ -174,6 +174,25 @@ Defined *SymbolTable::find(StringRef Nam
>>>>>    return nullptr;
>>>>>  }
>>>>>
>>>>> +// Find a given symbol. If a lazy symbol is found,
>>>>> +// resolve that before returning.
>>>>> +Defined *SymbolTable::findLazy(StringRef Name) {
>>>>> +  auto It = Symtab.find(Name);
>>>>> +  if (It == Symtab.end())
>>>>> +    return nullptr;
>>>>> +  Symbol *Sym = It->second;
>>>>> +  if (auto *B = dyn_cast<Defined>(Sym->Body))
>>>>> +    return B;
>>>>> +  if (auto *B = dyn_cast<Lazy>(Sym->Body)) {
>>>>> +    if (addMemberFile(B))
>>>>> +      return nullptr;
>>>>> +    if (run())
>>>>> +      return nullptr;
>>>>> +    return cast<Defined>(Sym->Body);
>>>>> +  }
>>>>> +  return nullptr;
>>>>> +}
>>>>> +
>>>>>  // Find a given symbol or its mangled symbol.
>>>>>  std::pair<StringRef, Symbol *> SymbolTable::findMangled(StringRef S) {
>>>>>    auto It = Symtab.find(S);
>>>>> @@ -196,41 +215,6 @@ std::pair<StringRef, Symbol *> SymbolTab
>>>>>    return std::make_pair(S, nullptr);
>>>>>  }
>>>>>
>>>>> -std::error_code SymbolTable::resolveLazy(StringRef Name) {
>>>>> -  auto It = Symtab.find(Name);
>>>>> -  if (It == Symtab.end())
>>>>> -    return std::error_code();
>>>>> -  if (auto *B = dyn_cast<Lazy>(It->second->Body)) {
>>>>> -    if (auto EC = addMemberFile(B))
>>>>> -      return EC;
>>>>> -    return run();
>>>>> -  }
>>>>> -  return std::error_code();
>>>>> -}
>>>>> -
>>>>> -// Windows specific -- Link default entry point name.
>>>>> -ErrorOr<StringRef> SymbolTable::findDefaultEntry() {
>>>>> -  // User-defined main functions and their corresponding entry points.
>>>>> -  static const char *Entries[][2] = {
>>>>> -      {"main", "mainCRTStartup"},
>>>>> -      {"wmain", "wmainCRTStartup"},
>>>>> -      {"WinMain", "WinMainCRTStartup"},
>>>>> -      {"wWinMain", "wWinMainCRTStartup"},
>>>>> -  };
>>>>> -  for (auto E : Entries) {
>>>>> -    resolveLazy(E[1]);
>>>>> -    if (find(E[1]))
>>>>> -      return StringRef(E[1]);
>>>>> -    if (!find(E[0]))
>>>>> -      continue;
>>>>> -    if (auto EC = resolve(new (Alloc) Undefined(E[1])))
>>>>> -      return EC;
>>>>> -    return StringRef(E[1]);
>>>>> -  }
>>>>> -  llvm::errs() << "entry point must be defined\n";
>>>>> -  return make_error_code(LLDError::InvalidOption);
>>>>> -}
>>>>> -
>>>>>  std::error_code SymbolTable::addUndefined(StringRef Name) {
>>>>>    return resolve(new (Alloc) Undefined(Name));
>>>>>  }
>>>>> @@ -248,7 +232,10 @@ std::error_code SymbolTable::rename(Stri
>>>>>    SymbolBody *Body = new (Alloc) Undefined(To);
>>>>>    if (auto EC = resolve(Body))
>>>>>      return EC;
>>>>> -  Sym->Body = Body->getReplacement();
>>>>> +  SymbolBody *Repl = Body->getReplacement();
>>>>> +  if (isa<Undefined>(Repl))
>>>>> +    return std::error_code();
>>>>> +  Sym->Body = Repl;
>>>>>    Body->setBackref(Sym);
>>>>>    ++Version;
>>>>>    return std::error_code();
>>>>>
>>>>> Modified: lld/trunk/COFF/SymbolTable.h
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/SymbolTable.h?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/COFF/SymbolTable.h (original)
>>>>> +++ lld/trunk/COFF/SymbolTable.h Sun Jun 28 20:03:53 2015
>>>>> @@ -51,21 +51,13 @@ public:
>>>>>    // mechanisms to allow aliases, a name can be resolved to a
>>>>>    // different symbol). Returns a nullptr if not found.
>>>>>    Defined *find(StringRef Name);
>>>>> +  Defined *findLazy(StringRef Name);
>>>>>
>>>>>    // Find a symbol assuming that Name is a function name.
>>>>>    // Not only a given string but its mangled names (in MSVC C++
>>>>> manner)
>>>>>    // will be searched.
>>>>>    std::pair<StringRef, Symbol *> findMangled(StringRef Name);
>>>>>
>>>>> -  // Windows specific -- `main` is not the only main function in
>>>>> Windows.
>>>>> -  // You can choose one from these four -- {w,}{WinMain,main}.
>>>>> -  // There are four different entry point functions for them,
>>>>> -  // {w,}{WinMain,main}CRTStartup, respectively. The linker needs to
>>>>> -  // choose the right one depending on which `main` function is
>>>>> defined.
>>>>> -  // This function looks up the symbol table and resolve corresponding
>>>>> -  // entry point name.
>>>>> -  ErrorOr<StringRef> findDefaultEntry();
>>>>> -
>>>>>    // Print a layout map to OS.
>>>>>    void printMap(llvm::raw_ostream &OS);
>>>>>
>>>>> @@ -92,7 +84,6 @@ public:
>>>>>
>>>>>  private:
>>>>>    std::error_code resolve(SymbolBody *Body);
>>>>> -  std::error_code resolveLazy(StringRef Name);
>>>>>    std::error_code addMemberFile(Lazy *Body);
>>>>>    ErrorOr<ObjectFile *> createLTOObject(llvm::LTOCodeGenerator *CG);
>>>>>
>>>>>
>>>>> Removed: lld/trunk/test/COFF/Inputs/common.yaml
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/common.yaml?rev=240921&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/common.yaml (original)
>>>>> +++ lld/trunk/test/COFF/Inputs/common.yaml (removed)
>>>>> @@ -1,91 +0,0 @@
>>>>> ----
>>>>> -header:
>>>>> -  Machine:         IMAGE_FILE_MACHINE_AMD64
>>>>> -  Characteristics: []
>>>>> -sections:
>>>>> -  - Name:            .text
>>>>> -    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE,
>>>>> IMAGE_SCN_MEM_READ ]
>>>>> -    Alignment:       4
>>>>> -    SectionData:
>>>>>  b800000000b800000000b800000000b800000000b800000000
>>>>> -    Relocations:
>>>>> -      - VirtualAddress:  1
>>>>> -        SymbolName:      bssdata4
>>>>> -        Type:            IMAGE_REL_AMD64_ADDR32
>>>>> -      - VirtualAddress:  6
>>>>> -        SymbolName:      bsspad1
>>>>> -        Type:            IMAGE_REL_AMD64_ADDR32
>>>>> -      - VirtualAddress:  11
>>>>> -        SymbolName:      bssdata64
>>>>> -        Type:            IMAGE_REL_AMD64_ADDR32
>>>>> -      - VirtualAddress:  16
>>>>> -        SymbolName:      bsspad2
>>>>> -        Type:            IMAGE_REL_AMD64_ADDR32
>>>>> -      - VirtualAddress:  21
>>>>> -        SymbolName:      bssdata16
>>>>> -        Type:            IMAGE_REL_AMD64_ADDR32
>>>>> -  - Name:            .data
>>>>> -    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
>>>>> IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
>>>>> -    Alignment:       4
>>>>> -    SectionData:     03000000
>>>>> -symbols:
>>>>> -  - Name:            .text
>>>>> -    Value:           0
>>>>> -    SectionNumber:   1
>>>>> -    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> -    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> -    StorageClass:    IMAGE_SYM_CLASS_STATIC
>>>>> -    SectionDefinition:
>>>>> -      Length:          0
>>>>> -      NumberOfRelocations: 5
>>>>> -      NumberOfLinenumbers: 0
>>>>> -      CheckSum:        0
>>>>> -      Number:          0
>>>>> -  - Name:            .data
>>>>> -    Value:           0
>>>>> -    SectionNumber:   2
>>>>> -    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> -    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> -    StorageClass:    IMAGE_SYM_CLASS_STATIC
>>>>> -    SectionDefinition:
>>>>> -      Length:          4
>>>>> -      NumberOfRelocations: 0
>>>>> -      NumberOfLinenumbers: 0
>>>>> -      CheckSum:        0
>>>>> -      Number:          0
>>>>> -  - Name:            mainCRTStartup
>>>>> -    Value:           0
>>>>> -    SectionNumber:   1
>>>>> -    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> -    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
>>>>> -    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> -  - Name:            bssdata4
>>>>> -    Value:           4
>>>>> -    SectionNumber:   0
>>>>> -    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> -    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> -    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> -  - Name:            bsspad1
>>>>> -    Value:           1
>>>>> -    SectionNumber:   0
>>>>> -    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> -    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> -    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> -  - Name:            bssdata64
>>>>> -    Value:           64
>>>>> -    SectionNumber:   0
>>>>> -    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> -    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> -    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> -  - Name:            bsspad2
>>>>> -    Value:           1
>>>>> -    SectionNumber:   0
>>>>> -    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> -    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> -    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> -  - Name:            bssdata16
>>>>> -    Value:           16
>>>>> -    SectionNumber:   0
>>>>> -    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> -    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> -    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> -...
>>>>>
>>>>> Modified: lld/trunk/test/COFF/Inputs/icf1.yaml
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/icf1.yaml?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/icf1.yaml (original)
>>>>> +++ lld/trunk/test/COFF/Inputs/icf1.yaml Sun Jun 28 20:03:53 2015
>>>>> @@ -29,7 +29,7 @@ symbols:
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>>        Selection:       IMAGE_COMDAT_SELECT_ANY
>>>>> -  - Name:            mainCRTStartup
>>>>> +  - Name:            main
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>
>>>>> Modified: lld/trunk/test/COFF/Inputs/icf2.yaml
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/icf2.yaml?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/icf2.yaml (original)
>>>>> +++ lld/trunk/test/COFF/Inputs/icf2.yaml Sun Jun 28 20:03:53 2015
>>>>> @@ -25,7 +25,7 @@ symbols:
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>>        Selection:       IMAGE_COMDAT_SELECT_ANY
>>>>> -  # icf2 is identical with mainCRTStartup
>>>>> +  # icf2 is identical with main
>>>>>    - Name:            icf2
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>
>>>>> Modified: lld/trunk/test/COFF/Inputs/icf3.yaml
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/icf3.yaml?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/icf3.yaml (original)
>>>>> +++ lld/trunk/test/COFF/Inputs/icf3.yaml Sun Jun 28 20:03:53 2015
>>>>> @@ -25,7 +25,7 @@ symbols:
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>>        Selection:       IMAGE_COMDAT_SELECT_ANY
>>>>> -  # icf3 is *not* identical with mainCRTStartup because its
>>>>> relocation is different
>>>>> +  # icf3 is *not* identical with main because its relocation is
>>>>> different
>>>>>    - Name:            icf3
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>
>>>>> Modified: lld/trunk/test/COFF/Inputs/icf4.yaml
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/icf4.yaml?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/icf4.yaml (original)
>>>>> +++ lld/trunk/test/COFF/Inputs/icf4.yaml Sun Jun 28 20:03:53 2015
>>>>> @@ -25,7 +25,7 @@ symbols:
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>>        Selection:       IMAGE_COMDAT_SELECT_ANY
>>>>> -  # icf4 is *not* identical with mainCRTStartup because it has an
>>>>> associative section
>>>>> +  # icf4 is *not* identical with main because it has an associative
>>>>> section
>>>>>    - Name:            icf4
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>
>>>>> Modified: lld/trunk/test/COFF/Inputs/icf5.yaml
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/icf5.yaml?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/icf5.yaml (original)
>>>>> +++ lld/trunk/test/COFF/Inputs/icf5.yaml Sun Jun 28 20:03:53 2015
>>>>> @@ -21,7 +21,7 @@ symbols:
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>>        Selection:       IMAGE_COMDAT_SELECT_ANY
>>>>> -  # icf5 is *not* identical with its symbol value is different
>>>>> +  # icf5 is *not* identical with main because its symbol value is
>>>>> different
>>>>>    - Name:            icf5
>>>>>      Value:           5
>>>>>      SectionNumber:   1
>>>>>
>>>>> Modified: lld/trunk/test/COFF/Inputs/import.yaml
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/import.yaml?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/import.yaml (original)
>>>>> +++ lld/trunk/test/COFF/Inputs/import.yaml Sun Jun 28 20:03:53 2015
>>>>> @@ -20,7 +20,7 @@ symbols:
>>>>>        NumberOfLinenumbers: 0
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>> -  - Name:            mainCRTStartup
>>>>> +  - Name:            main
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>
>>>>> Modified: lld/trunk/test/COFF/Inputs/include1a.yaml
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/include1a.yaml?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/include1a.yaml (original)
>>>>> +++ lld/trunk/test/COFF/Inputs/include1a.yaml Sun Jun 28 20:03:53 2015
>>>>> @@ -24,7 +24,7 @@ symbols:
>>>>>        NumberOfLinenumbers: 0
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>> -  - Name:            mainCRTStartup
>>>>> +  - Name:            main
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>
>>>>> Modified: lld/trunk/test/COFF/Inputs/ret42.yaml
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/ret42.yaml?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/Inputs/ret42.yaml (original)
>>>>> +++ lld/trunk/test/COFF/Inputs/ret42.yaml Sun Jun 28 20:03:53 2015
>>>>> @@ -36,7 +36,7 @@ symbols:
>>>>>        NumberOfLinenumbers: 0
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>> -  - Name:            mainCRTStartup
>>>>> +  - Name:            main
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>
>>>>> Modified: lld/trunk/test/COFF/alternatename.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/alternatename.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/alternatename.test (original)
>>>>> +++ lld/trunk/test/COFF/alternatename.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,9 +1,9 @@
>>>>>  # RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.obj
>>>>>  # RUN: lld -flavor link2 /entry:foo /subsystem:console \
>>>>> -# RUN:   /alternatename:foo=mainCRTStartup /out:%t.exe %t.obj
>>>>> +# RUN:   /alternatename:foo=main /out:%t.exe %t.obj
>>>>>  # RUN: lld -flavor link2 /entry:foo /subsystem:console \
>>>>> -# RUN:   /alternatename:foo=mainCRTStartup \
>>>>> -# RUN:   /alternatename:foo=mainCRTStartup \
>>>>> +# RUN:   /alternatename:foo=main \
>>>>> +# RUN:   /alternatename:foo=main \
>>>>>  # RUN:   /alternatename:nosuchsym1=nosuchsym2 \
>>>>>  # RUN:   /out:%t.exe %t.obj
>>>>>
>>>>> @@ -26,7 +26,7 @@ sections:
>>>>>    - Name:            .drectve
>>>>>      Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
>>>>>      Alignment:       2147483648
>>>>> -    SectionData:
>>>>>  2f616c7465726e6174656e616d653a666f6f3d6d61696e4352545374617274757000  #
>>>>> /alternatename:foo=mainCRTStartup
>>>>> +    SectionData:
>>>>>  2f616c7465726e6174656e616d653a666f6f3d6d61696e00  # /alternatename:foo=main
>>>>>  symbols:
>>>>>    - Name:            '.text$mn'
>>>>>      Value:           0
>>>>> @@ -52,7 +52,7 @@ symbols:
>>>>>        NumberOfLinenumbers: 0
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>> -  - Name:            mainCRTStartup
>>>>> +  - Name:            main
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>
>>>>> Modified: lld/trunk/test/COFF/base.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/base.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/base.test (original)
>>>>> +++ lld/trunk/test/COFF/base.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,11 +1,11 @@
>>>>>  # RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.obj
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=DEFAULT %s
>>>>>
>>>>>  DEFAULT: ImageBase: 0x140000000
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj /base:0x280000000
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>> /base:0x280000000
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=BASE %s
>>>>>
>>>>>  BASE: ImageBase: 0x280000000
>>>>>
>>>>> Modified: lld/trunk/test/COFF/baserel.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/baserel.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/baserel.test (original)
>>>>> +++ lld/trunk/test/COFF/baserel.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,9 +1,9 @@
>>>>>  # RUN: yaml2obj < %s > %t.obj
>>>>>  #
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj %p/Inputs/std64.lib
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>> %p/Inputs/std64.lib
>>>>>  # RUN: llvm-readobj -coff-basereloc %t.exe | FileCheck %s
>>>>> -check-prefix=BASEREL
>>>>>  #
>>>>> -# RUN: lld -flavor link2 /out:%t.exe /fixed %t.obj %p/Inputs/std64.lib
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main /fixed %t.obj
>>>>> %p/Inputs/std64.lib
>>>>>  # RUN: llvm-readobj -coff-basereloc %t.exe | FileCheck %s
>>>>> -check-prefix=NOBASEREL
>>>>>  #
>>>>>  # BASEREL:      BaseReloc [
>>>>> @@ -43,11 +43,11 @@
>>>>>  # NOBASEREL:      BaseReloc [
>>>>>  # NOBASEREL-NEXT: ]
>>>>>  #
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj %p/Inputs/std64.lib
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>> %p/Inputs/std64.lib
>>>>>  # RUN: llvm-readobj -file-headers -sections %t.exe | FileCheck %s \
>>>>>  # RUN:   --check-prefix=BASEREL-HEADER
>>>>>  #
>>>>> -# RN: lld -flavor link2 /out:%t.exe /fixed %t.obj %p/Inputs/std64.lib
>>>>> +# RN: lld -flavor link2 /out:%t.exe /entry:main /fixed %t.obj
>>>>> %p/Inputs/std64.lib
>>>>>  # RN: llvm-readobj -file-headers %t.exe | FileCheck %s \
>>>>>  # RN:   --check-prefix=NOBASEREL-HEADER
>>>>>  #
>>>>> @@ -188,7 +188,7 @@ symbols:
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>      ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>>      StorageClass:    IMAGE_SYM_CLASS_STATIC
>>>>> -  - Name:            mainCRTStartup
>>>>> +  - Name:            main
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>
>>>>> Modified: lld/trunk/test/COFF/common.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/common.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/common.test (original)
>>>>> +++ lld/trunk/test/COFF/common.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,10 +1,102 @@
>>>>> -# RUN: yaml2obj %p/Inputs/common.yaml > %t.obj
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj %t.obj
>>>>> +# RUN: yaml2obj %s > %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj %t.obj
>>>>>  # RUN: llvm-objdump -d %t.exe | FileCheck %s
>>>>>
>>>>>  # Operands of B8 (MOV EAX) are common symbols
>>>>> -CHECK: 3000: b8 00 10 00 40
>>>>> -CHECK: 3005: b8 04 10 00 40
>>>>> -CHECK: 300a: b8 20 10 00 40
>>>>> -CHECK: 300f: b8 60 10 00 40
>>>>> -CHECK: 3014: b8 80 10 00 40
>>>>> +# CHECK: 3000: b8 00 10 00 40
>>>>> +# CHECK: 3005: b8 04 10 00 40
>>>>> +# CHECK: 300a: b8 20 10 00 40
>>>>> +# CHECK: 300f: b8 60 10 00 40
>>>>> +# CHECK: 3014: b8 80 10 00 40
>>>>> +
>>>>> +---
>>>>> +header:
>>>>> +  Machine:         IMAGE_FILE_MACHINE_AMD64
>>>>> +  Characteristics: []
>>>>> +sections:
>>>>> +  - Name:            .text
>>>>> +    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE,
>>>>> IMAGE_SCN_MEM_READ ]
>>>>> +    Alignment:       4
>>>>> +    SectionData:
>>>>>  b800000000b800000000b800000000b800000000b800000000
>>>>> +    Relocations:
>>>>> +      - VirtualAddress:  1
>>>>> +        SymbolName:      bssdata4
>>>>> +        Type:            IMAGE_REL_AMD64_ADDR32
>>>>> +      - VirtualAddress:  6
>>>>> +        SymbolName:      bsspad1
>>>>> +        Type:            IMAGE_REL_AMD64_ADDR32
>>>>> +      - VirtualAddress:  11
>>>>> +        SymbolName:      bssdata64
>>>>> +        Type:            IMAGE_REL_AMD64_ADDR32
>>>>> +      - VirtualAddress:  16
>>>>> +        SymbolName:      bsspad2
>>>>> +        Type:            IMAGE_REL_AMD64_ADDR32
>>>>> +      - VirtualAddress:  21
>>>>> +        SymbolName:      bssdata16
>>>>> +        Type:            IMAGE_REL_AMD64_ADDR32
>>>>> +  - Name:            .data
>>>>> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
>>>>> IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
>>>>> +    Alignment:       4
>>>>> +    SectionData:     03000000
>>>>> +symbols:
>>>>> +  - Name:            .text
>>>>> +    Value:           0
>>>>> +    SectionNumber:   1
>>>>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
>>>>> +    SectionDefinition:
>>>>> +      Length:          0
>>>>> +      NumberOfRelocations: 5
>>>>> +      NumberOfLinenumbers: 0
>>>>> +      CheckSum:        0
>>>>> +      Number:          0
>>>>> +  - Name:            .data
>>>>> +    Value:           0
>>>>> +    SectionNumber:   2
>>>>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
>>>>> +    SectionDefinition:
>>>>> +      Length:          4
>>>>> +      NumberOfRelocations: 0
>>>>> +      NumberOfLinenumbers: 0
>>>>> +      CheckSum:        0
>>>>> +      Number:          0
>>>>> +  - Name:            main
>>>>> +    Value:           0
>>>>> +    SectionNumber:   1
>>>>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> +    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
>>>>> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> +  - Name:            bssdata4
>>>>> +    Value:           4
>>>>> +    SectionNumber:   0
>>>>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> +  - Name:            bsspad1
>>>>> +    Value:           1
>>>>> +    SectionNumber:   0
>>>>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> +  - Name:            bssdata64
>>>>> +    Value:           64
>>>>> +    SectionNumber:   0
>>>>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> +  - Name:            bsspad2
>>>>> +    Value:           1
>>>>> +    SectionNumber:   0
>>>>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> +  - Name:            bssdata16
>>>>> +    Value:           16
>>>>> +    SectionNumber:   0
>>>>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> +...
>>>>>
>>>>> Modified: lld/trunk/test/COFF/dll.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/dll.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/dll.test (original)
>>>>> +++ lld/trunk/test/COFF/dll.test Sun Jun 28 20:03:53 2015
>>>>> @@ -27,15 +27,15 @@ EXPORT-LTO-NEXT:       2   0x1020  expor
>>>>>  EXPORT-LTO-NEXT:       3   0x1030  exportfn3
>>>>>
>>>>>  # RUN: yaml2obj < %p/Inputs/import.yaml > %t2.obj
>>>>> -# RUN: lld -flavor link2 /out:%t2.exe %t2.obj %t.lib
>>>>> +# RUN: lld -flavor link2 /out:%t2.exe /entry:main %t2.obj %t.lib
>>>>>  # RUN: llvm-readobj -coff-imports %t2.exe | FileCheck
>>>>> -check-prefix=IMPORT %s
>>>>>
>>>>>  # RUN: lld -flavor link2 /out:%t.dll /dll %t.obj /implib:%t2.lib \
>>>>>  # RUN:   /export:exportfn1 /export:exportfn2
>>>>> -# RUN: lld -flavor link2 /out:%t2.exe %t2.obj %t2.lib
>>>>> +# RUN: lld -flavor link2 /out:%t2.exe /entry:main %t2.obj %t2.lib
>>>>>  # RUN: llvm-readobj -coff-imports %t2.exe | FileCheck
>>>>> -check-prefix=IMPORT %s
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t2.lto.exe %t2.obj %t.lto.lib
>>>>> +# RUN: lld -flavor link2 /out:%t2.lto.exe /entry:main %t2.obj
>>>>> %t.lto.lib
>>>>>  # RUN: llvm-readobj -coff-imports %t2.lto.exe | FileCheck
>>>>> -check-prefix=IMPORT %s
>>>>>
>>>>>  IMPORT: Symbol: exportfn1
>>>>>
>>>>> Modified: lld/trunk/test/COFF/entrylib.ll
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/entrylib.ll?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/entrylib.ll (original)
>>>>> +++ lld/trunk/test/COFF/entrylib.ll Sun Jun 28 20:03:53 2015
>>>>> @@ -1,11 +1,11 @@
>>>>>  ; RUN: llvm-as -o %t.obj %s
>>>>>  ; RUN: rm -f %t.lib
>>>>>  ; RUN: llvm-ar cru %t.lib %t.obj
>>>>> -; RUN: lld -flavor link2 /out:%t.exe %t.lib
>>>>> +; RUN: lld -flavor link2 /out:%t.exe /entry:main %t.lib
>>>>>
>>>>>  target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
>>>>>  target triple = "x86_64-pc-windows-msvc"
>>>>>
>>>>> -define i32 @mainCRTStartup() {
>>>>> +define i32 @main() {
>>>>>    ret i32 0
>>>>>  }
>>>>>
>>>>> Modified: lld/trunk/test/COFF/filetype.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/filetype.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/filetype.test (original)
>>>>> +++ lld/trunk/test/COFF/filetype.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,4 +1,4 @@
>>>>>  # Make sure input file type is detected by file magic and not by
>>>>> extension.
>>>>>
>>>>>  # RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.lib
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.lib
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.lib
>>>>>
>>>>> Modified: lld/trunk/test/COFF/force.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/force.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/force.test (original)
>>>>> +++ lld/trunk/test/COFF/force.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,7 +1,7 @@
>>>>>  # RUN: yaml2obj < %s > %t.obj
>>>>> -# RUN: not lld -flavor link2 /out:%t.exe %t.obj >& %t.log
>>>>> +# RUN: not lld -flavor link2 /out:%t.exe /entry:main %t.obj >& %t.log
>>>>>  # RUN: FileCheck %s < %t.log
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj /force >& %t.log
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj /force >&
>>>>> %t.log
>>>>>  # RUN: FileCheck %s < %t.log
>>>>>
>>>>>  # CHECK: undefined symbol: foo
>>>>> @@ -28,7 +28,7 @@ symbols:
>>>>>        NumberOfLinenumbers: 0
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>> -  - Name:            mainCRTStartup
>>>>> +  - Name:            main
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>
>>>>> Modified: lld/trunk/test/COFF/heap.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/heap.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/heap.test (original)
>>>>> +++ lld/trunk/test/COFF/heap.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,24 +1,24 @@
>>>>>  # RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.obj
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=DEFAULT %s
>>>>>
>>>>>  DEFAULT: SizeOfHeapReserve: 1048576
>>>>>  DEFAULT: SizeOfHeapCommit: 4096
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe /heap:0x3000 %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main /heap:0x3000 %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=CHECK1 %s
>>>>>  # RUN: echo "HEAPSIZE 12288" > %t.def
>>>>> -# RUN: lld -flavor link2 /out:%t.exe /def:%t.def %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main /def:%t.def %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=CHECK1 %s
>>>>>
>>>>>  CHECK1: SizeOfHeapReserve: 12288
>>>>>  CHECK1: SizeOfHeapCommit: 4096
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe /heap:0x5000,0x3000 %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main /heap:0x5000,0x3000
>>>>> %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=CHECK2 %s
>>>>>  # RUN: echo "HEAPSIZE 20480,12288" > %t.def
>>>>> -# RUN: lld -flavor link2 /out:%t.exe /def:%t.def %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main /def:%t.def %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=CHECK2 %s
>>>>>
>>>>>  CHECK2: SizeOfHeapReserve: 20480
>>>>>
>>>>> Modified: lld/trunk/test/COFF/icf.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/icf.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/icf.test (original)
>>>>> +++ lld/trunk/test/COFF/icf.test Sun Jun 28 20:03:53 2015
>>>>> @@ -4,12 +4,13 @@
>>>>>  # RUN: yaml2obj < %p/Inputs/icf4.yaml > %t4.obj
>>>>>  # RUN: yaml2obj < %p/Inputs/icf5.yaml > %t5.obj
>>>>>  #
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t1.obj %t2.obj %t3.obj %t4.obj
>>>>> %t5.obj \
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main \
>>>>> +# RUN:   %t1.obj %t2.obj %t3.obj %t4.obj %t5.obj \
>>>>>  # RUN:   /opt:lldicf /include:icf2 /include:icf3 /include:icf4
>>>>> /include:icf5 \
>>>>>  # RUN:   /verbose >& %t.log
>>>>>  # RUN: FileCheck %s < %t.log
>>>>>
>>>>> -CHECK-NOT: Replaced mainCRTStartup
>>>>> +CHECK-NOT: Replaced main
>>>>>  CHECK:     Replaced icf2
>>>>>  CHECK-NOT: Replaced icf3
>>>>>  CHECK-NOT: Replaced icf4
>>>>>
>>>>> Modified: lld/trunk/test/COFF/include.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/include.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/include.test (original)
>>>>> +++ lld/trunk/test/COFF/include.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,11 +1,11 @@
>>>>>  # RUN: yaml2obj < %s > %t.obj
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj /verbose >& %t.log
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj /verbose >&
>>>>> %t.log
>>>>>  ### FileCheck doesn't like empty input, so write something.
>>>>>  # RUN: echo dummy >> %t.log
>>>>>  # RUN: FileCheck -check-prefix=CHECK1 %s < %t.log
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj /verbose /include:unused
>>>>> >& %t.log
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj /verbose
>>>>> /include:unused >& %t.log
>>>>>  # RUN: echo dummy >> %t.log
>>>>>  # RUN: FileCheck -check-prefix=CHECK2 %s < %t.log
>>>>>
>>>>> @@ -62,7 +62,7 @@ symbols:
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>>        Selection:       IMAGE_COMDAT_SELECT_ANY
>>>>> -  - Name:            mainCRTStartup
>>>>> +  - Name:            main
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>
>>>>> Modified: lld/trunk/test/COFF/include2.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/include2.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/include2.test (original)
>>>>> +++ lld/trunk/test/COFF/include2.test Sun Jun 28 20:03:53 2015
>>>>> @@ -4,7 +4,7 @@
>>>>>  # RUN: rm -f %t2.lib %t3.lib
>>>>>  # RUN: llvm-ar cru %t2.lib %t2.obj
>>>>>  # RUN: llvm-ar cru %t3.lib %t3.obj
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t1.obj %t2.lib %t3.lib /verbose
>>>>> >& %t.log
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t1.obj %t2.lib
>>>>> %t3.lib /verbose >& %t.log
>>>>>  # RUN: FileCheck %s < %t.log
>>>>>
>>>>>  CHECK: include2.test.tmp1.obj
>>>>>
>>>>> Modified: lld/trunk/test/COFF/internal.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/internal.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/internal.test (original)
>>>>> +++ lld/trunk/test/COFF/internal.test Sun Jun 28 20:03:53 2015
>>>>> @@ -3,7 +3,7 @@
>>>>>  # RUN: yaml2obj < %s > %t1.obj
>>>>>  # RUN: yaml2obj < %s > %t2.obj
>>>>>  # RUN: yaml2obj < %p/Inputs/ret42.yaml > %t3.obj
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t1.obj %t2.obj %t3.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t1.obj %t2.obj
>>>>> %t3.obj
>>>>>
>>>>>  ---
>>>>>  header:
>>>>>
>>>>> Modified: lld/trunk/test/COFF/linkenv.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/linkenv.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/linkenv.test (original)
>>>>> +++ lld/trunk/test/COFF/linkenv.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,6 +1,4 @@
>>>>> -# RUN: env LINK="-help -foo" lld -flavor link2 > %t1.log 2> %t2.log
>>>>> -# RUN: FileCheck -check-prefix=STDOUT %s < %t1.log
>>>>> -# RUN: FileCheck -check-prefix=STDERR %s < %t2.log
>>>>> +# RUN: env LINK=-help lld -flavor link2 > %t.log
>>>>> +# RUN: FileCheck %s < %t.log
>>>>>
>>>>> -STDOUT: OVERVIEW: LLVM Linker
>>>>> -STDERR: unknown argument: -foo
>>>>> +CHECK: OVERVIEW: LLVM Linker
>>>>>
>>>>> Modified: lld/trunk/test/COFF/lldmap.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/lldmap.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/lldmap.test (original)
>>>>> +++ lld/trunk/test/COFF/lldmap.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,8 +1,8 @@
>>>>>  # RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.obj
>>>>> -# RUN: lld -flavor link2 /out:%t.exe /lldmap:%t.map %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main /lldmap:%t.map %t.obj
>>>>>  # RUN: FileCheck %s < %t.map
>>>>>
>>>>>  # CHECK: .obj:
>>>>>  # CHECK-NEXT: 140001000 .text$mn
>>>>>  # CHECK-NEXT: 140001000 .data
>>>>> -# CHECK-NEXT: 140001000 mainCRTStartup
>>>>> +# CHECK-NEXT: 140001000 main
>>>>>
>>>>> Modified: lld/trunk/test/COFF/locally-imported.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/locally-imported.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/locally-imported.test (original)
>>>>> +++ lld/trunk/test/COFF/locally-imported.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,5 +1,5 @@
>>>>>  # RUN: yaml2obj < %s > %t.obj
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-objdump -s %t.exe | FileCheck %s
>>>>>
>>>>>  # CHECK:      Contents of section .text:
>>>>> @@ -19,7 +19,7 @@ sections:
>>>>>      SectionData:     00000000
>>>>>      Relocations:
>>>>>        - VirtualAddress:  0
>>>>> -        SymbolName:      __imp_mainCRTStartup
>>>>> +        SymbolName:      __imp_main
>>>>>          Type:            IMAGE_REL_AMD64_ADDR32NB
>>>>>  symbols:
>>>>>    - Name:            .text
>>>>> @@ -35,13 +35,13 @@ symbols:
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>>        Selection:       IMAGE_COMDAT_SELECT_ANY
>>>>> -  - Name:            mainCRTStartup
>>>>> +  - Name:            main
>>>>>      Value:           4
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>      ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
>>>>>      StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> -  - Name:            __imp_mainCRTStartup
>>>>> +  - Name:            __imp_main
>>>>>      Value:           0
>>>>>      SectionNumber:   0
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>
>>>>> Modified: lld/trunk/test/COFF/long-section-name.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/long-section-name.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/long-section-name.test (original)
>>>>> +++ lld/trunk/test/COFF/long-section-name.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,7 +1,10 @@
>>>>>  # RUN: yaml2obj < %s > %t.obj
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -sections %t.exe | FileCheck %s
>>>>>
>>>>> +# CHECK: Name: .data_long_section_name
>>>>> +# CHECK: Name: .text_long_section_name
>>>>> +
>>>>>  ---
>>>>>  header:
>>>>>    Machine:         IMAGE_FILE_MACHINE_AMD64
>>>>> @@ -46,13 +49,10 @@ symbols:
>>>>>        NumberOfLinenumbers: 0
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>> -  - Name:            mainCRTStartup
>>>>> +  - Name:            main
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>      ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>>      StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>>  ...
>>>>> -
>>>>> -# CHECK: Name: .data_long_section_name
>>>>> -# CHECK: Name: .text_long_section_name
>>>>>
>>>>> Modified: lld/trunk/test/COFF/manifest.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/manifest.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/manifest.test (original)
>>>>> +++ lld/trunk/test/COFF/manifest.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,6 +1,6 @@
>>>>>  # RUN: yaml2obj %p/Inputs/ret42.yaml > %t.obj
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: FileCheck -check-prefix=MANIFEST %s < %t.exe.manifest
>>>>>
>>>>>  MANIFEST: <?xml version="1.0" standalone="yes"?>
>>>>> @@ -15,7 +15,8 @@ MANIFEST:     </security>
>>>>>  MANIFEST:   </trustInfo>
>>>>>  MANIFEST: </assembly>
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe
>>>>> /manifestuac:"level='requireAdministrator' uiAccess='true'" %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main \
>>>>> +# RUN:   /manifestuac:"level='requireAdministrator' uiAccess='true'"
>>>>> %t.obj
>>>>>  # RUN: FileCheck -check-prefix=UAC %s < %t.exe.manifest
>>>>>
>>>>>  UAC: <?xml version="1.0" standalone="yes"?>
>>>>> @@ -30,7 +31,8 @@ UAC:     </security>
>>>>>  UAC:   </trustInfo>
>>>>>  UAC: </assembly>
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe /manifestdependency:"foo='bar'"
>>>>> %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main \
>>>>> +# RUN:   /manifestdependency:"foo='bar'" %t.obj
>>>>>  # RUN: FileCheck -check-prefix=DEPENDENCY %s < %t.exe.manifest
>>>>>
>>>>>  DEPENDENCY: <?xml version="1.0" standalone="yes"?>
>>>>> @@ -50,7 +52,7 @@ DEPENDENCY:     </dependentAssembly>
>>>>>  DEPENDENCY:   </dependency>
>>>>>  DEPENDENCY: </assembly>
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe /manifestuac:no %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main /manifestuac:no
>>>>> %t.obj
>>>>>  # RUN: FileCheck -check-prefix=NOUAC %s < %t.exe.manifest
>>>>>
>>>>>  NOUAC: <?xml version="1.0" standalone="yes"?>
>>>>>
>>>>> Modified: lld/trunk/test/COFF/opt.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/opt.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/opt.test (original)
>>>>> +++ lld/trunk/test/COFF/opt.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,11 +1,13 @@
>>>>>  # RUN: yaml2obj < %s > %t.obj
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj /verbose >& %t.log
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj \
>>>>> +# RUN:   /verbose >& %t.log
>>>>>  ### FileCheck doesn't like empty input, so write something.
>>>>>  # RUN: echo dummy >> %t.log
>>>>>  # RUN: FileCheck -check-prefix=CHECK1 %s < %t.log
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj /verbose /opt:noref >&
>>>>> %t.log
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj \
>>>>> +# RUN:   /verbose /opt:noref >& %t.log
>>>>>  # RUN: echo dummy >> %t.log
>>>>>  # RUN: FileCheck -check-prefix=CHECK2 %s < %t.log
>>>>>
>>>>> @@ -52,7 +54,7 @@ symbols:
>>>>>        CheckSum:        0
>>>>>        Number:          0
>>>>>        Selection:       IMAGE_COMDAT_SELECT_ANY
>>>>> -  - Name:            mainCRTStartup
>>>>> +  - Name:            main
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>
>>>>> Modified: lld/trunk/test/COFF/options.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/options.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/options.test (original)
>>>>> +++ lld/trunk/test/COFF/options.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,51 +1,51 @@
>>>>>  # RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.obj
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=BIND %s
>>>>> -# RUN: lld -flavor link2 /allowbind /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /allowbind /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=BIND %s
>>>>>  BIND-NOT: IMAGE_DLL_CHARACTERISTICS_NO_BIND
>>>>>
>>>>> -# RUN: lld -flavor link2 /allowbind:no /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /allowbind:no /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=NOBIND %s
>>>>>  NOBIND: IMAGE_DLL_CHARACTERISTICS_NO_BIND
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=ISO %s
>>>>> -# RUN: lld -flavor link2 /allowisolation /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /allowisolation /out:%t.exe /entry:main
>>>>> %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=ISO %s
>>>>>  ISO-NOT: IMAGE_DLL_CHARACTERISTICS_NO_ISOLATION
>>>>>
>>>>> -# RUN: lld -flavor link2 /allowisolation:no /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /allowisolation:no /out:%t.exe /entry:main
>>>>> %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=NOISO %s
>>>>>  NOISO: IMAGE_DLL_CHARACTERISTICS_NO_ISOLATION
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=ENT %s
>>>>> -# RUN: lld -flavor link2 /highentropyva /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main /highentropyva %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=ENT %s
>>>>>  ENT: IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA
>>>>>
>>>>> -# RUN: lld -flavor link2 /highentropyva:no /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /highentropyva:no /out:%t.exe
>>>>> /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=NOENT %s
>>>>>  NOENT-NOT: IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA
>>>>>
>>>>> -# RUN: lld -flavor link2 %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=NXCOMPAT %s
>>>>> -# RUN: lld -flavor link2 /nxcompat %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main /nxcompat %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=NXCOMPAT %s
>>>>>  NXCOMPAT: IMAGE_DLL_CHARACTERISTICS_NX_COMPAT
>>>>>
>>>>> -# RUN: lld -flavor link2 /nxcompat:no /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /nxcompat:no /out:%t.exe
>>>>> /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=NONXCOMPAT %s
>>>>>  NONXCOMPAT-NOT: IMAGE_DLL_CHARACTERISTICS_NX_COMPAT
>>>>>
>>>>> -# RUN: lld -flavor link2 %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=TSAWARE %s
>>>>> -# RUN: lld -flavor link2 /tsaware %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main /tsaware %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=TSAWARE %s
>>>>>  TSAWARE: IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE
>>>>>
>>>>> -# RUN: lld -flavor link2 /tsaware:no /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /tsaware:no /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=NOTSAWARE %s
>>>>>  NOTSAWARE-NOT: IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE
>>>>>
>>>>> Modified: lld/trunk/test/COFF/order.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/order.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/order.test (original)
>>>>> +++ lld/trunk/test/COFF/order.test Sun Jun 28 20:03:53 2015
>>>>> @@ -4,7 +4,8 @@
>>>>>  # RUN: rm -f %t2.lib %t3.lib
>>>>>  # RUN: llvm-ar cru %t2.lib %t2.obj
>>>>>  # RUN: llvm-ar cru %t3.lib %t3.obj
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t1.obj %t2.lib %t3.obj %t3.lib
>>>>> /verbose >& %t.log
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main \
>>>>> +# RUN:   %t1.obj %t2.lib %t3.obj %t3.lib /verbose >& %t.log
>>>>>  # RUN: FileCheck %s < %t.log
>>>>>
>>>>>  CHECK: order.test.tmp1.obj
>>>>>
>>>>> Modified: lld/trunk/test/COFF/out.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/out.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/out.test (original)
>>>>> +++ lld/trunk/test/COFF/out.test Sun Jun 28 20:03:53 2015
>>>>> @@ -5,9 +5,9 @@
>>>>>  # RUN: cp %t.obj %T/out/tmp/out2
>>>>>  # RUN: cp %t.obj %T/out/tmp/out3.xyz
>>>>>
>>>>> -# RUN: lld -flavor link2 %T/out/out1.obj
>>>>> -# RUN: lld -flavor link2 %T/out/tmp/out2
>>>>> -# RUN: lld -flavor link2 %T/out/tmp/out3.xyz
>>>>> +# RUN: lld -flavor link2 /entry:main %T/out/out1.obj
>>>>> +# RUN: lld -flavor link2 /entry:main %T/out/tmp/out2
>>>>> +# RUN: lld -flavor link2 /entry:main %T/out/tmp/out3.xyz
>>>>>
>>>>>  # RUN: llvm-readobj out1.exe | FileCheck %s
>>>>>  # RUN: llvm-readobj out2.exe | FileCheck %s
>>>>>
>>>>> Modified: lld/trunk/test/COFF/resource.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/resource.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/resource.test (original)
>>>>> +++ lld/trunk/test/COFF/resource.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,7 +1,7 @@
>>>>>  # REQUIRES: winres
>>>>>
>>>>>  # RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.obj
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj %p/Inputs/resource.res
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>> %p/Inputs/resource.res
>>>>>
>>>>>  # Check if the binary contains UTF-16LE string "Hello" copied from
>>>>> resource.res.
>>>>>  # RUN: FileCheck --check-prefix=EXE %s < %t.exe
>>>>>
>>>>> Modified: lld/trunk/test/COFF/responsefile.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/responsefile.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/responsefile.test (original)
>>>>> +++ lld/trunk/test/COFF/responsefile.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,6 +1,6 @@
>>>>>  # RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.obj
>>>>>
>>>>> -# RUN: echo /out:%t.exe %t.obj > %t.rsp
>>>>> +# RUN: echo /out:%t.exe /entry:main %t.obj > %t.rsp
>>>>>  # RUN: lld -flavor link2 @%t.rsp /heap:0x3000
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck %s
>>>>>
>>>>>
>>>>> Modified: lld/trunk/test/COFF/stack.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/stack.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/stack.test (original)
>>>>> +++ lld/trunk/test/COFF/stack.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,24 +1,24 @@
>>>>>  # RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.obj
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=DEFAULT %s
>>>>>
>>>>>  DEFAULT: SizeOfStackReserve: 1048576
>>>>>  DEFAULT: SizeOfStackCommit: 4096
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj /stack:0x3000
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj /stack:0x3000
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=CHECK1 %s
>>>>>  # RUN: echo "STACKSIZE 12288" > %t.def
>>>>> -# RUN: lld -flavor link2 /out:%t.exe /def:%t.def %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main /def:%t.def %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=CHECK1 %s
>>>>>
>>>>>  CHECK1: SizeOfStackReserve: 12288
>>>>>  CHECK1: SizeOfStackCommit: 4096
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj /stack:0x5000,0x3000
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>> /stack:0x5000,0x3000
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=CHECK2 %s
>>>>>  # RUN: echo "STACKSIZE 20480,12288" > %t.def
>>>>> -# RUN: lld -flavor link2 /out:%t.exe /def:%t.def %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main /def:%t.def %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=CHECK2 %s
>>>>>
>>>>>  CHECK2: SizeOfStackReserve: 20480
>>>>>
>>>>> Modified: lld/trunk/test/COFF/subsystem-inference.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/subsystem-inference.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/subsystem-inference.test (original)
>>>>> +++ lld/trunk/test/COFF/subsystem-inference.test Sun Jun 28 20:03:53
>>>>> 2015
>>>>> @@ -1,16 +1,16 @@
>>>>> -# RUN: sed -e s/ENTRYNAME/mainCRTStartup/ %s | yaml2obj > %t.obj
>>>>> +# RUN: sed -e s/ENTRYNAME/main/ %s | yaml2obj > %t.obj
>>>>>  # RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=MAIN %s
>>>>>
>>>>> -# RUN: sed s/ENTRYNAME/wmainCRTStartup/ %s | yaml2obj > %t.obj
>>>>> +# RUN: sed s/ENTRYNAME/wmain/ %s | yaml2obj > %t.obj
>>>>>  # RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=WMAIN %s
>>>>>
>>>>> -# RUN: sed s/ENTRYNAME/WinMainCRTStartup/ %s | yaml2obj > %t.obj
>>>>> +# RUN: sed s/ENTRYNAME/WinMain/ %s | yaml2obj > %t.obj
>>>>>  # RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=WINMAIN %s
>>>>>
>>>>> -# RUN: sed s/ENTRYNAME/wWinMainCRTStartup/ %s | yaml2obj > %t.obj
>>>>> +# RUN: sed s/ENTRYNAME/wWinMain/ %s | yaml2obj > %t.obj
>>>>>  # RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=WWINMAIN %s
>>>>>
>>>>> @@ -45,6 +45,30 @@ symbols:
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> +  - Name:            mainCRTStartup
>>>>> +    Value:           0
>>>>> +    SectionNumber:   1
>>>>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> +  - Name:            wmainCRTStartup
>>>>> +    Value:           0
>>>>> +    SectionNumber:   1
>>>>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> +  - Name:            WinMainCRTStartup
>>>>> +    Value:           0
>>>>> +    SectionNumber:   1
>>>>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> +  - Name:            wWinMainCRTStartup
>>>>> +    Value:           0
>>>>> +    SectionNumber:   1
>>>>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>      ComplexType:     IMAGE_SYM_DTYPE_NULL
>>>>>      StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>>  ...
>>>>>
>>>>> Modified: lld/trunk/test/COFF/unwind.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/unwind.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/unwind.test (original)
>>>>> +++ lld/trunk/test/COFF/unwind.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,6 +1,6 @@
>>>>>  # RUN: yaml2obj < %s > %t.obj
>>>>>  #
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=HEADER %s
>>>>>  # RUN: llvm-objdump -unwind-info %t.exe | FileCheck
>>>>> -check-prefix=UNWIND %s
>>>>>  #
>>>>> @@ -183,7 +183,7 @@ symbols:
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>      ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
>>>>>      StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>>>> -  - Name:            mainCRTStartup
>>>>> +  - Name:            main
>>>>>      Value:           0
>>>>>      SectionNumber:   1
>>>>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>>>>
>>>>> Modified: lld/trunk/test/COFF/version.test
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/version.test?rev=240922&r1=240921&r2=240922&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lld/trunk/test/COFF/version.test (original)
>>>>> +++ lld/trunk/test/COFF/version.test Sun Jun 28 20:03:53 2015
>>>>> @@ -1,18 +1,18 @@
>>>>>  # RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.obj
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=DEFAULT %s
>>>>>
>>>>>  DEFAULT: MajorImageVersion: 0
>>>>>  DEFAULT: MinorImageVersion: 0
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj /version:11
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj /version:11
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=CHECK1 %s
>>>>>
>>>>>  CHECK1: MajorImageVersion: 11
>>>>>  CHECK1: MinorImageVersion: 0
>>>>>
>>>>> -# RUN: lld -flavor link2 /out:%t.exe %t.obj /version:11.22
>>>>> +# RUN: lld -flavor link2 /out:%t.exe /entry:main %t.obj /version:11.22
>>>>>  # RUN: llvm-readobj -file-headers %t.exe | FileCheck
>>>>> -check-prefix=CHECK2 %s
>>>>>
>>>>>  CHECK2: MajorImageVersion: 11
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> llvm-commits mailing list
>>>>> llvm-commits at cs.uiuc.edu
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>>>
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150716/db32411a/attachment.html>


More information about the llvm-commits mailing list