diff options
author | Colin LeMahieu <colinl@codeaurora.org> | 2015-01-23 20:06:24 +0000 |
---|---|---|
committer | Colin LeMahieu <colinl@codeaurora.org> | 2015-01-23 20:06:24 +0000 |
commit | bc2f47a76eb1471f0795b4e6d29e83836d2aff28 (patch) | |
tree | be3f9eb0a88b87fa2e765fd6328621a5e6fb54a9 /llvm | |
parent | c3c8b27616a119369ffbe2033c5eb645fde5d358 (diff) | |
download | bcm5719-llvm-bc2f47a76eb1471f0795b4e6d29e83836d2aff28.tar.gz bcm5719-llvm-bc2f47a76eb1471f0795b4e6d29e83836d2aff28.zip |
[Objdump] Output information about common symbols in a way closer to GNU objdump.
llvm-svn: 226932
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/test/tools/llvm-objdump/Inputs/common-symbol-elf | bin | 0 -> 598 bytes | |||
-rw-r--r-- | llvm/test/tools/llvm-objdump/common-symbol-elf.test | 3 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 12 |
3 files changed, 14 insertions, 1 deletions
diff --git a/llvm/test/tools/llvm-objdump/Inputs/common-symbol-elf b/llvm/test/tools/llvm-objdump/Inputs/common-symbol-elf Binary files differnew file mode 100644 index 00000000000..9609edb041f --- /dev/null +++ b/llvm/test/tools/llvm-objdump/Inputs/common-symbol-elf diff --git a/llvm/test/tools/llvm-objdump/common-symbol-elf.test b/llvm/test/tools/llvm-objdump/common-symbol-elf.test new file mode 100644 index 00000000000..32df05ac051 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/common-symbol-elf.test @@ -0,0 +1,3 @@ +// RUN: llvm-objdump -t %p/Inputs/common-symbol-elf | FileCheck %s + +CHECK: 00000400 g *COM* 00000008 common_symbol diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index cd94a3a49c6..1204a973d45 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -642,7 +642,15 @@ void llvm::PrintSymbolTable(const ObjectFile *o) { bool Global = Flags & SymbolRef::SF_Global; bool Weak = Flags & SymbolRef::SF_Weak; bool Absolute = Flags & SymbolRef::SF_Absolute; - + bool Common = Flags & SymbolRef::SF_Common; + + if (Common) { + uint32_t Alignment; + if (error(Symbol.getAlignment(Alignment))) + Alignment = 0; + Address = Size; + Size = Alignment; + } if (Address == UnknownAddressOrSize) Address = 0; if (Size == UnknownAddressOrSize) @@ -672,6 +680,8 @@ void llvm::PrintSymbolTable(const ObjectFile *o) { << ' '; if (Absolute) { outs() << "*ABS*"; + } else if (Common) { + outs() << "*COM*"; } else if (Section == o->section_end()) { outs() << "*UND*"; } else { |