[llvm] r346623 - [llvm-objdump] Use WithColor for error reporting

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 12 09:48:57 PST 2018


Test case(s) (for the other tool changes too)?

On Sun, Nov 11, 2018 at 2:14 PM Jonas Devlieghere via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: jdevlieghere
> Date: Sun Nov 11 14:12:04 2018
> New Revision: 346623
>
> URL: http://llvm.org/viewvc/llvm-project?rev=346623&view=rev
> Log:
> [llvm-objdump] Use WithColor for error reporting
>
> Use helpers from Support/WithError.h to print errors.
>
> Modified:
>     llvm/trunk/tools/llvm-objdump/COFFDump.cpp
>     llvm/trunk/tools/llvm-objdump/MachODump.cpp
>     llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
>
> Modified: llvm/trunk/tools/llvm-objdump/COFFDump.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/COFFDump.cpp?rev=346623&r1=346622&r2=346623&view=diff
>
> ==============================================================================
> --- llvm/trunk/tools/llvm-objdump/COFFDump.cpp (original)
> +++ llvm/trunk/tools/llvm-objdump/COFFDump.cpp Sun Nov 11 14:12:04 2018
> @@ -22,6 +22,7 @@
>  #include "llvm/Object/ObjectFile.h"
>  #include "llvm/Support/Format.h"
>  #include "llvm/Support/Win64EH.h"
> +#include "llvm/Support/WithColor.h"
>  #include "llvm/Support/raw_ostream.h"
>
>  using namespace llvm;
> @@ -579,8 +580,9 @@ static void printRuntimeFunctionRels(con
>
>  void llvm::printCOFFUnwindInfo(const COFFObjectFile *Obj) {
>    if (Obj->getMachine() != COFF::IMAGE_FILE_MACHINE_AMD64) {
> -    errs() << "Unsupported image machine type "
> -              "(currently only AMD64 is supported).\n";
> +    WithColor::error(errs(), "llvm-objdump")
> +        << "unsupported image machine type "
> +           "(currently only AMD64 is supported).\n";
>      return;
>    }
>
>
> Modified: llvm/trunk/tools/llvm-objdump/MachODump.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/MachODump.cpp?rev=346623&r1=346622&r2=346623&view=diff
>
> ==============================================================================
> --- llvm/trunk/tools/llvm-objdump/MachODump.cpp (original)
> +++ llvm/trunk/tools/llvm-objdump/MachODump.cpp Sun Nov 11 14:12:04 2018
> @@ -44,6 +44,7 @@
>  #include "llvm/Support/TargetRegistry.h"
>  #include "llvm/Support/TargetSelect.h"
>  #include "llvm/Support/ToolOutputFile.h"
> +#include "llvm/Support/WithColor.h"
>  #include "llvm/Support/raw_ostream.h"
>  #include <algorithm>
>  #include <cstring>
> @@ -166,7 +167,7 @@ static const Target *GetTarget(const Mac
>    if (*ThumbTarget)
>      return TheTarget;
>
> -  errs() << "llvm-objdump: error: unable to get target for '";
> +  WithColor::error(errs(), "llvm-objdump") << "unable to get target for
> '";
>    if (!TheTarget)
>      errs() << TripleName;
>    else
> @@ -483,7 +484,7 @@ static void PrintRType(const uint64_t cp
>      "GOTLDP  ", "GOTLDPOF", "PTRTGOT ", "TLVLDP  ", "TLVLDPOF",
>      "ADDEND  ", " 11 (?) ", " 12 (?) ", " 13 (?) ", " 14 (?) ", " 15 (?) "
>    };
> -
> +
>    if (r_type > 0xf){
>      outs() << format("%-7u", r_type) << " ";
>      return;
> @@ -552,7 +553,7 @@ static void PrintRelocationEntries(const
>    bool previous_arm_half = false;
>    bool previous_sectdiff = false;
>    uint32_t sectdiff_r_type = 0;
> -
> +
>    for (relocation_iterator Reloc = Begin; Reloc != End; ++Reloc) {
>      const DataRefImpl Rel = Reloc->getRawDataRefImpl();
>      const MachO::any_relocation_info RE = O->getRelocation(Rel);
> @@ -567,7 +568,7 @@ static void PrintRelocationEntries(const
>                                O->getScatteredRelocationValue(RE) : 0);
>      const unsigned r_symbolnum = (r_scattered ? 0 :
>                                    O->getPlainRelocationSymbolNum(RE));
> -
> +
>      if (r_scattered && cputype != MachO::CPU_TYPE_X86_64) {
>        if (verbose) {
>          // scattered: address
> @@ -578,20 +579,20 @@ static void PrintRelocationEntries(const
>            outs() << "         ";
>          else
>            outs() << format("%08x ", (unsigned int)r_address);
> -
> +
>          // scattered: pcrel
>          if (r_pcrel)
>            outs() << "True  ";
>          else
>            outs() << "False ";
> -
> +
>          // scattered: length
>          PrintRLength(cputype, r_type, r_length, previous_arm_half);
> -
> +
>          // scattered: extern & type
>          outs() << "n/a    ";
>          PrintRType(cputype, r_type);
> -
> +
>          // scattered: scattered & value
>          outs() << format("True      0x%08x", (unsigned int)r_value);
>          if (previous_sectdiff == false) {
> @@ -639,22 +640,22 @@ static void PrintRelocationEntries(const
>            outs() << "         ";
>          else
>            outs() << format("%08x ", (unsigned int)r_address);
> -
> +
>          // plain: pcrel
>          if (r_pcrel)
>            outs() << "True  ";
>          else
>            outs() << "False ";
> -
> +
>          // plain: length
>          PrintRLength(cputype, r_type, r_length, previous_arm_half);
> -
> +
>          if (r_extern) {
>            // plain: extern & type & scattered
>            outs() << "True   ";
>            PrintRType(cputype, r_type);
>            outs() << "False     ";
> -
> +
>            // plain: symbolnum/value
>            if (r_symbolnum > Symtab.nsyms)
>              outs() << format("?(%d)\n", r_symbolnum);
> @@ -675,7 +676,7 @@ static void PrintRelocationEntries(const
>            outs() << "False  ";
>            PrintRType(cputype, r_type);
>            outs() << "False     ";
> -
> +
>            // plain: symbolnum/value
>            if (cputype == MachO::CPU_TYPE_ARM &&
>                     r_type == llvm::MachO::ARM_RELOC_PAIR)
> @@ -1559,7 +1560,8 @@ static bool checkMachOAndArchFlags(Objec
>    if (none_of(ArchFlags, [&](const std::string &Name) {
>          return Name == ArchFlagName;
>        })) {
> -    errs() << "llvm-objdump: " + Filename + ": No architecture
> specified.\n";
> +    WithColor::error(errs(), "llvm-objdump")
> +        << Filename << ": no architecture specified.\n";
>      return false;
>    }
>    return true;
> @@ -1944,8 +1946,9 @@ static bool ValidateArchFlags() {
>        ArchAll = true;
>      } else {
>        if (!MachOObjectFile::isValidArch(ArchFlags[i])) {
> -        errs() << "llvm-objdump: Unknown architecture named '" +
> ArchFlags[i] +
> -                      "'for the -arch option\n";
> +        WithColor::error(errs(), "llvm-objdump")
> +            << "unknown architecture named '" + ArchFlags[i] +
> +                   "'for the -arch option\n";
>          return false;
>        }
>      }
> @@ -2005,8 +2008,9 @@ void llvm::ParseInputMachO(StringRef Fil
>      if (MachOObjectFile *MachOOF = dyn_cast<MachOObjectFile>(&*O))
>        ProcessMachO(Filename, MachOOF);
>      else
> -      errs() << "llvm-objdump: '" << Filename << "': "
> -             << "Object is not a Mach-O file type.\n";
> +      WithColor::error(errs(), "llvm-objdump")
> +          << Filename << "': "
> +          << "object is not a Mach-O file type.\n";
>      return;
>    }
>    llvm_unreachable("Input object can't be invalid at this point");
> @@ -2079,8 +2083,9 @@ void llvm::ParseInputMachO(MachOUniversa
>          }
>        }
>        if (!ArchFound) {
> -        errs() << "llvm-objdump: file: " + Filename + " does not contain "
> -                << "architecture: " + ArchFlags[i] + "\n";
> +        WithColor::error(errs(), "llvm-objdump")
> +            << "file: " + Filename + " does not contain "
> +            << "architecture: " + ArchFlags[i] + "\n";
>          return;
>        }
>      }
> @@ -6184,8 +6189,9 @@ static void PrintXarFilesSummary(const c
>
>    ScopedXarIter xi;
>    if (!xi) {
> -    errs() << "Can't obtain an xar iterator for xar archive "
> -           << XarFilename << "\n";
> +    WithColor::error(errs(), "llvm-objdump")
> +        << "can't obtain an xar iterator for xar archive " << XarFilename
> +        << "\n";
>      return;
>    }
>
> @@ -6193,8 +6199,9 @@ static void PrintXarFilesSummary(const c
>    for (xf = xar_file_first(xar, xi); xf; xf = xar_file_next(xi)) {
>      ScopedXarIter xp;
>      if(!xp){
> -      errs() << "Can't obtain an xar iterator for xar archive "
> -             << XarFilename << "\n";
> +      WithColor::error(errs(), "llvm-objdump")
> +          << "can't obtain an xar iterator for xar archive " <<
> XarFilename
> +          << "\n";
>        return;
>      }
>      type = nullptr;
> @@ -6318,7 +6325,7 @@ static void DumpBitcodeSection(MachOObje
>    std::error_code XarEC =
>        sys::fs::createTemporaryFile("llvm-objdump", "xar", FD,
> XarFilename);
>    if (XarEC) {
> -    errs() << XarEC.message() << "\n";
> +    WithColor::error(errs(), "llvm-objdump") << XarEC.message() << "\n";
>      return;
>    }
>    ToolOutputFile XarFile(XarFilename, FD);
> @@ -6331,7 +6338,8 @@ static void DumpBitcodeSection(MachOObje
>
>    ScopedXarFile xar(XarFilename.c_str(), READ);
>    if (!xar) {
> -    errs() << "Can't create temporary xar archive " << XarFilename <<
> "\n";
> +    WithColor::error(errs(), "llvm-objdump")
> +        << "can't create temporary xar archive " << XarFilename << "\n";
>      return;
>    }
>
> @@ -6339,7 +6347,7 @@ static void DumpBitcodeSection(MachOObje
>    std::error_code TocEC =
>        sys::fs::createTemporaryFile("llvm-objdump", "toc", TocFilename);
>    if (TocEC) {
> -    errs() << TocEC.message() << "\n";
> +    WithColor::error(errs(), "llvm-objdump") << TocEC.message() << "\n";
>      return;
>    }
>    xar_serialize(xar, TocFilename.c_str());
> @@ -6356,7 +6364,7 @@ static void DumpBitcodeSection(MachOObje
>    ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr =
>      MemoryBuffer::getFileOrSTDIN(TocFilename.c_str());
>    if (std::error_code EC = FileOrErr.getError()) {
> -    errs() << EC.message() << "\n";
> +    WithColor::error(errs(), "llvm-objdump") << EC.message() << "\n";
>      return;
>    }
>    std::unique_ptr<MemoryBuffer> &Buffer = FileOrErr.get();
> @@ -6371,8 +6379,9 @@ static void DumpBitcodeSection(MachOObje
>    // TODO: Go through the xar's files.
>    ScopedXarIter xi;
>    if(!xi){
> -    errs() << "Can't obtain an xar iterator for xar archive "
> -           << XarFilename.c_str() << "\n";
> +    WithColor::error(errs(), "llvm-objdump")
> +        << "can't obtain an xar iterator for xar archive "
> +        << XarFilename.c_str() << "\n";
>      return;
>    }
>    for(xar_file_t xf = xar_file_first(xar, xi); xf; xf =
> xar_file_next(xi)){
> @@ -6382,8 +6391,9 @@ static void DumpBitcodeSection(MachOObje
>
>      ScopedXarIter xp;
>      if(!xp){
> -      errs() << "Can't obtain an xar iterator for xar archive "
> -             << XarFilename.c_str() << "\n";
> +      WithColor::error(errs(), "llvm-objdump")
> +          << "can't obtain an xar iterator for xar archive "
> +          << XarFilename.c_str() << "\n";
>        return;
>      }
>      member_name = NULL;
> @@ -6860,8 +6870,8 @@ static void DisassembleMachO(StringRef F
>    // IP->setCommentStream(CommentStream);
>
>    if (!AsmInfo || !STI || !DisAsm || !IP) {
> -    errs() << "error: couldn't initialize disassembler for target "
> -           << TripleName << '\n';
> +    WithColor::error(errs(), "llvm-objdump")
> +        << "couldn't initialize disassembler for target " << TripleName
> << '\n';
>      return;
>    }
>
> @@ -6902,8 +6912,9 @@ static void DisassembleMachO(StringRef F
>    }
>
>    if (ThumbTarget && (!ThumbAsmInfo || !ThumbSTI || !ThumbDisAsm ||
> !ThumbIP)) {
> -    errs() << "error: couldn't initialize disassembler for target "
> -           << ThumbTripleName << '\n';
> +    WithColor::error(errs(), "llvm-objdump")
> +        << "couldn't initialize disassembler for target " <<
> ThumbTripleName
> +        << '\n';
>      return;
>    }
>
> @@ -6956,7 +6967,8 @@ static void DisassembleMachO(StringRef F
>        ErrorOr<std::unique_ptr<MemoryBuffer>> BufOrErr =
>            MemoryBuffer::getFileOrSTDIN(DSYMFile);
>        if (std::error_code EC = BufOrErr.getError()) {
> -        errs() << "llvm-objdump: " << Filename << ": " << EC.message() <<
> '\n';
> +        WithColor::error(errs(), "llvm-objdump")
> +            << Filename << ": " << EC.message() << '\n';
>          return;
>        }
>        Expected<std::unique_ptr<MachOObjectFile>> DbgObjCheck =
> @@ -7243,7 +7255,8 @@ static void DisassembleMachO(StringRef F
>              outs() << format("\t.short\t0x%04x\n", opcode);
>              Size = 2;
>            } else{
> -            errs() << "llvm-objdump: warning: invalid instruction
> encoding\n";
> +            WithColor::warning(errs(), "llvm-objdump")
> +                << "invalid instruction encoding\n";
>              if (Size == 0)
>                Size = 1; // skip illegible bytes
>            }
> @@ -7290,7 +7303,8 @@ static void DisassembleMachO(StringRef F
>                               *(Bytes.data() + Index) & 0xff);
>              InstSize = 1; // skip exactly one illegible byte and move on.
>            } else {
> -            errs() << "llvm-objdump: warning: invalid instruction
> encoding\n";
> +            WithColor::warning(errs(), "llvm-objdump")
> +                << "invalid instruction encoding\n";
>              if (InstSize == 0)
>                InstSize = 1; // skip illegible bytes
>            }
>
> Modified: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp?rev=346623&r1=346622&r2=346623&view=diff
>
> ==============================================================================
> --- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp (original)
> +++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp Sun Nov 11 14:12:04 2018
> @@ -59,6 +59,7 @@
>  #include "llvm/Support/StringSaver.h"
>  #include "llvm/Support/TargetRegistry.h"
>  #include "llvm/Support/TargetSelect.h"
> +#include "llvm/Support/WithColor.h"
>  #include "llvm/Support/raw_ostream.h"
>  #include <algorithm>
>  #include <cctype>
> @@ -337,33 +338,35 @@ SectionFilter ToolSectionFilter(llvm::ob
>  void llvm::error(std::error_code EC) {
>    if (!EC)
>      return;
> -
> -  errs() << ToolName << ": error reading file: " << EC.message() << ".\n";
> +  WithColor::error(errs(), ToolName)
> +      << "reading file: " << EC.message() << ".\n";
>    errs().flush();
>    exit(1);
>  }
>
>  LLVM_ATTRIBUTE_NORETURN void llvm::error(Twine Message) {
> -  errs() << ToolName << ": " << Message << ".\n";
> +  WithColor::error(errs(), ToolName) << Message << ".\n";
>    errs().flush();
>    exit(1);
>  }
>
>  void llvm::warn(StringRef Message) {
> -  errs() << ToolName << ": warning: " << Message << ".\n";
> +  WithColor::warning(errs(), ToolName) << Message << ".\n";
>    errs().flush();
>  }
>
>  LLVM_ATTRIBUTE_NORETURN void llvm::report_error(StringRef File,
>                                                  Twine Message) {
> -  errs() << ToolName << ": '" << File << "': " << Message << ".\n";
> +  WithColor::error(errs(), ToolName)
> +      << "'" << File << "': " << Message << ".\n";
>    exit(1);
>  }
>
>  LLVM_ATTRIBUTE_NORETURN void llvm::report_error(StringRef File,
>                                                  std::error_code EC) {
>    assert(EC);
> -  errs() << ToolName << ": '" << File << "': " << EC.message() << ".\n";
> +  WithColor::error(errs(), ToolName)
> +      << "'" << File << "': " << EC.message() << ".\n";
>    exit(1);
>  }
>
> @@ -374,7 +377,7 @@ LLVM_ATTRIBUTE_NORETURN void llvm::repor
>    raw_string_ostream OS(Buf);
>    logAllUnhandledErrors(std::move(E), OS);
>    OS.flush();
> -  errs() << ToolName << ": '" << File << "': " << Buf;
> +  WithColor::error(errs(), ToolName) << "'" << File << "': " << Buf;
>    exit(1);
>  }
>
> @@ -383,7 +386,7 @@ LLVM_ATTRIBUTE_NORETURN void llvm::repor
>                                                  llvm::Error E,
>                                                  StringRef
> ArchitectureName) {
>    assert(E);
> -  errs() << ToolName << ": ";
> +  WithColor::error(errs(), ToolName);
>    if (ArchiveName != "")
>      errs() << ArchiveName << "(" << FileName << ")";
>    else
> @@ -2071,8 +2074,9 @@ static void PrintUnwindInfo(const Object
>      printMachOUnwindInfo(MachO);
>    else {
>      // TODO: Extract DWARF dump tool to objdump.
> -    errs() << "This operation is only currently supported "
> -              "for COFF and MachO object files.\n";
> +    WithColor::error(errs(), ToolName)
> +        << "This operation is only currently supported "
> +           "for COFF and MachO object files.\n";
>      return;
>    }
>  }
> @@ -2082,8 +2086,9 @@ void llvm::printExportsTrie(const Object
>    if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
>      printMachOExportsTrie(MachO);
>    else {
> -    errs() << "This operation is only currently supported "
> -              "for Mach-O executable files.\n";
> +    WithColor::error(errs(), ToolName)
> +        << "This operation is only currently supported "
> +           "for Mach-O executable files.\n";
>      return;
>    }
>  }
> @@ -2093,8 +2098,9 @@ void llvm::printRebaseTable(ObjectFile *
>    if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
>      printMachORebaseTable(MachO);
>    else {
> -    errs() << "This operation is only currently supported "
> -              "for Mach-O executable files.\n";
> +    WithColor::error(errs(), ToolName)
> +        << "This operation is only currently supported "
> +           "for Mach-O executable files.\n";
>      return;
>    }
>  }
> @@ -2104,8 +2110,9 @@ void llvm::printBindTable(ObjectFile *o)
>    if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
>      printMachOBindTable(MachO);
>    else {
> -    errs() << "This operation is only currently supported "
> -              "for Mach-O executable files.\n";
> +    WithColor::error(errs(), ToolName)
> +        << "This operation is only currently supported "
> +           "for Mach-O executable files.\n";
>      return;
>    }
>  }
> @@ -2115,8 +2122,9 @@ void llvm::printLazyBindTable(ObjectFile
>    if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
>      printMachOLazyBindTable(MachO);
>    else {
> -    errs() << "This operation is only currently supported "
> -              "for Mach-O executable files.\n";
> +    WithColor::error(errs(), ToolName)
> +        << "This operation is only currently supported "
> +           "for Mach-O executable files.\n";
>      return;
>    }
>  }
> @@ -2126,8 +2134,9 @@ void llvm::printWeakBindTable(ObjectFile
>    if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
>      printMachOWeakBindTable(MachO);
>    else {
> -    errs() << "This operation is only currently supported "
> -              "for Mach-O executable files.\n";
> +    WithColor::error(errs(), ToolName)
> +        << "This operation is only currently supported "
> +           "for Mach-O executable files.\n";
>      return;
>    }
>  }
> @@ -2136,10 +2145,11 @@ void llvm::printWeakBindTable(ObjectFile
>  /// into llvm-bcanalyzer.
>  void llvm::printRawClangAST(const ObjectFile *Obj) {
>    if (outs().is_displayed()) {
> -    errs() << "The -raw-clang-ast option will dump the raw binary
> contents of "
> -              "the clang ast section.\n"
> -              "Please redirect the output to a file or another program
> such as "
> -              "llvm-bcanalyzer.\n";
> +    WithColor::error(errs(), ToolName)
> +        << "The -raw-clang-ast option will dump the raw binary contents
> of "
> +           "the clang ast section.\n"
> +           "Please redirect the output to a file or another program such
> as "
> +           "llvm-bcanalyzer.\n";
>      return;
>    }
>
> @@ -2173,8 +2183,9 @@ static void printFaultMaps(const ObjectF
>    } else if (isa<MachOObjectFile>(Obj)) {
>      FaultMapSectionName = "__llvm_faultmaps";
>    } else {
> -    errs() << "This operation is only currently supported "
> -              "for ELF and Mach-O executable files.\n";
> +    WithColor::error(errs(), ToolName)
> +        << "This operation is only currently supported "
> +           "for ELF and Mach-O executable files.\n";
>      return;
>    }
>
> @@ -2243,7 +2254,7 @@ static void printFileHeaders(const Objec
>  static void printArchiveChild(StringRef Filename, const Archive::Child
> &C) {
>    Expected<sys::fs::perms> ModeOrErr = C.getAccessMode();
>    if (!ModeOrErr) {
> -    errs() << "ill-formed archive entry.\n";
> +    WithColor::error(errs(), ToolName) << "ill-formed archive entry.\n";
>      consumeError(ModeOrErr.takeError());
>      return;
>    }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181112/34baa231/attachment-0001.html>


More information about the llvm-commits mailing list