COFF: Add more log messages.
authorRui Ueyama <ruiu@google.com>
Mon, 8 Jun 2015 06:00:10 +0000 (06:00 +0000)
committerRui Ueyama <ruiu@google.com>
Mon, 8 Jun 2015 06:00:10 +0000 (06:00 +0000)
llvm-svn: 239289

lld/COFF/Driver.cpp
lld/COFF/InputFiles.h
lld/COFF/SymbolTable.cpp
lld/COFF/SymbolTable.h

index 2e8767e..a2beb76 100644 (file)
@@ -334,6 +334,8 @@ bool LinkerDriver::link(int Argc, const char *Argv[]) {
       return false;
     }
     std::unique_ptr<InputFile> File = std::move(FileOrErr.get());
+    if (Config->Verbose)
+      llvm::outs() << "Reading " << File->getName() << "\n";
     if (auto EC = Symtab.addFile(std::move(File))) {
       llvm::errs() << Path << ": " << EC.message() << "\n";
       return false;
index b6f5889..819238f 100644 (file)
@@ -54,6 +54,9 @@ public:
   // Sets a parent filename if this file is created from an archive.
   void setParentName(StringRef N) { ParentName = N; }
 
+  // Returns .drectve section contents if exist.
+  virtual StringRef getDirectives() { return ""; }
+
 protected:
   explicit InputFile(Kind K, MemoryBufferRef M) : MB(M), FileKind(K) {}
   MemoryBufferRef MB;
@@ -99,12 +102,11 @@ public:
   // underlying object file.
   SymbolBody *getSymbolBody(uint32_t SymbolIndex);
 
-  // Returns .drectve section contents if exist.
-  StringRef getDirectives() { return Directives; }
-
   // Returns the underying COFF file.
   COFFObjectFile *getCOFFObj() { return COFFObj.get(); }
 
+  StringRef getDirectives() override { return Directives; }
+
 private:
   std::error_code initializeChunks();
   std::error_code initializeSymbols();
@@ -165,7 +167,7 @@ public:
   LTOModule *releaseModule() { return M.release(); }
 
   // Returns linker directives from module flags metadata if present.
-  StringRef getDirectives() { return Directives; }
+  StringRef getDirectives() override { return Directives; }
 
 private:
   std::error_code parse() override;
index 84fc40c..fc7aaf2 100644 (file)
@@ -40,14 +40,20 @@ std::error_code SymbolTable::addFile(std::unique_ptr<InputFile> File) {
   return addImport(cast<ImportFile>(FileP));
 }
 
-std::error_code SymbolTable::addDirectives(StringRef Dir) {
-  if (Dir.empty())
+std::error_code SymbolTable::addDirectives(InputFile *File) {
+  StringRef S = File->getDirectives();
+  if (S.empty())
     return std::error_code();
   std::vector<std::unique_ptr<InputFile>> Libs;
-  if (auto EC = Driver->parseDirectives(Dir, &Libs))
+  if (auto EC = Driver->parseDirectives(S, &Libs))
     return EC;
-  for (std::unique_ptr<InputFile> &Lib : Libs)
+  for (std::unique_ptr<InputFile> &Lib : Libs) {
+    if (Config->Verbose) {
+      llvm::outs() << "Reading " << Lib->getName()
+                   << " for " << File->getName() << "\n";
+    }
     addFile(std::move(Lib));
+  }
   return std::error_code();
 }
 
@@ -60,7 +66,7 @@ std::error_code SymbolTable::addObject(ObjectFile *File) {
 
   // If an object file contains .drectve section, read it and add
   // files listed in the section.
-  return addDirectives(File->getDirectives());
+  return addDirectives(File);
 }
 
 std::error_code SymbolTable::addArchive(ArchiveFile *File) {
@@ -79,7 +85,7 @@ std::error_code SymbolTable::addBitcode(BitcodeFile *File) {
         return EC;
 
   // Add any linker directives from the module flags metadata.
-  return addDirectives(File->getDirectives());
+  return addDirectives(File);
 }
 
 std::error_code SymbolTable::addImport(ImportFile *File) {
index 99a794d..922ae22 100644 (file)
@@ -77,7 +77,7 @@ public:
   std::error_code rename(StringRef From, StringRef To);
 
 private:
-  std::error_code addDirectives(StringRef Dir);
+  std::error_code addDirectives(InputFile *File);
 
   std::error_code addObject(ObjectFile *File);
   std::error_code addArchive(ArchiveFile *File);