return ec;
if (auto *searchDir = dyn_cast<script::SearchDir>(c))
ctx.addSearchPath(searchDir->getSearchPath());
+ if (auto *entry = dyn_cast<script::Entry>(c))
+ ctx.setEntrySymbolName(entry->getEntryName());
}
return std::error_code();
}
EXPECT_EQ((size_t)2, searchPaths.size());
EXPECT_EQ("/foo/bar", searchPaths[1]);
}
+
+TEST_F(GnuLdParserTest, LinkerScriptEntry) {
+ parse("ld", "a.o", nullptr);
+ std::unique_ptr<MemoryBuffer> mb = MemoryBuffer::getMemBuffer(
+ "ENTRY(blah)", "foo.so");
+ std::string s;
+ raw_string_ostream out(s);
+ std::error_code ec = GnuLdDriver::evalLinkerScript(
+ *_context, std::move(mb), out);
+ EXPECT_FALSE(ec);
+ StringRef entrySymbol = _context->entrySymbolName();
+ EXPECT_EQ("blah", entrySymbol);
+}