mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-13 14:47:00 +00:00
[WebAssembly] Weak symbols should be defined in SF_Global
Summary: This manifested itself in lld since it meant that weak symbols were not appearing in archive symbol tables. Subscribers: jfb, dschuff, jgravelle-google, aheejin Differential Revision: https://reviews.llvm.org/D38111 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313838 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7176debc9c
commit
3703970fb5
@ -769,7 +769,7 @@ uint32_t WasmObjectFile::getSymbolFlags(DataRefImpl Symb) const {
|
||||
DEBUG(dbgs() << "getSymbolFlags: ptr=" << &Sym << " " << Sym << "\n");
|
||||
if (Sym.isWeak())
|
||||
Result |= SymbolRef::SF_Weak;
|
||||
else if (Sym.isGlobal())
|
||||
if (!Sym.isLocal())
|
||||
Result |= SymbolRef::SF_Global;
|
||||
|
||||
switch (Sym.Type) {
|
||||
|
@ -1,4 +1,6 @@
|
||||
; RUN: llc -mtriple wasm32-unknown-unknown-wasm -filetype=obj %s -o - | obj2yaml | FileCheck %s
|
||||
; RUN: llc -mtriple wasm32-unknown-unknown-wasm -filetype=obj %s -o %t.o
|
||||
; RUN: obj2yaml %t.o | FileCheck %s
|
||||
; RUN: llvm-objdump -t %t.o | FileCheck --check-prefix=CHECK-SYMS %s
|
||||
|
||||
; 'foo_alias()' is weak alias of function 'foo()'
|
||||
; 'bar_alias' is weak alias of global variable 'bar'
|
||||
@ -107,3 +109,14 @@ entry:
|
||||
; CHECK-NEXT: - Index: 1
|
||||
; CHECK-NEXT: Name: .data.bar_alias_address
|
||||
; CHECK-NEXT: ...
|
||||
|
||||
; CHECK-SYMS: SYMBOL TABLE:
|
||||
; CHECK-SYMS-NEXT: 00000000 g F name foo_alias
|
||||
; CHECK-SYMS-NEXT: 00000001 g F name call_alias
|
||||
; CHECK-SYMS-NEXT: 00000002 g F name foo
|
||||
; CHECK-SYMS-NEXT: 00000002 gw F EXPORT foo_alias
|
||||
; CHECK-SYMS-NEXT: 00000000 gw EXPORT bar_alias
|
||||
; CHECK-SYMS-NEXT: 00000001 g F EXPORT call_alias
|
||||
; CHECK-SYMS-NEXT: 00000002 g F EXPORT foo
|
||||
; CHECK-SYMS-NEXT: 00000000 g EXPORT bar
|
||||
; CHECK-SYMS-NEXT: 00000008 g EXPORT bar_alias_address
|
||||
|
Loading…
Reference in New Issue
Block a user