mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-14 07:31:53 +00:00
[WebAssembly] Fix getSymbolValue for exported globals
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
This commit is contained in:
parent
8cb6b3ebf8
commit
e38fd9fa36
@ -788,7 +788,7 @@ uint64_t WasmObjectFile::getSymbolValueImpl(DataRefImpl Symb) const {
|
||||
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;
|
||||
|
@ -1,4 +1,4 @@
|
||||
# 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.
|
||||
@ -31,6 +31,17 @@ Sections:
|
||||
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
|
||||
@ -38,7 +49,9 @@ Sections:
|
||||
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
|
||||
|
@ -1,4 +1,4 @@
|
||||
# RUN: yaml2obj < %s | llvm-nm - | FileCheck %s
|
||||
# RUN: yaml2obj < %s | llvm-nm - | FileCheck -strict-whitespace %s
|
||||
|
||||
--- !WASM
|
||||
FileHeader:
|
||||
|
@ -1,4 +1,4 @@
|
||||
# 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.
|
||||
@ -49,7 +49,7 @@ Sections:
|
||||
Index: 0x00000004
|
||||
- Name: weak_global_data
|
||||
Kind: GLOBAL
|
||||
Index: 0x00000002
|
||||
Index: 0x00000003
|
||||
- Type: CUSTOM
|
||||
Name: linking
|
||||
DataSize: 0
|
||||
|
Loading…
Reference in New Issue
Block a user