summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorColin LeMahieu <colinl@codeaurora.org>2015-01-23 20:06:24 +0000
committerColin LeMahieu <colinl@codeaurora.org>2015-01-23 20:06:24 +0000
commitbc2f47a76eb1471f0795b4e6d29e83836d2aff28 (patch)
treebe3f9eb0a88b87fa2e765fd6328621a5e6fb54a9 /llvm
parentc3c8b27616a119369ffbe2033c5eb645fde5d358 (diff)
downloadbcm5719-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-elfbin0 -> 598 bytes
-rw-r--r--llvm/test/tools/llvm-objdump/common-symbol-elf.test3
-rw-r--r--llvm/tools/llvm-objdump/llvm-objdump.cpp12
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
new file mode 100644
index 00000000000..9609edb041f
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/Inputs/common-symbol-elf
Binary files differ
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 {
OpenPOWER on IntegriCloud