[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