[llvm] r353357 - [WebAssembly] Expand symbol flags shown by llvm-objdump --symbols
Sam Clegg via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 6 17:17:34 PST 2019
Author: sbc
Date: Wed Feb 6 17:17:34 2019
New Revision: 353357
URL: http://llvm.org/viewvc/llvm-project?rev=353357&view=rev
Log:
[WebAssembly] Expand symbol flags shown by llvm-objdump --symbols
Differential Revision: https://reviews.llvm.org/D57861
Modified:
llvm/trunk/test/MC/WebAssembly/basic-assembly.s
llvm/trunk/test/MC/WebAssembly/debug-info.ll
llvm/trunk/test/MC/WebAssembly/function-alias.ll
llvm/trunk/tools/llvm-readobj/WasmDumper.cpp
Modified: llvm/trunk/test/MC/WebAssembly/basic-assembly.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/WebAssembly/basic-assembly.s?rev=353357&r1=353356&r2=353357&view=diff
==============================================================================
--- llvm/trunk/test/MC/WebAssembly/basic-assembly.s (original)
+++ llvm/trunk/test/MC/WebAssembly/basic-assembly.s Wed Feb 6 17:17:34 2019
@@ -1,6 +1,6 @@
# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+unimplemented-simd128,+nontrapping-fptoint,+exception-handling < %s | FileCheck %s
-# this one is just here to see if it converts to .o without errors, but doesn't check any output:
-# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj -mattr=+unimplemented-simd128,+nontrapping-fptoint,+exception-handling < %s
+# Check that it converts to .o without errors, but don't check any output:
+# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj -mattr=+unimplemented-simd128,+nontrapping-fptoint,+exception-handling -o %t.o < %s
test0:
# Test all types:
Modified: llvm/trunk/test/MC/WebAssembly/debug-info.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/WebAssembly/debug-info.ll?rev=353357&r1=353356&r2=353357&view=diff
==============================================================================
--- llvm/trunk/test/MC/WebAssembly/debug-info.ll (original)
+++ llvm/trunk/test/MC/WebAssembly/debug-info.ll Wed Feb 6 17:17:34 2019
@@ -165,13 +165,17 @@
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: f2
; CHECK-NEXT: Type: FUNCTION (0x0)
-; CHECK-NEXT: Flags: 0x4
+; CHECK-NEXT: Flags [ (0x4)
+; CHECK-NEXT: VISIBILITY_HIDDEN (0x4)
+; CHECK-NEXT: ]
; CHECK-NEXT: ElementIndex: 0x0
; CHECK-NEXT: }
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: foo
; CHECK-NEXT: Type: DATA (0x1)
-; CHECK-NEXT: Flags: 0x4
+; CHECK-NEXT: Flags [ (0x4)
+; CHECK-NEXT: VISIBILITY_HIDDEN (0x4)
+; CHECK-NEXT: ]
; CHECK-NEXT: Offset: 0x0
; CHECK-NEXT: Segment: 0x0
; CHECK-NEXT: Size: 0x4
@@ -179,13 +183,17 @@
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: myextern
; CHECK-NEXT: Type: DATA (0x1)
-; CHECK-NEXT: Flags: 0x10
+; CHECK-NEXT: Flags [ (0x10)
+; CHECK-NEXT: UNDEFINED (0x10)
+; CHECK-NEXT: ]
; CHECK-NEXT: Module:
; CHECK-NEXT: }
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: ptr2
; CHECK-NEXT: Type: DATA (0x1)
-; CHECK-NEXT: Flags: 0x4
+; CHECK-NEXT: Flags [ (0x4)
+; CHECK-NEXT: VISIBILITY_HIDDEN (0x4)
+; CHECK-NEXT: ]
; CHECK-NEXT: Offset: 0x0
; CHECK-NEXT: Segment: 0x1
; CHECK-NEXT: Size: 0x4
@@ -193,25 +201,33 @@
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: .debug_str
; CHECK-NEXT: Type: SECTION (0x3)
-; CHECK-NEXT: Flags: 0x2
+; CHECK-NEXT: Flags [ (0x2)
+; CHECK-NEXT: BINDING_LOCAL (0x2)
+; CHECK-NEXT: ]
; CHECK-NEXT: ElementIndex: 0x6
; CHECK-NEXT: }
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: .debug_abbrev
; CHECK-NEXT: Type: SECTION (0x3)
-; CHECK-NEXT: Flags: 0x2
+; CHECK-NEXT: Flags [ (0x2)
+; CHECK-NEXT: BINDING_LOCAL (0x2)
+; CHECK-NEXT: ]
; CHECK-NEXT: ElementIndex: 0x7
; CHECK-NEXT: }
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: .debug_info
; CHECK-NEXT: Type: SECTION (0x3)
-; CHECK-NEXT: Flags: 0x2
+; CHECK-NEXT: Flags [ (0x2)
+; CHECK-NEXT: BINDING_LOCAL (0x2)
+; CHECK-NEXT: ]
; CHECK-NEXT: ElementIndex: 0x8
; CHECK-NEXT: }
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: .debug_line
; CHECK-NEXT: Type: SECTION (0x3)
-; CHECK-NEXT: Flags: 0x2
+; CHECK-NEXT: Flags [ (0x2)
+; CHECK-NEXT: BINDING_LOCAL (0x2)
+; CHECK-NEXT: ]
; CHECK-NEXT: ElementIndex: 0xC
; CHECK-NEXT: }
; CHECK-NEXT:]
Modified: llvm/trunk/test/MC/WebAssembly/function-alias.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/WebAssembly/function-alias.ll?rev=353357&r1=353356&r2=353357&view=diff
==============================================================================
--- llvm/trunk/test/MC/WebAssembly/function-alias.ll (original)
+++ llvm/trunk/test/MC/WebAssembly/function-alias.ll Wed Feb 6 17:17:34 2019
@@ -14,19 +14,22 @@ define i8* @func() {
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: func
; CHECK-NEXT: Type: FUNCTION (0x0)
-; CHECK-NEXT: Flags: 0x0
+; CHECK-NEXT: Flags [ (0x0)
+; CHECK-NEXT: ]
; CHECK-NEXT: ElementIndex: 0x0
; CHECK-NEXT: }
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: foo
; CHECK-NEXT: Type: FUNCTION (0x0)
-; CHECK-NEXT: Flags: 0x0
+; CHECK-NEXT: Flags [ (0x0)
+; CHECK-NEXT: ]
; CHECK-NEXT: ElementIndex: 0x0
; CHECK-NEXT: }
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: bar
; CHECK-NEXT: Type: FUNCTION (0x0)
-; CHECK-NEXT: Flags: 0x0
+; CHECK-NEXT: Flags [ (0x0)
+; CHECK-NEXT: ]
; CHECK-NEXT: ElementIndex: 0x0
; CHECK-NEXT: }
; CHECK-NEXT: ]
Modified: llvm/trunk/tools/llvm-readobj/WasmDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/WasmDumper.cpp?rev=353357&r1=353356&r2=353357&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/WasmDumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/WasmDumper.cpp Wed Feb 6 17:17:34 2019
@@ -40,6 +40,18 @@ static const EnumEntry<uint32_t> WasmSec
#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 Symbo
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) {
More information about the llvm-commits
mailing list