[llvm] r198441 - For disassembly when adding a symbolic operand that is a C++
Reid Kleckner
rnk at google.com
Fri Jan 3 11:54:26 PST 2014
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/414c5561/attachment.html>
More information about the llvm-commits
mailing list