forked from OSchip/llvm-project
[PECOFF] Fix /nodefaultlib option.
/nodefaultlib argument is a path name, so that needs to be compared case-insensitive way. Also the ".lib" extension should be ignored. llvm-svn: 220508
This commit is contained in:
parent
1d1f232041
commit
2f28686ca0
|
@ -248,9 +248,17 @@ public:
|
|||
}
|
||||
void setAlternateName(StringRef def, StringRef weak);
|
||||
|
||||
void addNoDefaultLib(StringRef path) { _noDefaultLibs.insert(path); }
|
||||
void addNoDefaultLib(StringRef path) {
|
||||
if (path.endswith_lower(".lib"))
|
||||
_noDefaultLibs.insert(path.drop_back(4).lower());
|
||||
else
|
||||
_noDefaultLibs.insert(path.lower());
|
||||
}
|
||||
|
||||
bool hasNoDefaultLib(StringRef path) const {
|
||||
return _noDefaultLibs.count(path) == 1;
|
||||
if (path.endswith_lower(".lib"))
|
||||
return _noDefaultLibs.count(path.drop_back(4).lower()) > 0;
|
||||
return _noDefaultLibs.count(path.lower()) > 0;
|
||||
}
|
||||
|
||||
void setNoDefaultLibAll(bool val) { _noDefaultLibAll = val; }
|
||||
|
|
|
@ -416,6 +416,15 @@ TEST_F(WinLinkParserTest, NoDefaultLib) {
|
|||
EXPECT_EQ("kernel32.lib", inputFile(2, 0));
|
||||
}
|
||||
|
||||
TEST_F(WinLinkParserTest, NoDefaultLibCase) {
|
||||
EXPECT_TRUE(parse("link.exe", "/defaultlib:user32",
|
||||
"/defaultlib:kernel32", "/nodefaultlib:USER32.LIB", "a.obj",
|
||||
nullptr));
|
||||
EXPECT_EQ(3, inputFileCount());
|
||||
EXPECT_EQ("a.obj", inputFile(0));
|
||||
EXPECT_EQ("kernel32.lib", inputFile(2, 0));
|
||||
}
|
||||
|
||||
TEST_F(WinLinkParserTest, NoDefaultLibAll) {
|
||||
EXPECT_TRUE(parse("link.exe", "/defaultlib:user32.lib",
|
||||
"/defaultlib:kernel32", "/nodefaultlib", "a.obj", nullptr));
|
||||
|
|
Loading…
Reference in New Issue