mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02: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 llvm-svn: 312340
This commit is contained in:
parent
73e77340ad
commit
acf172d63d
@ -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