1
0
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:
Sam Clegg 2017-09-01 17:24:19 +00:00
parent 73e77340ad
commit acf172d63d
4 changed files with 21 additions and 8 deletions

View File

@ -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;

View File

@ -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

View File

@ -1,4 +1,4 @@
# RUN: yaml2obj < %s | llvm-nm - | FileCheck %s
# RUN: yaml2obj < %s | llvm-nm - | FileCheck -strict-whitespace %s
--- !WASM
FileHeader:

View File

@ -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