[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