summaryrefslogtreecommitdiffstats
path: root/llvm/tools
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2019-02-07 01:17:34 +0000
committerSam Clegg <sbc@chromium.org>2019-02-07 01:17:34 +0000
commite450bd7a9df10e1bea28df47c7871e712d070e1d (patch)
treee052e6fa7ad195a90e08687f27b52d486af3b914 /llvm/tools
parentcfe8cd7e06aab1ff4852e4da829aa0e2e1f94214 (diff)
downloadbcm5719-llvm-e450bd7a9df10e1bea28df47c7871e712d070e1d.tar.gz
bcm5719-llvm-e450bd7a9df10e1bea28df47c7871e712d070e1d.zip
[WebAssembly] Expand symbol flags shown by llvm-objdump --symbols
Differential Revision: https://reviews.llvm.org/D57861 llvm-svn: 353357
Diffstat (limited to 'llvm/tools')
-rw-r--r--llvm/tools/llvm-readobj/WasmDumper.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/llvm/tools/llvm-readobj/WasmDumper.cpp b/llvm/tools/llvm-readobj/WasmDumper.cpp
index e8440f6f8de..42851ab6832 100644
--- a/llvm/tools/llvm-readobj/WasmDumper.cpp
+++ b/llvm/tools/llvm-readobj/WasmDumper.cpp
@@ -40,6 +40,18 @@ static const EnumEntry<uint32_t> WasmSectionTypes[] = {
#undef ENUM_ENTRY
};
+static const EnumEntry<unsigned> WasmSymbolFlags[] = {
+#define ENUM_ENTRY(X) \
+ { #X, wasm::WASM_SYMBOL_##X }
+ ENUM_ENTRY(BINDING_GLOBAL),
+ ENUM_ENTRY(BINDING_WEAK),
+ ENUM_ENTRY(BINDING_LOCAL),
+ ENUM_ENTRY(VISIBILITY_DEFAULT),
+ ENUM_ENTRY(VISIBILITY_HIDDEN),
+ ENUM_ENTRY(UNDEFINED),
+#undef ENUM_ENTRY
+};
+
class WasmDumper : public ObjDumper {
public:
WasmDumper(const WasmObjectFile *Obj, ScopedPrinter &Writer)
@@ -209,7 +221,8 @@ void WasmDumper::printSymbol(const SymbolRef &Sym) {
WasmSymbol Symbol = Obj->getWasmSymbol(Sym.getRawDataRefImpl());
W.printString("Name", Symbol.Info.Name);
W.printEnum("Type", Symbol.Info.Kind, makeArrayRef(WasmSymbolTypes));
- W.printHex("Flags", Symbol.Info.Flags);
+ W.printFlags("Flags", Symbol.Info.Flags, makeArrayRef(WasmSymbolFlags));
+
if (Symbol.Info.Flags & wasm::WASM_SYMBOL_UNDEFINED)
W.printString("Module", Symbol.Info.Module);
if (Symbol.Info.Kind != wasm::WASM_SYMBOL_TYPE_DATA) {
OpenPOWER on IntegriCloud