tools: avoid a string duplication
authorSaleem Abdulrasool <compnerd@compnerd.org>
Sun, 13 Apr 2014 22:54:11 +0000 (22:54 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Sun, 13 Apr 2014 22:54:11 +0000 (22:54 +0000)
The auxiliary file records are contiguous and only contain the filename.
Construct a StringRef directly rather than copying to a temporary buffer.

Suggested by majnemer on IRC!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206139 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-objdump/llvm-objdump.cpp

index 095fdca2dd0a268deace407fe02d8eb04dde9700..313816e56e9198ed4045957eb5486074dac45e67 100644 (file)
@@ -695,14 +695,10 @@ static void PrintCOFFSymbolTable(const COFFObjectFile *coff) {
                          , unsigned(asd->Selection));
         break;
       case COFF::IMAGE_SYM_CLASS_FILE:
-        SmallString<261> FileName;
-        for (unsigned AI = i, AE = i + aux_count + 1; AI < AE; ++AI) {
-          const coff_aux_file *AF;
-          if (error(coff->getAuxSymbol<coff_aux_file>(AI, AF)))
-            return;
-          FileName.append(&AF->FileName[0], &AF->FileName[18]);
-        }
-        outs() << "AUX " << FileName << '\n';
+        const coff_aux_file *AF;
+        if (error(coff->getAuxSymbol<coff_aux_file>(i, AF)))
+          return;
+        outs() << "AUX " << StringRef(AF->FileName) << '\n';
         i = i + aux_count;
         aux_count = 0;
         break;