diff options
Diffstat (limited to 'lld/unittests/DriverTests/DarwinLdDriverTest.cpp')
| -rw-r--r-- | lld/unittests/DriverTests/DarwinLdDriverTest.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/lld/unittests/DriverTests/DarwinLdDriverTest.cpp b/lld/unittests/DriverTests/DarwinLdDriverTest.cpp index 6ab4a29c645..6b51cd6810a 100644 --- a/lld/unittests/DriverTests/DarwinLdDriverTest.cpp +++ b/lld/unittests/DriverTests/DarwinLdDriverTest.cpp @@ -38,6 +38,11 @@ TEST_F(DarwinLdParserTest, Basic) { EXPECT_EQ("bar.o", inputFile(1)); } +TEST_F(DarwinLdParserTest, Output) { + parse("ld", "-o", "my.out", "foo.o", nullptr); + EXPECT_EQ("my.out", _info.outputPath()); +} + TEST_F(DarwinLdParserTest, Dylib) { EXPECT_FALSE(parse("ld", "-dylib", "foo.o", nullptr)); EXPECT_EQ(mach_o::MH_DYLIB, _info.outputFileType()); @@ -78,9 +83,103 @@ TEST_F(DarwinLdParserTest, DeadStrip) { EXPECT_TRUE(_info.deadStrip()); } +TEST_F(DarwinLdParserTest, DeadStripRootsExe) { + parse("ld", "-dead_strip", "foo.o", nullptr); + EXPECT_FALSE(_info.globalsAreDeadStripRoots()); +} + +TEST_F(DarwinLdParserTest, DeadStripRootsDylib) { + parse("ld", "-dylib", "-dead_strip", "foo.o", nullptr); + EXPECT_TRUE(_info.globalsAreDeadStripRoots()); +} + +TEST_F(DarwinLdParserTest, ForceLoadArchive) { + parse("ld","-all_load", "foo.o", nullptr); + EXPECT_TRUE(_info.forceLoadAllArchives()); +} + +TEST_F(DarwinLdParserTest, NoForceLoadArchive) { + parse("ld", "foo.o", nullptr); + EXPECT_FALSE(_info.forceLoadAllArchives()); +} + TEST_F(DarwinLdParserTest, Arch) { EXPECT_FALSE(parse("ld", "-arch", "x86_64", "foo.o", nullptr)); EXPECT_EQ(MachOTargetInfo::arch_x86_64, _info.arch()); + EXPECT_EQ(mach_o::CPU_TYPE_X86_64, _info.getCPUType()); + EXPECT_EQ(mach_o::CPU_SUBTYPE_X86_64_ALL, _info.getCPUSubType()); +} + +TEST_F(DarwinLdParserTest, Arch_x86) { + parse("ld", "-arch", "i386", "foo.o", nullptr); + EXPECT_EQ(MachOTargetInfo::arch_x86, _info.arch()); + EXPECT_EQ(mach_o::CPU_TYPE_I386, _info.getCPUType()); + EXPECT_EQ(mach_o::CPU_SUBTYPE_X86_ALL, _info.getCPUSubType()); +} + +TEST_F(DarwinLdParserTest, Arch_armv6) { + parse("ld", "-arch", "armv6", "foo.o", nullptr); + EXPECT_EQ(MachOTargetInfo::arch_armv6, _info.arch()); + EXPECT_EQ(mach_o::CPU_TYPE_ARM, _info.getCPUType()); + EXPECT_EQ(mach_o::CPU_SUBTYPE_ARM_V6, _info.getCPUSubType()); +} + +TEST_F(DarwinLdParserTest, Arch_armv7) { + parse("ld", "-arch", "armv7", "foo.o", nullptr); + EXPECT_EQ(MachOTargetInfo::arch_armv7, _info.arch()); + EXPECT_EQ(mach_o::CPU_TYPE_ARM, _info.getCPUType()); + EXPECT_EQ(mach_o::CPU_SUBTYPE_ARM_V7, _info.getCPUSubType()); } +TEST_F(DarwinLdParserTest, Arch_armv7s) { + parse("ld", "-arch", "armv7s", "foo.o", nullptr); + EXPECT_EQ(MachOTargetInfo::arch_armv7s, _info.arch()); + EXPECT_EQ(mach_o::CPU_TYPE_ARM, _info.getCPUType()); + EXPECT_EQ(mach_o::CPU_SUBTYPE_ARM_V7S, _info.getCPUSubType()); +} + +TEST_F(DarwinLdParserTest, MinMacOSX10_7) { + parse("ld", "-macosx_version_min", "10.7", "foo.o", nullptr); + EXPECT_EQ(MachOTargetInfo::OS::macOSX, _info.os()); + EXPECT_TRUE(_info.minOS("10.7", "")); + EXPECT_FALSE(_info.minOS("10.8", "")); +} + +TEST_F(DarwinLdParserTest, MinMacOSX10_8) { + parse("ld", "-macosx_version_min", "10.8.3", "foo.o", nullptr); + EXPECT_EQ(MachOTargetInfo::OS::macOSX, _info.os()); + EXPECT_TRUE(_info.minOS("10.7", "")); + EXPECT_TRUE(_info.minOS("10.8", "")); +} + +TEST_F(DarwinLdParserTest, iOS5) { + parse("ld", "-ios_version_min", "5.0", "foo.o", nullptr); + EXPECT_EQ(MachOTargetInfo::OS::iOS, _info.os()); + EXPECT_TRUE(_info.minOS("", "5.0")); + EXPECT_FALSE(_info.minOS("", "6.0")); +} + +TEST_F(DarwinLdParserTest, iOS6) { + parse("ld", "-ios_version_min", "6.0", "foo.o", nullptr); + EXPECT_EQ(MachOTargetInfo::OS::iOS, _info.os()); + EXPECT_TRUE(_info.minOS("", "5.0")); + EXPECT_TRUE(_info.minOS("", "6.0")); +} + +TEST_F(DarwinLdParserTest, iOS_Simulator5) { + parse("ld", "-ios_simulator_version_min", "5.0", "foo.o", nullptr); + EXPECT_EQ(MachOTargetInfo::OS::iOS_simulator, _info.os()); + EXPECT_TRUE(_info.minOS("", "5.0")); + EXPECT_FALSE(_info.minOS("", "6.0")); +} + +TEST_F(DarwinLdParserTest, iOS_Simulator6) { + parse("ld", "-ios_simulator_version_min", "6.0", "foo.o", nullptr); + EXPECT_EQ(MachOTargetInfo::OS::iOS_simulator, _info.os()); + EXPECT_TRUE(_info.minOS("", "5.0")); + EXPECT_TRUE(_info.minOS("", "6.0")); +} + + + } // end anonymous namespace |

