[llvm] r198441 - For disassembly when adding a symbolic operand that is a C++

Reid Kleckner rnk at google.com
Fri Jan 3 12:02:37 PST 2014


I reverted this in r198445, feel free to cc me when you reland it.


On Fri, Jan 3, 2014 at 11:54 AM, Reid Kleckner <rnk at google.com> wrote:

> Microsoft doesn't ship a <cxxabi.h> header:
>
> http://lab.llvm.org:8011/builders/lld-x86_64-win7/builds/5504/steps/build_Lld/logs/stdio
> MCExternalSymbolizer.cpp(16): fatal error C1083: Cannot open include file:
> 'cxxabi.h': No such file or directory
>
> I'm not familiar with this code, but it seems bad to make the result of
> LLVMDisasmInstruction dependent on the target platform, so throwing this
> behind a quick ifdef isn't necessarily right either.
>
> This also doesn't have any tests.
>
>
> On Fri, Jan 3, 2014 at 11:33 AM, Kevin Enderby <enderby at apple.com> wrote:
>
>> Author: enderby
>> Date: Fri Jan  3 13:33:09 2014
>> New Revision: 198441
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=198441&view=rev
>> Log:
>> For disassembly when adding a symbolic operand that is a C++
>> symbol name, also put the human readable name in a comment.
>>
>> Also fix a bug in LLVMDisasmInstruction() that was not flushing
>> the raw_svector_ostream for the disassembled instruction string
>> before copying it to the output buffer that was causing truncation
>> of the output.
>>
>> rdar://10173828
>>
>> Modified:
>>     llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp
>>     llvm/trunk/lib/MC/MCExternalSymbolizer.cpp
>>
>> Modified: llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp?rev=198441&r1=198440&r2=198441&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp (original)
>> +++ llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp Fri Jan  3 13:33:09
>> 2014
>> @@ -298,6 +298,7 @@ size_t LLVMDisasmInstruction(LLVMDisasmC
>>        emitLatency(DC, Inst);
>>
>>      emitComments(DC, FormattedOS);
>> +    OS.flush();
>>
>>      assert(OutStringSize != 0 && "Output buffer cannot be zero size");
>>      size_t OutputSize = std::min(OutStringSize-1, InsnStr.size());
>>
>> Modified: llvm/trunk/lib/MC/MCExternalSymbolizer.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCExternalSymbolizer.cpp?rev=198441&r1=198440&r2=198441&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/MC/MCExternalSymbolizer.cpp (original)
>> +++ llvm/trunk/lib/MC/MCExternalSymbolizer.cpp Fri Jan  3 13:33:09 2014
>> @@ -13,6 +13,7 @@
>>  #include "llvm/MC/MCInst.h"
>>  #include "llvm/Support/raw_ostream.h"
>>  #include <cstring>
>> +#include <cxxabi.h>
>>
>>  using namespace llvm;
>>
>> @@ -56,6 +57,14 @@ bool MCExternalSymbolizer::tryAddingSymb
>>      if (Name) {
>>        SymbolicOp.AddSymbol.Name = Name;
>>        SymbolicOp.AddSymbol.Present = true;
>> +      // If Name is a C++ symbol name put the human readable name in a
>> comment.
>> +      if (strncmp(Name, "__Z", 3) == 0) {
>> +        char *demangled = abi::__cxa_demangle(Name + 1, 0, 0, 0);
>> +       if (demangled) {
>> +          cStream << demangled;
>> +          free(demangled);
>> +        }
>> +      }
>>      }
>>      // For branches always create an MCExpr so it gets printed as hex
>> address.
>>      else if (IsBranch) {
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140103/4255fe3a/attachment.html>


More information about the llvm-commits mailing list