[lld] baff8ec - [WebAssembly][lld] Fix for static linking of PIC code

Sam Clegg via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 29 19:32:43 PDT 2019


Author: Sam Clegg
Date: 2019-10-29T18:58:56-07:00
New Revision: baff8ec2e1d845d90580a0d85ad6ab43d929bcfe

URL: https://github.com/llvm/llvm-project/commit/baff8ec2e1d845d90580a0d85ad6ab43d929bcfe
DIFF: https://github.com/llvm/llvm-project/commit/baff8ec2e1d845d90580a0d85ad6ab43d929bcfe.diff

LOG: [WebAssembly][lld] Fix for static linking of PIC code

When statically linking PIC code we create an internalized __memory_base
so that memory-base-relative relocation work correctly.  The value of
this global should be zero, and not the globalBase since the globalBase
offset is already taken into account by getVirtualAddress.

Fixes: https://github.com/emscripten-core/emscripten/issues/9013

Differential Revision: https://reviews.llvm.org/D69600

Added: 
    

Modified: 
    lld/test/wasm/pic-static.ll
    lld/wasm/Writer.cpp

Removed: 
    


################################################################################
diff  --git a/lld/test/wasm/pic-static.ll b/lld/test/wasm/pic-static.ll
index 83752f3bdb33..65b47175865e 100644
--- a/lld/test/wasm/pic-static.ll
+++ b/lld/test/wasm/pic-static.ll
@@ -118,4 +118,4 @@ entry:
 ; CHECK-NEXT:         Mutable:         false
 ; CHECK-NEXT:         InitExpr:
 ; CHECK-NEXT:           Opcode:          I32_CONST
-; CHECK-NEXT:           Value:           1024
+; CHECK-NEXT:           Value:           0

diff  --git a/lld/wasm/Writer.cpp b/lld/wasm/Writer.cpp
index fe596257beac..5df3ae68e307 100644
--- a/lld/wasm/Writer.cpp
+++ b/lld/wasm/Writer.cpp
@@ -226,8 +226,6 @@ void Writer::layoutMemory() {
 
   if (WasmSym::globalBase)
     WasmSym::globalBase->setVirtualAddress(memoryPtr);
-  if (WasmSym::definedMemoryBase)
-    WasmSym::definedMemoryBase->setVirtualAddress(memoryPtr);
 
   uint32_t dataStart = memoryPtr;
 


        


More information about the llvm-commits mailing list