diff options
author | Andrew Ng <andrew.ng@sony.com> | 2024-03-28 11:41:49 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-28 11:41:49 +0000 |
commit | c9db031c48852af491747dab86ef6f19195eb20d (patch) | |
tree | 9e8fc8bbdbde0436873169de8ee15a97cf12392b /llvm/tools/llvm-objdump/llvm-objdump.cpp | |
parent | c13556c0b0aaeb9794d3e2864c8dd9880661f909 (diff) | |
download | llvm-c9db031c48852af491747dab86ef6f19195eb20d.zip llvm-c9db031c48852af491747dab86ef6f19195eb20d.tar.gz llvm-c9db031c48852af491747dab86ef6f19195eb20d.tar.bz2 |
[Support] Fix color handling in formatted_raw_ostream (#86700)
The color methods in formatted_raw_ostream were forwarding directly to
the underlying stream without considering existing buffered output. This
would cause incorrect colored output for buffered uses of
formatted_raw_ostream.
Fix this issue by applying the color to the formatted_raw_ostream itself
and temporarily disabling scanning of any color related output so as not
to affect the position tracking.
This fix means that workarounds that forced formatted_raw_ostream
buffering to be disabled can be removed. In the case of llvm-objdump,
this can improve disassembly performance when redirecting to a file by
more than an order of magnitude on both Windows and Linux. This
improvement restores the disassembly performance when redirecting to a
file to a level similar to before color support was added.
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 7 |
1 files changed, 0 insertions, 7 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 78cf67b..9b65ea5 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -2115,13 +2115,6 @@ disassembleObject(ObjectFile &Obj, const ObjectFile &DbgObj, formatted_raw_ostream FOS(outs()); - // FIXME: Workaround for bug in formatted_raw_ostream. Color escape codes - // are (incorrectly) written directly to the unbuffered raw_ostream - // wrapped by the formatted_raw_ostream. - if (DisassemblyColor == ColorOutput::Enable || - DisassemblyColor == ColorOutput::Auto) - FOS.SetUnbuffered(); - std::unordered_map<uint64_t, std::string> AllLabels; std::unordered_map<uint64_t, std::vector<BBAddrMapLabel>> BBAddrMapLabels; if (SymbolizeOperands) { |