[lld] r369276 - [lld][WebAssembly] Honor --no-export-dynamic even with -shared

Sam Clegg via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 19 09:34:52 PDT 2019


Author: sbc
Date: Mon Aug 19 09:34:51 2019
New Revision: 369276

URL: http://llvm.org/viewvc/llvm-project?rev=369276&view=rev
Log:
[lld][WebAssembly] Honor --no-export-dynamic even with -shared

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

Added:
    lld/trunk/test/wasm/shared-export-dynamic.ll
Modified:
    lld/trunk/wasm/Driver.cpp

Added: lld/trunk/test/wasm/shared-export-dynamic.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/wasm/shared-export-dynamic.ll?rev=369276&view=auto
==============================================================================
--- lld/trunk/test/wasm/shared-export-dynamic.ll (added)
+++ lld/trunk/test/wasm/shared-export-dynamic.ll Mon Aug 19 09:34:51 2019
@@ -0,0 +1,18 @@
+; RUN: llc -relocation-model=pic -filetype=obj %s -o %t.o
+
+; By default all `default` symbols should be exported
+; RUN: wasm-ld -shared -o %t.wasm %t.o
+; RUN: obj2yaml %t.wasm | FileCheck %s -check-prefix=DEFAULT
+; DEFAULT: foo
+
+; Verify that `--no-export-dynamic` works with `-shared`
+; RUN: wasm-ld -shared --no-export-dynamic -o %t2.wasm %t.o
+; RUN: obj2yaml %t2.wasm | FileCheck %s -check-prefix=NO-EXPORT
+; NO-EXPORT-NOT: foo
+
+target triple = "wasm32-unknown-emscripten"
+
+define default i32 @foo() {
+entry:
+  ret i32 0
+}

Modified: lld/trunk/wasm/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/wasm/Driver.cpp?rev=369276&r1=369275&r2=369276&view=diff
==============================================================================
--- lld/trunk/wasm/Driver.cpp (original)
+++ lld/trunk/wasm/Driver.cpp Mon Aug 19 09:34:51 2019
@@ -313,8 +313,6 @@ static void readConfigs(opt::InputArgLis
   config->emitRelocs = args.hasArg(OPT_emit_relocs);
   config->entry = getEntry(args);
   config->exportAll = args.hasArg(OPT_export_all);
-  config->exportDynamic = args.hasFlag(OPT_export_dynamic,
-      OPT_no_export_dynamic, false);
   config->exportTable = args.hasArg(OPT_export_table);
   errorHandler().fatalWarnings =
       args.hasFlag(OPT_fatal_warnings, OPT_no_fatal_warnings, false);
@@ -358,6 +356,10 @@ static void readConfigs(opt::InputArgLis
   config->zStackSize =
       args::getZOptionValue(args, OPT_z, "stack-size", WasmPageSize);
 
+  // Default value of exportDynamic depends on `-shared`
+  config->exportDynamic =
+      args.hasFlag(OPT_export_dynamic, OPT_no_export_dynamic, config->shared);
+
   if (auto *arg = args.getLastArg(OPT_features)) {
     config->features =
         llvm::Optional<std::vector<std::string>>(std::vector<std::string>());
@@ -381,7 +383,6 @@ static void setConfigs() {
 
   if (config->shared) {
     config->importMemory = true;
-    config->exportDynamic = true;
     config->allowUndefined = true;
   }
 }




More information about the llvm-commits mailing list