diff options
author | Paul Semel <semelpaul@gmail.com> | 2018-07-01 09:51:59 +0000 |
---|---|---|
committer | Paul Semel <semelpaul@gmail.com> | 2018-07-01 09:51:59 +0000 |
commit | 49997adc883b47999a1dfdda2da55e38ef24e2ae (patch) | |
tree | 394ce9a817c9ad5d41a8960f32bfd5faa0ab7c4f /llvm/tools/llvm-readobj | |
parent | a2d30b31342ee0de108884bd1b5fb00e89ccb29b (diff) | |
download | bcm5719-llvm-49997adc883b47999a1dfdda2da55e38ef24e2ae.tar.gz bcm5719-llvm-49997adc883b47999a1dfdda2da55e38ef24e2ae.zip |
[llvm-readobj] Fix printing format
We were printing every character, even those that weren't printable. It
doesn't really make sense for this option.
The string content was sticked to its address, added two spaces in
between.
Differential Revision: https://reviews.llvm.org/D48271
llvm-svn: 336058
Diffstat (limited to 'llvm/tools/llvm-readobj')
-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; } } |