From 48eec8a90d9ba434c3ae6687bd290c6014bef928 Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Wed, 28 Jan 2015 21:01:24 +0000 Subject: [PATCH] ELF: add a unit test for --as-needed. llvm-svn: 227367 --- lld/lib/Driver/GnuLdDriver.cpp | 4 +++- lld/unittests/DriverTests/GnuLdDriverTest.cpp | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lld/lib/Driver/GnuLdDriver.cpp b/lld/lib/Driver/GnuLdDriver.cpp index 2444384..bd130ea 100644 --- a/lld/lib/Driver/GnuLdDriver.cpp +++ b/lld/lib/Driver/GnuLdDriver.cpp @@ -613,7 +613,9 @@ bool GnuLdDriver::parse(int argc, const char *argv[], ErrorOr pathOrErr = findFile(*ctx, path, dashL); if (std::error_code ec = pathOrErr.getError()) { auto file = llvm::make_unique(path, ec); - ctx->getNodes().push_back(llvm::make_unique(std::move(file))); + auto node = llvm::make_unique(std::move(file)); + node->setAsNeeded(asNeeded); + ctx->getNodes().push_back(std::move(node)); break; } StringRef realpath = pathOrErr.get(); diff --git a/lld/unittests/DriverTests/GnuLdDriverTest.cpp b/lld/unittests/DriverTests/GnuLdDriverTest.cpp index b5a819c..5ca62447 100644 --- a/lld/unittests/DriverTests/GnuLdDriverTest.cpp +++ b/lld/unittests/DriverTests/GnuLdDriverTest.cpp @@ -147,6 +147,19 @@ TEST_F(GnuLdParserTest, DefsymMisssingValue) { EXPECT_FALSE(parse("ld", "a.o", "--defsym=sym=", nullptr)); } +// --as-needed + +TEST_F(GnuLdParserTest, AsNeeded) { + EXPECT_TRUE(parse("ld", "a.o", "--as-needed", "b.o", "c.o", + "--no-as-needed", "d.o", nullptr)); + std::vector> &nodes = _context->getNodes(); + EXPECT_EQ((size_t)4, nodes.size()); + EXPECT_FALSE(cast(nodes[0].get())->asNeeded()); + EXPECT_TRUE(cast(nodes[1].get())->asNeeded()); + EXPECT_TRUE(cast(nodes[2].get())->asNeeded()); + EXPECT_FALSE(cast(nodes[3].get())->asNeeded()); +} + // Linker script TEST_F(GnuLdParserTest, LinkerScriptGroup) { -- 2.7.4