[WebAssembly][lld] control __data_end export with config->shared
authorGuanzhong Chen <gzchen@google.com>
Thu, 8 Aug 2019 22:40:04 +0000 (22:40 +0000)
committerGuanzhong Chen <gzchen@google.com>
Thu, 8 Aug 2019 22:40:04 +0000 (22:40 +0000)
Summary:
Emscripten expects `__data_end` to show up in PIC code as long as it's not
linked with `--shared`.

Currently, Emscripten breaks with latest LLVM because `__data_end` is controlled
by `config->isPic` instead of `config->shared`.`

Reviewers: tlively, sbc100

Reviewed By: sbc100

Subscribers: dschuff, jgravelle-google, aheejin, sunfish, llvm-commits

Tags: #llvm

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

llvm-svn: 368361

lld/wasm/Driver.cpp

index 6485a6d..3ea069d 100644 (file)
@@ -527,8 +527,10 @@ static void createOptionalSymbols() {
   if (!config->relocatable)
     WasmSym::dsoHandle = symtab->addOptionalDataSymbol("__dso_handle");
 
-  if (!config->isPic) {
+  if (!config->shared)
     WasmSym::dataEnd = symtab->addOptionalDataSymbol("__data_end");
+
+  if (!config->isPic) {
     WasmSym::globalBase = symtab->addOptionalDataSymbol("__global_base");
     WasmSym::heapBase = symtab->addOptionalDataSymbol("__heap_base");
   }