[llvm] r313838 - [WebAssembly] Weak symbols should be defined in SF_Global

Sam Clegg via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 20 16:39:44 PDT 2017


Author: sbc
Date: Wed Sep 20 16:39:44 2017
New Revision: 313838

URL: http://llvm.org/viewvc/llvm-project?rev=313838&view=rev
Log:
[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

Modified:
    llvm/trunk/lib/Object/WasmObjectFile.cpp
    llvm/trunk/test/MC/WebAssembly/weak-alias.ll

Modified: llvm/trunk/lib/Object/WasmObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/WasmObjectFile.cpp?rev=313838&r1=313837&r2=313838&view=diff
==============================================================================
--- llvm/trunk/lib/Object/WasmObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/WasmObjectFile.cpp Wed Sep 20 16:39:44 2017
@@ -769,7 +769,7 @@ uint32_t WasmObjectFile::getSymbolFlags(
   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) {

Modified: llvm/trunk/test/MC/WebAssembly/weak-alias.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/WebAssembly/weak-alias.ll?rev=313838&r1=313837&r2=313838&view=diff
==============================================================================
--- llvm/trunk/test/MC/WebAssembly/weak-alias.ll (original)
+++ llvm/trunk/test/MC/WebAssembly/weak-alias.ll Wed Sep 20 16:39:44 2017
@@ -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




More information about the llvm-commits mailing list