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

Sean Silva chisophugis at gmail.com
Wed Jul 15 15:46:31 PDT 2015


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/20150715/b50fd258/attachment.html>


More information about the llvm-commits mailing list