The code wasn't previously taking into account that the
global index space is not same as the into in the Globals
array since the latter does not include imported globals.
This fixes the WebAssembly waterfall failures.
Differential Revision: https://reviews.llvm.org/D37384
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312340
91177308-0d34-0410-b5e6-
96231b3b80d8
case WasmSymbol::SymbolType::FUNCTION_EXPORT:
return Exports[Sym.ElementIndex].Index;
case WasmSymbol::SymbolType::GLOBAL_EXPORT: {
- uint32_t GlobalIndex = Exports[Sym.ElementIndex].Index;
+ uint32_t GlobalIndex = Exports[Sym.ElementIndex].Index - NumImportedGlobals;
assert(GlobalIndex < Globals.size());
const wasm::WasmGlobal& Global = Globals[GlobalIndex];
return Global.InitExpr.Value.Int32;
-# RUN: yaml2obj < %s | llvm-nm - | FileCheck %s
+# RUN: yaml2obj < %s | llvm-nm - | FileCheck -strict-whitespace %s
# That wasm exports of functions and globals are displayed as global data and
# code symbols.
InitExpr:
Opcode: I64_CONST
Value: 1024
+ - Type: IMPORT
+ Imports:
+ - Module: env
+ Field: fimport
+ Kind: FUNCTION
+ SigIndex: 0
+ - Module: env
+ Field: gimport
+ Kind: GLOBAL
+ GlobalType: I32
+ GlobalMutable: false
- Type: EXPORT
Exports:
- Name: foo
Index: 0x00000004
- Name: bar
Kind: GLOBAL
- Index: 0x00000002
+ Index: 0x00000003
-# CHECK: 00000400 D bar
-# CHECK: 00000004 T foo
+# CHECK: 00000400 D bar
+# CHECK-NEXT: U fimport
+# CHECK-NEXT: 00000004 T foo
+# CHECK-NEXT: U gimport
-# RUN: yaml2obj < %s | llvm-nm - | FileCheck %s
+# RUN: yaml2obj < %s | llvm-nm - | FileCheck -strict-whitespace %s
--- !WASM
FileHeader:
-# RUN: yaml2obj < %s | llvm-nm - | FileCheck %s
+# RUN: yaml2obj < %s | llvm-nm - | FileCheck -strict-whitespace %s
# That wasm exports of functions and globals are displayed as global data and
# code symbols.
Index: 0x00000004
- Name: weak_global_data
Kind: GLOBAL
- Index: 0x00000002
+ Index: 0x00000003
- Type: CUSTOM
Name: linking
DataSize: 0