[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