diff options
Diffstat (limited to 'llvm/tools/llvm-readobj/ELFDumper.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index 9a2be3100ac..6bf7a811e64 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -3275,6 +3275,11 @@ void GNUStyle<ELFT>::printProgramHeaders(const ELFO *Obj) { } } +void printAsPrintable(raw_ostream &W, StringRef S) { + for (char C : S) + W << (isprint(C) ? C : '.'); +} + template <class ELFT> void GNUStyle<ELFT>::printSectionAsString(const ELFO *Obj, StringRef SectionName) { @@ -3298,8 +3303,9 @@ void GNUStyle<ELFT>::printSectionAsString(const ELFO *Obj, CurrentWord++; continue; } - OS << format("[%6tx]", CurrentWord - SecContent); - OS << format(" %.*s\n", WordSize, CurrentWord); + OS << format("[%6tx] ", CurrentWord - SecContent); + printAsPrintable(OS, StringRef(CurrentWord, WordSize)); + OS << '\n'; CurrentWord += WordSize + 1; } OS.flush(); @@ -4361,8 +4367,9 @@ void LLVMStyle<ELFT>::printSectionAsString(const ELFO *Obj, W.startLine() << "[" << to_string( format_hex_no_prefix((CurrentWord - SecContent), 6)) - << "]"; - W.startLine() << format(" %.*s\n", WordSize, CurrentWord); + << "] "; + printAsPrintable(W.startLine(), StringRef(CurrentWord, WordSize)); + W.startLine() << '\n'; CurrentWord += WordSize + 1; } } |