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

Sean Silva chisophugis at gmail.com
Thu Jul 16 14:51:36 PDT 2015


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.

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


More information about the llvm-commits mailing list