summaryrefslogtreecommitdiff
path: root/tools/llvm-readobj/llvm-readobj.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2012-12-31 16:05:21 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2012-12-31 16:05:21 +0000
commit148ee4f224be6448834bf039807c70bb1a7c78f5 (patch)
treec4c973421f1e8bcd41abb7bdc41ca169fbf92e63 /tools/llvm-readobj/llvm-readobj.cpp
parentad784790ad28023ef5041beac6c23a8250778f3f (diff)
downloadllvm-148ee4f224be6448834bf039807c70bb1a7c78f5.tar.gz
llvm-148ee4f224be6448834bf039807c70bb1a7c78f5.tar.bz2
llvm-148ee4f224be6448834bf039807c70bb1a7c78f5.tar.xz
Print a header above the symbols. Extracted from a patch by Sami Liedes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171302 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-readobj/llvm-readobj.cpp')
-rw-r--r--tools/llvm-readobj/llvm-readobj.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/llvm-readobj/llvm-readobj.cpp b/tools/llvm-readobj/llvm-readobj.cpp
index 8f8804a7c4..81d2bfb730 100644
--- a/tools/llvm-readobj/llvm-readobj.cpp
+++ b/tools/llvm-readobj/llvm-readobj.cpp
@@ -33,6 +33,16 @@ using namespace llvm::object;
static cl::opt<std::string>
InputFilename(cl::Positional, cl::desc("<input object>"), cl::init(""));
+static void dumpSymbolHeader() {
+ outs() << format(" %-32s", (const char*)"Name")
+ << format(" %-4s", (const char*)"Type")
+ << format(" %-16s", (const char*)"Address")
+ << format(" %-16s", (const char*)"Size")
+ << format(" %-16s", (const char*)"FileOffset")
+ << format(" %-26s", (const char*)"Flags")
+ << "\n";
+}
+
static const char *getTypeStr(SymbolRef::Type Type) {
switch (Type) {
case SymbolRef::ST_Unknown: return "?";
@@ -118,6 +128,7 @@ static void dumpSymbols(const ObjectFile *obj) {
error_code ec;
uint32_t count = 0;
outs() << "Symbols:\n";
+ dumpSymbolHeader();
symbol_iterator it = obj->begin_symbols();
symbol_iterator ie = obj->end_symbols();
while (it != ie) {
@@ -135,6 +146,7 @@ static void dumpDynamicSymbols(const ObjectFile *obj) {
error_code ec;
uint32_t count = 0;
outs() << "Dynamic Symbols:\n";
+ dumpSymbolHeader();
symbol_iterator it = obj->begin_dynamic_symbols();
symbol_iterator ie = obj->end_dynamic_symbols();
while (it != ie) {