parent
6f4a43e581
commit
48eec8a90d
|
@ -613,7 +613,9 @@ bool GnuLdDriver::parse(int argc, const char *argv[],
|
|||
ErrorOr<StringRef> pathOrErr = findFile(*ctx, path, dashL);
|
||||
if (std::error_code ec = pathOrErr.getError()) {
|
||||
auto file = llvm::make_unique<ErrorFile>(path, ec);
|
||||
ctx->getNodes().push_back(llvm::make_unique<FileNode>(std::move(file)));
|
||||
auto node = llvm::make_unique<FileNode>(std::move(file));
|
||||
node->setAsNeeded(asNeeded);
|
||||
ctx->getNodes().push_back(std::move(node));
|
||||
break;
|
||||
}
|
||||
StringRef realpath = pathOrErr.get();
|
||||
|
|
|
@ -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<std::unique_ptr<Node>> &nodes = _context->getNodes();
|
||||
EXPECT_EQ((size_t)4, nodes.size());
|
||||
EXPECT_FALSE(cast<FileNode>(nodes[0].get())->asNeeded());
|
||||
EXPECT_TRUE(cast<FileNode>(nodes[1].get())->asNeeded());
|
||||
EXPECT_TRUE(cast<FileNode>(nodes[2].get())->asNeeded());
|
||||
EXPECT_FALSE(cast<FileNode>(nodes[3].get())->asNeeded());
|
||||
}
|
||||
|
||||
// Linker script
|
||||
|
||||
TEST_F(GnuLdParserTest, LinkerScriptGroup) {
|
||||
|
|
Loading…
Reference in New Issue