From 5b2c3d7bbcda07bf89448d0ae4e43ea327d4f6ba Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Mon, 12 Oct 2020 06:59:51 -0700 Subject: [PATCH] llvm-readobj: support globals in initializer expressions Differential Revision: https://reviews.llvm.org/D117747 --- llvm/test/tools/llvm-readobj/wasm/globals.test | 32 ++++++++++++++++++++++++++ llvm/tools/llvm-readobj/WasmDumper.cpp | 5 +++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 llvm/test/tools/llvm-readobj/wasm/globals.test diff --git a/llvm/test/tools/llvm-readobj/wasm/globals.test b/llvm/test/tools/llvm-readobj/wasm/globals.test new file mode 100644 index 0000000..4e9f640 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/wasm/globals.test @@ -0,0 +1,32 @@ +# RUN: yaml2obj %s | llvm-readobj --sections - | FileCheck %s + +# Test use of global.get in initializer expressions. + +--- !WASM +FileHeader: + Version: 0x00000001 +Sections: + - Type: DATA + Segments: + - SectionOffset: 6 + InitFlags: 0 + Offset: + Opcode: GLOBAL_GET + Index: 1 + Content: '64' +... + +# CHECK: Section { +# CHECK-NEXT: Type: DATA (0xB) +# CHECK-NEXT: Size: 7 +# CHECK-NEXT: Offset: 8 +# CHECK-NEXT: Segments [ +# CHECK-NEXT: Segment { +# CHECK-NEXT: Size: 1 +# CHECK-NEXT: Offset [ +# CHECK-NEXT: Global: 1 +# CHECK-NEXT: ] +# CHECK-NEXT: } +# CHECK-NEXT: ] +# CHECK-NEXT: } +# CHECK-NEXT: ] diff --git a/llvm/tools/llvm-readobj/WasmDumper.cpp b/llvm/tools/llvm-readobj/WasmDumper.cpp index d76332d..b4d7260 100644 --- a/llvm/tools/llvm-readobj/WasmDumper.cpp +++ b/llvm/tools/llvm-readobj/WasmDumper.cpp @@ -183,7 +183,10 @@ void WasmDumper::printSectionHeaders() { W.printNumber("Offset", Seg.Offset.Value.Int32); else if (Seg.Offset.Opcode == wasm::WASM_OPCODE_I64_CONST) W.printNumber("Offset", Seg.Offset.Value.Int64); - else + else if (Seg.Offset.Opcode == wasm::WASM_OPCODE_GLOBAL_GET) { + ListScope Group(W, "Offset"); + W.printNumber("Global", Seg.Offset.Value.Global); + } else llvm_unreachable("unknown init expr opcode"); } break; -- 2.7.4