[llvm] r238457 - [Objdump] Allow instruction pretty printing to be specialized by the target triple.
Hans Wennborg
hans at chromium.org
Thu May 28 13:59:34 PDT 2015
On Thu, May 28, 2015 at 1:39 PM, Colin LeMahieu <colinl at codeaurora.org> wrote:
> I'll add the virtual destructor.
Please expedite this if possible; it's breaking my builds.
> -----Original Message-----
> From: Rafael EspĂndola [mailto:rafael.espindola at gmail.com]
> Sent: Thursday, May 28, 2015 3:28 PM
> To: Colin LeMahieu
> Cc: llvm-commits
> Subject: Re: [llvm] r238457 - [Objdump] Allow instruction pretty printing to be specialized by the target triple.
>
> /home/espindola/llvm/llvm/tools/llvm-objdump/llvm-objdump.cpp:205:7:
> warning: '(anonymous namespace)::PrettyPrinter' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor] class PrettyPrinter {
> ^
> 1 warning generated.
>
> Also, this class is just a function pointer, no?
>
>
> On 28 May 2015 at 15:07, Colin LeMahieu <colinl at codeaurora.org> wrote:
>> Author: colinl
>> Date: Thu May 28 14:07:14 2015
>> New Revision: 238457
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=238457&view=rev
>> Log:
>> [Objdump] Allow instruction pretty printing to be specialized by the target triple.
>>
>> Differential Revision: http://reviews.llvm.org/D8427
>>
>> Modified:
>> llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
>>
>> 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=238457&r1=238456&r2=238457&view=diff
>> ======================================================================
>> ========
>> --- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp (original)
>> +++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp Thu May 28 14:07:14
>> +++ 2015
>> @@ -201,6 +201,30 @@ bool llvm::RelocAddressLess(RelocationRe
>> return a_addr < b_addr;
>> }
>>
>> +namespace {
>> +class PrettyPrinter {
>> +public:
>> + virtual void printInst(MCInstPrinter &IP, const MCInst *MI, bool ShowRawInsn,
>> + ArrayRef<uint8_t> Bytes, uint64_t Address,
>> + raw_ostream &OS, StringRef Annot,
>> + MCSubtargetInfo const &STI) {
>> + outs() << format("%8" PRIx64 ":", Address);
>> + if (!NoShowRawInsn) {
>> + outs() << "\t";
>> + dumpBytes(Bytes, outs());
>> + }
>> + IP.printInst(MI, outs(), "", STI);
>> + }
>> +};
>> +PrettyPrinter PrettyPrinterInst;
>> +PrettyPrinter &selectPrettyPrinter(Triple const &Triple,
>> +MCInstPrinter &IP) {
>> + switch(Triple.getArch()) {
>> + default:
>> + return PrettyPrinterInst;
>> + }
>> +}
>> +}
>> +
>> static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
>> const Target *TheTarget = getTarget(Obj);
>> // getTarget() will have already issued a diagnostic if necessary,
>> so @@ -267,6 +291,7 @@ static void DisassembleObject(const Obje
>> << '\n';
>> return;
>> }
>> + PrettyPrinter &PIP = selectPrettyPrinter(Triple(TripleName), *IP);
>>
>> StringRef Fmt = Obj->getBytesInAddress() > 4 ? "\t\t%016" PRIx64 ": " :
>> "\t\t\t%08" PRIx64
>> ": "; @@ -383,12 +408,9 @@ static void DisassembleObject(const Obje
>> if (DisAsm->getInstruction(Inst, Size, Bytes.slice(Index),
>> SectionAddr + Index, DebugOut,
>> CommentStream)) {
>> - outs() << format("%8" PRIx64 ":", SectionAddr + Index);
>> - if (!NoShowRawInsn) {
>> - outs() << "\t";
>> - dumpBytes(ArrayRef<uint8_t>(Bytes.data() + Index, Size), outs());
>> - }
>> - IP->printInst(&Inst, outs(), "", *STI);
>> + PIP.printInst(*IP, &Inst, !NoShowRawInsn,
>> + Bytes.slice(Index, Size),
>> + SectionAddr + Index, outs(), "", *STI);
>> outs() << CommentStream.str();
>> Comments.clear();
>> outs() << "\n";
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list