summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-readobj
diff options
context:
space:
mode:
authorPaul Semel <semelpaul@gmail.com>2018-07-01 09:51:59 +0000
committerPaul Semel <semelpaul@gmail.com>2018-07-01 09:51:59 +0000
commit49997adc883b47999a1dfdda2da55e38ef24e2ae (patch)
tree394ce9a817c9ad5d41a8960f32bfd5faa0ab7c4f /llvm/tools/llvm-readobj
parenta2d30b31342ee0de108884bd1b5fb00e89ccb29b (diff)
downloadbcm5719-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.cpp15
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;
}
}
OpenPOWER on IntegriCloud