[lld] r191229 - [PECOFF] Add more tests for /machine, /base, /stack, /heap and /align.

Rui Ueyama ruiu at google.com
Mon Sep 23 14:52:01 PDT 2013


Author: ruiu
Date: Mon Sep 23 16:52:01 2013
New Revision: 191229

URL: http://llvm.org/viewvc/llvm-project?rev=191229&view=rev
Log:
[PECOFF] Add more tests for /machine, /base, /stack, /heap and /align.

Modified:
    lld/trunk/unittests/DriverTests/WinLinkDriverTest.cpp

Modified: lld/trunk/unittests/DriverTests/WinLinkDriverTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/unittests/DriverTests/WinLinkDriverTest.cpp?rev=191229&r1=191228&r2=191229&view=diff
==============================================================================
--- lld/trunk/unittests/DriverTests/WinLinkDriverTest.cpp (original)
+++ lld/trunk/unittests/DriverTests/WinLinkDriverTest.cpp Mon Sep 23 16:52:01 2013
@@ -123,8 +123,15 @@ TEST_F(WinLinkParserTest, Libpath) {
 // Tests for command line options that take values.
 //
 
+TEST_F(WinLinkParserTest, MachineX86) {
+  EXPECT_FALSE(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"));
 }
 
 TEST_F(WinLinkParserTest, MajorImageVersion) {
@@ -167,6 +174,12 @@ TEST_F(WinLinkParserTest, Base) {
   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"));
+}
+
 TEST_F(WinLinkParserTest, StackReserve) {
   EXPECT_FALSE(parse("link.exe", "/stack:8192", "a.obj", nullptr));
   EXPECT_EQ(8192U, _context.getStackReserve());
@@ -179,6 +192,11 @@ TEST_F(WinLinkParserTest, StackReserveAn
   EXPECT_EQ(8192U, _context.getStackCommit());
 }
 
+TEST_F(WinLinkParserTest, InvalidStackSize) {
+  EXPECT_TRUE(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_EQ(8192U, _context.getHeapReserve());
@@ -191,11 +209,22 @@ TEST_F(WinLinkParserTest, HeapReserveAnd
   EXPECT_EQ(8192U, _context.getHeapCommit());
 }
 
+TEST_F(WinLinkParserTest, InvalidHeapSize) {
+  EXPECT_TRUE(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_EQ(8192U, _context.getSectionAlignment());
 }
 
+TEST_F(WinLinkParserTest, InvalidAlignment) {
+  EXPECT_TRUE(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));
   auto symbols = _context.initialUndefinedSymbols();





More information about the llvm-commits mailing list