diff options
Diffstat (limited to 'lld/unittests/DriverTests')
| -rw-r--r-- | lld/unittests/DriverTests/DarwinLdDriverTest.cpp | 70 | ||||
| -rw-r--r-- | lld/unittests/DriverTests/GnuLdDriverTest.cpp | 8 | ||||
| -rw-r--r-- | lld/unittests/DriverTests/WinLinkDriverTest.cpp | 145 |
3 files changed, 111 insertions, 112 deletions
diff --git a/lld/unittests/DriverTests/DarwinLdDriverTest.cpp b/lld/unittests/DriverTests/DarwinLdDriverTest.cpp index 494c877b4a5..1af1a34fad5 100644 --- a/lld/unittests/DriverTests/DarwinLdDriverTest.cpp +++ b/lld/unittests/DriverTests/DarwinLdDriverTest.cpp @@ -29,7 +29,7 @@ protected: }; TEST_F(DarwinLdParserTest, Basic) { - EXPECT_FALSE(parse("ld", "foo.o", "bar.o", nullptr)); + EXPECT_TRUE(parse("ld", "foo.o", "bar.o", nullptr)); EXPECT_FALSE(_context.allowRemainingUndefines()); EXPECT_FALSE(_context.deadStrip()); EXPECT_EQ(2, inputFileCount()); @@ -38,187 +38,187 @@ TEST_F(DarwinLdParserTest, Basic) { } TEST_F(DarwinLdParserTest, Output) { - EXPECT_FALSE(parse("ld", "-o", "my.out", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-o", "my.out", "foo.o", nullptr)); EXPECT_EQ("my.out", _context.outputPath()); } TEST_F(DarwinLdParserTest, Dylib) { - EXPECT_FALSE(parse("ld", "-dylib", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-dylib", "foo.o", nullptr)); EXPECT_EQ(mach_o::MH_DYLIB, _context.outputFileType()); } TEST_F(DarwinLdParserTest, Relocatable) { - EXPECT_FALSE(parse("ld", "-r", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-r", "foo.o", nullptr)); EXPECT_EQ(mach_o::MH_OBJECT, _context.outputFileType()); } TEST_F(DarwinLdParserTest, Bundle) { - EXPECT_FALSE(parse("ld", "-bundle", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-bundle", "foo.o", nullptr)); EXPECT_EQ(mach_o::MH_BUNDLE, _context.outputFileType()); } TEST_F(DarwinLdParserTest, Preload) { - EXPECT_FALSE(parse("ld", "-preload", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-preload", "foo.o", nullptr)); EXPECT_EQ(mach_o::MH_PRELOAD, _context.outputFileType()); } TEST_F(DarwinLdParserTest, Static) { - EXPECT_FALSE(parse("ld", "-static", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-static", "foo.o", nullptr)); EXPECT_EQ(mach_o::MH_EXECUTE, _context.outputFileType()); } TEST_F(DarwinLdParserTest, Entry) { - EXPECT_FALSE(parse("ld", "-e", "entryFunc", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-e", "entryFunc", "foo.o", nullptr)); EXPECT_EQ("entryFunc", _context.entrySymbolName()); } TEST_F(DarwinLdParserTest, OutputPath) { - EXPECT_FALSE(parse("ld", "-o", "foo", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-o", "foo", "foo.o", nullptr)); EXPECT_EQ("foo", _context.outputPath()); } TEST_F(DarwinLdParserTest, DeadStrip) { - EXPECT_FALSE(parse("ld", "-dead_strip", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-dead_strip", "foo.o", nullptr)); EXPECT_TRUE(_context.deadStrip()); } TEST_F(DarwinLdParserTest, DeadStripRootsExe) { - EXPECT_FALSE(parse("ld", "-dead_strip", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-dead_strip", "foo.o", nullptr)); EXPECT_FALSE(_context.globalsAreDeadStripRoots()); } TEST_F(DarwinLdParserTest, DeadStripRootsDylib) { - EXPECT_FALSE(parse("ld", "-dylib", "-dead_strip", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-dylib", "-dead_strip", "foo.o", nullptr)); EXPECT_TRUE(_context.globalsAreDeadStripRoots()); } TEST_F(DarwinLdParserTest, Arch) { - EXPECT_FALSE(parse("ld", "-arch", "x86_64", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-arch", "x86_64", "foo.o", nullptr)); EXPECT_EQ(MachOLinkingContext::arch_x86_64, _context.arch()); EXPECT_EQ(mach_o::CPU_TYPE_X86_64, _context.getCPUType()); EXPECT_EQ(mach_o::CPU_SUBTYPE_X86_64_ALL, _context.getCPUSubType()); } TEST_F(DarwinLdParserTest, Arch_x86) { - EXPECT_FALSE(parse("ld", "-arch", "i386", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-arch", "i386", "foo.o", nullptr)); EXPECT_EQ(MachOLinkingContext::arch_x86, _context.arch()); EXPECT_EQ(mach_o::CPU_TYPE_I386, _context.getCPUType()); EXPECT_EQ(mach_o::CPU_SUBTYPE_X86_ALL, _context.getCPUSubType()); } TEST_F(DarwinLdParserTest, Arch_armv6) { - EXPECT_FALSE(parse("ld", "-arch", "armv6", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-arch", "armv6", "foo.o", nullptr)); EXPECT_EQ(MachOLinkingContext::arch_armv6, _context.arch()); EXPECT_EQ(mach_o::CPU_TYPE_ARM, _context.getCPUType()); EXPECT_EQ(mach_o::CPU_SUBTYPE_ARM_V6, _context.getCPUSubType()); } TEST_F(DarwinLdParserTest, Arch_armv7) { - EXPECT_FALSE(parse("ld", "-arch", "armv7", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-arch", "armv7", "foo.o", nullptr)); EXPECT_EQ(MachOLinkingContext::arch_armv7, _context.arch()); EXPECT_EQ(mach_o::CPU_TYPE_ARM, _context.getCPUType()); EXPECT_EQ(mach_o::CPU_SUBTYPE_ARM_V7, _context.getCPUSubType()); } TEST_F(DarwinLdParserTest, Arch_armv7s) { - EXPECT_FALSE(parse("ld", "-arch", "armv7s", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-arch", "armv7s", "foo.o", nullptr)); EXPECT_EQ(MachOLinkingContext::arch_armv7s, _context.arch()); EXPECT_EQ(mach_o::CPU_TYPE_ARM, _context.getCPUType()); EXPECT_EQ(mach_o::CPU_SUBTYPE_ARM_V7S, _context.getCPUSubType()); } TEST_F(DarwinLdParserTest, MinMacOSX10_7) { - EXPECT_FALSE(parse("ld", "-macosx_version_min", "10.7", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-macosx_version_min", "10.7", "foo.o", nullptr)); EXPECT_EQ(MachOLinkingContext::OS::macOSX, _context.os()); EXPECT_TRUE(_context.minOS("10.7", "")); EXPECT_FALSE(_context.minOS("10.8", "")); } TEST_F(DarwinLdParserTest, MinMacOSX10_8) { - EXPECT_FALSE(parse("ld", "-macosx_version_min", "10.8.3", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-macosx_version_min", "10.8.3", "foo.o", nullptr)); EXPECT_EQ(MachOLinkingContext::OS::macOSX, _context.os()); EXPECT_TRUE(_context.minOS("10.7", "")); EXPECT_TRUE(_context.minOS("10.8", "")); } TEST_F(DarwinLdParserTest, iOS5) { - EXPECT_FALSE(parse("ld", "-ios_version_min", "5.0", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-ios_version_min", "5.0", "foo.o", nullptr)); EXPECT_EQ(MachOLinkingContext::OS::iOS, _context.os()); EXPECT_TRUE(_context.minOS("", "5.0")); EXPECT_FALSE(_context.minOS("", "6.0")); } TEST_F(DarwinLdParserTest, iOS6) { - EXPECT_FALSE(parse("ld", "-ios_version_min", "6.0", "foo.o", nullptr)); + EXPECT_TRUE(parse("ld", "-ios_version_min", "6.0", "foo.o", nullptr)); EXPECT_EQ(MachOLinkingContext::OS::iOS, _context.os()); EXPECT_TRUE(_context.minOS("", "5.0")); EXPECT_TRUE(_context.minOS("", "6.0")); } TEST_F(DarwinLdParserTest, iOS_Simulator5) { - EXPECT_FALSE(parse("ld", "-ios_simulator_version_min", "5.0", "a.o", nullptr)); + EXPECT_TRUE(parse("ld", "-ios_simulator_version_min", "5.0", "a.o", nullptr)); EXPECT_EQ(MachOLinkingContext::OS::iOS_simulator, _context.os()); EXPECT_TRUE(_context.minOS("", "5.0")); EXPECT_FALSE(_context.minOS("", "6.0")); } TEST_F(DarwinLdParserTest, iOS_Simulator6) { - EXPECT_FALSE(parse("ld", "-ios_simulator_version_min", "6.0", "a.o", nullptr)); + EXPECT_TRUE(parse("ld", "-ios_simulator_version_min", "6.0", "a.o", nullptr)); EXPECT_EQ(MachOLinkingContext::OS::iOS_simulator, _context.os()); EXPECT_TRUE(_context.minOS("", "5.0")); EXPECT_TRUE(_context.minOS("", "6.0")); } TEST_F(DarwinLdParserTest, compatibilityVersion) { - EXPECT_FALSE( + EXPECT_TRUE( parse("ld", "-dylib", "-compatibility_version", "1.2.3", "a.o", nullptr)); EXPECT_EQ(_context.compatibilityVersion(), 0x10203U); } TEST_F(DarwinLdParserTest, compatibilityVersionInvalidType) { - EXPECT_TRUE(parse("ld", "-bundle", "-compatibility_version", "1.2.3", "a.o", - nullptr)); + EXPECT_FALSE(parse("ld", "-bundle", "-compatibility_version", "1.2.3", "a.o", + nullptr)); } TEST_F(DarwinLdParserTest, compatibilityVersionInvalidValue) { - EXPECT_TRUE(parse("ld", "-bundle", "-compatibility_version", "1,2,3", "a.o", - nullptr)); + EXPECT_FALSE(parse("ld", "-bundle", "-compatibility_version", "1,2,3", "a.o", + nullptr)); } TEST_F(DarwinLdParserTest, currentVersion) { - EXPECT_FALSE( + EXPECT_TRUE( parse("ld", "-dylib", "-current_version", "1.2.3", "a.o", nullptr)); EXPECT_EQ(_context.currentVersion(), 0x10203U); } TEST_F(DarwinLdParserTest, currentVersionInvalidType) { - EXPECT_TRUE( + EXPECT_FALSE( parse("ld", "-bundle", "-current_version", "1.2.3", "a.o", nullptr)); } TEST_F(DarwinLdParserTest, currentVersionInvalidValue) { - EXPECT_TRUE( + EXPECT_FALSE( parse("ld", "-bundle", "-current_version", "1,2,3", "a.o", nullptr)); } TEST_F(DarwinLdParserTest, bundleLoader) { - EXPECT_FALSE( + EXPECT_TRUE( parse("ld", "-bundle", "-bundle_loader", "/bin/ls", "a.o", nullptr)); EXPECT_EQ(_context.bundleLoader(), "/bin/ls"); } TEST_F(DarwinLdParserTest, bundleLoaderInvalidType) { - EXPECT_TRUE(parse("ld", "-bundle_loader", "/bin/ls", "a.o", nullptr)); + EXPECT_FALSE(parse("ld", "-bundle_loader", "/bin/ls", "a.o", nullptr)); } TEST_F(DarwinLdParserTest, deadStrippableDylib) { - EXPECT_FALSE( + EXPECT_TRUE( parse("ld", "-dylib", "-mark_dead_strippable_dylib", "a.o", nullptr)); EXPECT_EQ(true, _context.deadStrippableDylib()); } TEST_F(DarwinLdParserTest, deadStrippableDylibInvalidType) { - EXPECT_TRUE(parse("ld", "-mark_dead_strippable_dylib", "a.o", nullptr)); + EXPECT_FALSE(parse("ld", "-mark_dead_strippable_dylib", "a.o", nullptr)); } } // end anonymous namespace diff --git a/lld/unittests/DriverTests/GnuLdDriverTest.cpp b/lld/unittests/DriverTests/GnuLdDriverTest.cpp index 62b5847726a..3313fd9f1bd 100644 --- a/lld/unittests/DriverTests/GnuLdDriverTest.cpp +++ b/lld/unittests/DriverTests/GnuLdDriverTest.cpp @@ -28,13 +28,13 @@ protected: }; TEST_F(GnuLdParserTest, Empty) { - EXPECT_TRUE(parse("ld", nullptr)); + EXPECT_FALSE(parse("ld", nullptr)); EXPECT_EQ(linkingContext(), nullptr); EXPECT_EQ("No input files\n", errorMessage()); } TEST_F(GnuLdParserTest, Basic) { - EXPECT_FALSE(parse("ld", "infile.o", nullptr)); + EXPECT_TRUE(parse("ld", "infile.o", nullptr)); EXPECT_NE(linkingContext(), nullptr); EXPECT_EQ("a.out", linkingContext()->outputPath()); EXPECT_EQ(1, inputFileCount()); @@ -44,8 +44,8 @@ TEST_F(GnuLdParserTest, Basic) { } TEST_F(GnuLdParserTest, ManyOptions) { - EXPECT_FALSE(parse("ld", "-entry", "_start", "-o", "outfile", - "--output-filetype=yaml", "infile.o", nullptr)); + EXPECT_TRUE(parse("ld", "-entry", "_start", "-o", "outfile", + "--output-filetype=yaml", "infile.o", nullptr)); EXPECT_NE(linkingContext(), nullptr); EXPECT_EQ("outfile", linkingContext()->outputPath()); EXPECT_EQ("_start", linkingContext()->entrySymbolName()); diff --git a/lld/unittests/DriverTests/WinLinkDriverTest.cpp b/lld/unittests/DriverTests/WinLinkDriverTest.cpp index 3dee43889f6..55defc838f8 100644 --- a/lld/unittests/DriverTests/WinLinkDriverTest.cpp +++ b/lld/unittests/DriverTests/WinLinkDriverTest.cpp @@ -31,8 +31,8 @@ protected: }; TEST_F(WinLinkParserTest, Basic) { - EXPECT_FALSE(parse("link.exe", "/subsystem:console", "/out:a.exe", - "-entry:start", "a.obj", "b.obj", "c.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/subsystem:console", "/out:a.exe", + "-entry:start", "a.obj", "b.obj", "c.obj", nullptr)); EXPECT_EQ(llvm::COFF::IMAGE_SUBSYSTEM_WINDOWS_CUI, _context.getSubsystem()); EXPECT_EQ(llvm::COFF::IMAGE_FILE_MACHINE_I386, _context.getMachineType()); EXPECT_EQ("a.exe", _context.outputPath()); @@ -64,8 +64,8 @@ TEST_F(WinLinkParserTest, Basic) { } TEST_F(WinLinkParserTest, StartsWithHyphen) { - EXPECT_FALSE(parse("link.exe", "-subsystem:console", "-out:a.exe", - "a.obj", nullptr)); + EXPECT_TRUE( + parse("link.exe", "-subsystem:console", "-out:a.exe", "a.obj", nullptr)); EXPECT_EQ(llvm::COFF::IMAGE_SUBSYSTEM_WINDOWS_CUI, _context.getSubsystem()); EXPECT_EQ("a.exe", _context.outputPath()); EXPECT_EQ(1, inputFileCount()); @@ -73,8 +73,8 @@ TEST_F(WinLinkParserTest, StartsWithHyphen) { } TEST_F(WinLinkParserTest, UppercaseOption) { - EXPECT_FALSE(parse("link.exe", "/SUBSYSTEM:CONSOLE", "/OUT:a.exe", "a.obj", - nullptr)); + EXPECT_TRUE( + parse("link.exe", "/SUBSYSTEM:CONSOLE", "/OUT:a.exe", "a.obj", nullptr)); EXPECT_EQ(llvm::COFF::IMAGE_SUBSYSTEM_WINDOWS_CUI, _context.getSubsystem()); EXPECT_EQ("a.exe", _context.outputPath()); EXPECT_EQ(1, inputFileCount()); @@ -82,14 +82,14 @@ TEST_F(WinLinkParserTest, UppercaseOption) { } TEST_F(WinLinkParserTest, Mllvm) { - EXPECT_FALSE(parse("link.exe", "/mllvm:-debug", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/mllvm:-debug", "a.obj", nullptr)); const std::vector<const char *> &options = _context.llvmOptions(); EXPECT_EQ(1U, options.size()); EXPECT_STREQ("-debug", options[0]); } TEST_F(WinLinkParserTest, NoInputFiles) { - EXPECT_TRUE(parse("link.exe", nullptr)); + EXPECT_FALSE(parse("link.exe", nullptr)); EXPECT_EQ("No input files\n", errorMessage()); } @@ -98,7 +98,7 @@ TEST_F(WinLinkParserTest, NoInputFiles) { // TEST_F(WinLinkParserTest, NoFileExtension) { - EXPECT_FALSE(parse("link.exe", "foo", "bar", nullptr)); + EXPECT_TRUE(parse("link.exe", "foo", "bar", nullptr)); EXPECT_EQ("foo.exe", _context.outputPath()); EXPECT_EQ(2, inputFileCount()); EXPECT_EQ("foo.obj", inputFile(0)); @@ -106,15 +106,15 @@ TEST_F(WinLinkParserTest, NoFileExtension) { } TEST_F(WinLinkParserTest, NonStandardFileExtension) { - EXPECT_FALSE(parse("link.exe", "foo.o", nullptr)); + EXPECT_TRUE(parse("link.exe", "foo.o", nullptr)); EXPECT_EQ("foo.exe", _context.outputPath()); EXPECT_EQ(1, inputFileCount()); EXPECT_EQ("foo.o", inputFile(0)); } TEST_F(WinLinkParserTest, Libpath) { - EXPECT_FALSE(parse("link.exe", "/libpath:dir1", "/libpath:dir2", - "a.obj", nullptr)); + EXPECT_TRUE( + parse("link.exe", "/libpath:dir1", "/libpath:dir2", "a.obj", nullptr)); const std::vector<StringRef> &paths = _context.getInputSearchPaths(); EXPECT_EQ(2U, paths.size()); EXPECT_EQ("dir1", paths[0]); @@ -126,100 +126,100 @@ TEST_F(WinLinkParserTest, Libpath) { // TEST_F(WinLinkParserTest, MachineX86) { - EXPECT_FALSE(parse("link.exe", "/machine:x86", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/machine:x86", "a.obj", nullptr)); EXPECT_EQ(llvm::COFF::IMAGE_FILE_MACHINE_I386, _context.getMachineType()); } TEST_F(WinLinkParserTest, MachineX64) { - EXPECT_TRUE(parse("link.exe", "/machine:x64", "a.obj", nullptr)); - EXPECT_TRUE(StringRef(errorMessage()).startswith( - "Machine type other than x86 is not supported")); + EXPECT_FALSE(parse("link.exe", "/machine:x64", "a.obj", nullptr)); + EXPECT_TRUE(StringRef(errorMessage()) + .startswith("Machine type other than x86 is not supported")); } TEST_F(WinLinkParserTest, MajorImageVersion) { - EXPECT_FALSE(parse("link.exe", "/version:7", "foo.o", nullptr)); + EXPECT_TRUE(parse("link.exe", "/version:7", "foo.o", nullptr)); EXPECT_EQ(7, _context.getImageVersion().majorVersion); EXPECT_EQ(0, _context.getImageVersion().minorVersion); } TEST_F(WinLinkParserTest, MajorMinorImageVersion) { - EXPECT_FALSE(parse("link.exe", "/version:72.35", "foo.o", nullptr)); + EXPECT_TRUE(parse("link.exe", "/version:72.35", "foo.o", nullptr)); EXPECT_EQ(72, _context.getImageVersion().majorVersion); EXPECT_EQ(35, _context.getImageVersion().minorVersion); } TEST_F(WinLinkParserTest, MinMajorOSVersion) { - EXPECT_FALSE(parse("link.exe", "/subsystem:windows,3", "foo.o", nullptr)); + EXPECT_TRUE(parse("link.exe", "/subsystem:windows,3", "foo.o", nullptr)); EXPECT_EQ(llvm::COFF::IMAGE_SUBSYSTEM_WINDOWS_GUI, _context.getSubsystem()); EXPECT_EQ(3, _context.getMinOSVersion().majorVersion); EXPECT_EQ(0, _context.getMinOSVersion().minorVersion); } TEST_F(WinLinkParserTest, MinMajorMinorOSVersion) { - EXPECT_FALSE(parse("link.exe", "/subsystem:windows,3.1", "foo.o", nullptr)); + EXPECT_TRUE(parse("link.exe", "/subsystem:windows,3.1", "foo.o", nullptr)); EXPECT_EQ(llvm::COFF::IMAGE_SUBSYSTEM_WINDOWS_GUI, _context.getSubsystem()); EXPECT_EQ(3, _context.getMinOSVersion().majorVersion); EXPECT_EQ(1, _context.getMinOSVersion().minorVersion); } TEST_F(WinLinkParserTest, Base) { - EXPECT_FALSE(parse("link.exe", "/base:8388608", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/base:8388608", "a.obj", nullptr)); EXPECT_EQ(0x800000U, _context.getBaseAddress()); } TEST_F(WinLinkParserTest, InvalidBase) { - EXPECT_TRUE(parse("link.exe", "/base:1234", "a.obj", nullptr)); - EXPECT_TRUE(StringRef(errorMessage()).startswith( - "Base address have to be multiple of 64K")); + EXPECT_FALSE(parse("link.exe", "/base:1234", "a.obj", nullptr)); + EXPECT_TRUE(StringRef(errorMessage()) + .startswith("Base address have to be multiple of 64K")); } TEST_F(WinLinkParserTest, StackReserve) { - EXPECT_FALSE(parse("link.exe", "/stack:8192", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/stack:8192", "a.obj", nullptr)); EXPECT_EQ(8192U, _context.getStackReserve()); EXPECT_EQ(4096U, _context.getStackCommit()); } TEST_F(WinLinkParserTest, StackReserveAndCommit) { - EXPECT_FALSE(parse("link.exe", "/stack:16384,8192", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/stack:16384,8192", "a.obj", nullptr)); EXPECT_EQ(16384U, _context.getStackReserve()); EXPECT_EQ(8192U, _context.getStackCommit()); } TEST_F(WinLinkParserTest, InvalidStackSize) { - EXPECT_TRUE(parse("link.exe", "/stack:8192,16384", "a.obj", nullptr)); + EXPECT_FALSE(parse("link.exe", "/stack:8192,16384", "a.obj", nullptr)); EXPECT_TRUE(StringRef(errorMessage()).startswith("Invalid stack size")); } TEST_F(WinLinkParserTest, HeapReserve) { - EXPECT_FALSE(parse("link.exe", "/heap:8192", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/heap:8192", "a.obj", nullptr)); EXPECT_EQ(8192U, _context.getHeapReserve()); EXPECT_EQ(4096U, _context.getHeapCommit()); } TEST_F(WinLinkParserTest, HeapReserveAndCommit) { - EXPECT_FALSE(parse("link.exe", "/heap:16384,8192", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/heap:16384,8192", "a.obj", nullptr)); EXPECT_EQ(16384U, _context.getHeapReserve()); EXPECT_EQ(8192U, _context.getHeapCommit()); } TEST_F(WinLinkParserTest, InvalidHeapSize) { - EXPECT_TRUE(parse("link.exe", "/heap:8192,16384", "a.obj", nullptr)); + EXPECT_FALSE(parse("link.exe", "/heap:8192,16384", "a.obj", nullptr)); EXPECT_TRUE(StringRef(errorMessage()).startswith("Invalid heap size")); } TEST_F(WinLinkParserTest, SectionAlignment) { - EXPECT_FALSE(parse("link.exe", "/align:8192", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/align:8192", "a.obj", nullptr)); EXPECT_EQ(8192U, _context.getSectionAlignment()); } TEST_F(WinLinkParserTest, InvalidAlignment) { - EXPECT_TRUE(parse("link.exe", "/align:1000", "a.obj", nullptr)); + EXPECT_FALSE(parse("link.exe", "/align:1000", "a.obj", nullptr)); EXPECT_EQ("Section alignment must be a power of 2, but got 1000\n", errorMessage()); } TEST_F(WinLinkParserTest, Include) { - EXPECT_FALSE(parse("link.exe", "/include:foo", "a.out", nullptr)); + EXPECT_TRUE(parse("link.exe", "/include:foo", "a.out", nullptr)); auto symbols = _context.initialUndefinedSymbols(); EXPECT_FALSE(symbols.empty()); EXPECT_EQ("foo", symbols[0]); @@ -232,8 +232,8 @@ TEST_F(WinLinkParserTest, Include) { // TEST_F(WinLinkParserTest, DefaultLib) { - EXPECT_FALSE(parse("link.exe", "/defaultlib:user32.lib", - "/defaultlib:kernel32", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/defaultlib:user32.lib", + "/defaultlib:kernel32", "a.obj", nullptr)); EXPECT_EQ(3, inputFileCount()); EXPECT_EQ("a.obj", inputFile(0)); EXPECT_EQ("user32.lib", inputFile(1)); @@ -241,18 +241,17 @@ TEST_F(WinLinkParserTest, DefaultLib) { } TEST_F(WinLinkParserTest, NoDefaultLib) { - EXPECT_FALSE(parse("link.exe", "/defaultlib:user32.lib", - "/defaultlib:kernel32", "/nodefaultlib:user32.lib", - "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/defaultlib:user32.lib", + "/defaultlib:kernel32", "/nodefaultlib:user32.lib", "a.obj", + nullptr)); EXPECT_EQ(2, inputFileCount()); EXPECT_EQ("a.obj", inputFile(0)); EXPECT_EQ("kernel32.lib", inputFile(1)); } TEST_F(WinLinkParserTest, NoDefaultLibAll) { - EXPECT_FALSE(parse("link.exe", "/defaultlib:user32.lib", - "/defaultlib:kernel32", "/nodefaultlib", "a.obj", - nullptr)); + EXPECT_TRUE(parse("link.exe", "/defaultlib:user32.lib", + "/defaultlib:kernel32", "/nodefaultlib", "a.obj", nullptr)); EXPECT_EQ(1, inputFileCount()); EXPECT_EQ("a.obj", inputFile(0)); } @@ -262,93 +261,93 @@ TEST_F(WinLinkParserTest, NoDefaultLibAll) { // TEST_F(WinLinkParserTest, Force) { - EXPECT_FALSE(parse("link.exe", "/force", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/force", "a.obj", nullptr)); EXPECT_TRUE(_context.allowRemainingUndefines()); } TEST_F(WinLinkParserTest, ForceUnresolved) { - EXPECT_FALSE(parse("link.exe", "/force:unresolved", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/force:unresolved", "a.obj", nullptr)); EXPECT_TRUE(_context.allowRemainingUndefines()); } TEST_F(WinLinkParserTest, NoNxCompat) { - EXPECT_FALSE(parse("link.exe", "/nxcompat:no", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/nxcompat:no", "a.obj", nullptr)); EXPECT_FALSE(_context.isNxCompat()); } TEST_F(WinLinkParserTest, LargeAddressAware) { - EXPECT_FALSE(parse("link.exe", "/largeaddressaware", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/largeaddressaware", "a.obj", nullptr)); EXPECT_TRUE(_context.getLargeAddressAware()); } TEST_F(WinLinkParserTest, NoLargeAddressAware) { - EXPECT_FALSE(parse("link.exe", "/largeaddressaware:no", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/largeaddressaware:no", "a.obj", nullptr)); EXPECT_FALSE(_context.getLargeAddressAware()); } TEST_F(WinLinkParserTest, AllowBind) { - EXPECT_FALSE(parse("link.exe", "/allowbind", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/allowbind", "a.obj", nullptr)); EXPECT_TRUE(_context.getAllowBind()); } TEST_F(WinLinkParserTest, NoAllowBind) { - EXPECT_FALSE(parse("link.exe", "/allowbind:no", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/allowbind:no", "a.obj", nullptr)); EXPECT_FALSE(_context.getAllowBind()); } TEST_F(WinLinkParserTest, AllowIsolation) { - EXPECT_FALSE(parse("link.exe", "/allowisolation", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/allowisolation", "a.obj", nullptr)); EXPECT_TRUE(_context.getAllowIsolation()); } TEST_F(WinLinkParserTest, NoAllowIsolation) { - EXPECT_FALSE(parse("link.exe", "/allowisolation:no", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/allowisolation:no", "a.obj", nullptr)); EXPECT_FALSE(_context.getAllowIsolation()); } TEST_F(WinLinkParserTest, SwapRunFromCD) { - EXPECT_FALSE(parse("link.exe", "/swaprun:cd", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/swaprun:cd", "a.obj", nullptr)); EXPECT_TRUE(_context.getSwapRunFromCD()); } TEST_F(WinLinkParserTest, SwapRunFromNet) { - EXPECT_FALSE(parse("link.exe", "/swaprun:net", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/swaprun:net", "a.obj", nullptr)); EXPECT_TRUE(_context.getSwapRunFromNet()); } TEST_F(WinLinkParserTest, Debug) { - EXPECT_FALSE(parse("link.exe", "/debug", "a.out", nullptr)); + EXPECT_TRUE(parse("link.exe", "/debug", "a.out", nullptr)); EXPECT_FALSE(_context.deadStrip()); } TEST_F(WinLinkParserTest, Fixed) { - EXPECT_FALSE(parse("link.exe", "/fixed", "a.out", nullptr)); + EXPECT_TRUE(parse("link.exe", "/fixed", "a.out", nullptr)); EXPECT_FALSE(_context.getBaseRelocationEnabled()); EXPECT_FALSE(_context.getDynamicBaseEnabled()); } TEST_F(WinLinkParserTest, NoFixed) { - EXPECT_FALSE(parse("link.exe", "/fixed:no", "a.out", nullptr)); + EXPECT_TRUE(parse("link.exe", "/fixed:no", "a.out", nullptr)); EXPECT_TRUE(_context.getBaseRelocationEnabled()); } TEST_F(WinLinkParserTest, TerminalServerAware) { - EXPECT_FALSE(parse("link.exe", "/tsaware", "a.out", nullptr)); + EXPECT_TRUE(parse("link.exe", "/tsaware", "a.out", nullptr)); EXPECT_TRUE(_context.isTerminalServerAware()); } TEST_F(WinLinkParserTest, NoTerminalServerAware) { - EXPECT_FALSE(parse("link.exe", "/tsaware:no", "a.out", nullptr)); + EXPECT_TRUE(parse("link.exe", "/tsaware:no", "a.out", nullptr)); EXPECT_FALSE(_context.isTerminalServerAware()); } TEST_F(WinLinkParserTest, DynamicBase) { - EXPECT_FALSE(parse("link.exe", "/dynamicbase", "a.out", nullptr)); + EXPECT_TRUE(parse("link.exe", "/dynamicbase", "a.out", nullptr)); EXPECT_TRUE(_context.getDynamicBaseEnabled()); } TEST_F(WinLinkParserTest, NoDynamicBase) { - EXPECT_FALSE(parse("link.exe", "/dynamicbase:no", "a.out", nullptr)); + EXPECT_TRUE(parse("link.exe", "/dynamicbase:no", "a.out", nullptr)); EXPECT_FALSE(_context.getDynamicBaseEnabled()); } @@ -357,14 +356,14 @@ TEST_F(WinLinkParserTest, NoDynamicBase) { // TEST_F(WinLinkParserTest, FailIfMismatch_Match) { - EXPECT_FALSE(parse("link.exe", "/failifmismatch:foo=bar", - "/failifmismatch:foo=bar", "/failifmismatch:abc=def", - "a.out", nullptr)); + EXPECT_TRUE(parse("link.exe", "/failifmismatch:foo=bar", + "/failifmismatch:foo=bar", "/failifmismatch:abc=def", + "a.out", nullptr)); } TEST_F(WinLinkParserTest, FailIfMismatch_Mismatch) { - EXPECT_TRUE(parse("link.exe", "/failifmismatch:foo=bar", - "/failifmismatch:foo=baz", "a.out", nullptr)); + EXPECT_FALSE(parse("link.exe", "/failifmismatch:foo=bar", + "/failifmismatch:foo=baz", "a.out", nullptr)); } // @@ -374,11 +373,11 @@ TEST_F(WinLinkParserTest, FailIfMismatch_Mismatch) { TEST_F(WinLinkParserTest, Ignore) { // There are some no-op command line options that are recognized for // compatibility with link.exe. - EXPECT_FALSE(parse("link.exe", "/nologo", "/errorreport:prompt", - "/incremental", "/incremental:no", "/delay:unload", - "/delayload:user32", "/pdb:foo", "/pdbaltpath:bar", - "/verbose", "/verbose:icf", "/wx", "/wx:no", "a.obj", - nullptr)); + EXPECT_TRUE(parse("link.exe", "/nologo", "/errorreport:prompt", + "/incremental", "/incremental:no", "/delay:unload", + "/delayload:user32", "/pdb:foo", "/pdbaltpath:bar", + "/verbose", "/verbose:icf", "/wx", "/wx:no", "a.obj", + nullptr)); EXPECT_EQ("", errorMessage()); EXPECT_EQ(1, inputFileCount()); EXPECT_EQ("a.obj", inputFile(0)); @@ -389,8 +388,8 @@ TEST_F(WinLinkParserTest, Ignore) { // TEST_F(WinLinkParserTest, DashDash) { - EXPECT_FALSE(parse("link.exe", "/subsystem:console", "/out:a.exe", - "a.obj", "--", "b.obj", "-c.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/subsystem:console", "/out:a.exe", "a.obj", + "--", "b.obj", "-c.obj", nullptr)); EXPECT_EQ(llvm::COFF::IMAGE_SUBSYSTEM_WINDOWS_CUI, _context.getSubsystem()); EXPECT_EQ("a.exe", _context.outputPath()); EXPECT_EQ(3, inputFileCount()); @@ -404,12 +403,12 @@ TEST_F(WinLinkParserTest, DashDash) { // TEST_F(WinLinkParserTest, DefEntryNameConsole) { - EXPECT_FALSE(parse("link.exe", "/subsystem:console", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/subsystem:console", "a.obj", nullptr)); EXPECT_EQ("_mainCRTStartup", _context.entrySymbolName()); } TEST_F(WinLinkParserTest, DefEntryNameWindows) { - EXPECT_FALSE(parse("link.exe", "/subsystem:windows", "a.obj", nullptr)); + EXPECT_TRUE(parse("link.exe", "/subsystem:windows", "a.obj", nullptr)); EXPECT_EQ("_WinMainCRTStartup", _context.entrySymbolName()); } |

