[PATCH] D66359: [lld][WebAssembly] Honor --no-export-dynamic even with -shared
Sam Clegg via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 16 12:08:41 PDT 2019
sbc100 updated this revision to Diff 215653.
sbc100 added a comment.
- add test
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D66359/new/
https://reviews.llvm.org/D66359
Files:
lld/test/wasm/shared-export-dynamic.ll
lld/wasm/Driver.cpp
Index: lld/wasm/Driver.cpp
===================================================================
--- lld/wasm/Driver.cpp
+++ lld/wasm/Driver.cpp
@@ -313,8 +313,6 @@
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,11 @@
config->zStackSize =
args::getZOptionValue(args, OPT_z, "stack-size", WasmPageSize);
+ // exportDynamic default to true when building with `-shared`
+ bool exportDynamicDefault = config->shared;
+ config->exportDynamic = args.hasFlag(
+ OPT_export_dynamic, OPT_no_export_dynamic, exportDynamicDefault);
+
if (auto *arg = args.getLastArg(OPT_features)) {
config->features =
llvm::Optional<std::vector<std::string>>(std::vector<std::string>());
@@ -381,7 +384,6 @@
if (config->shared) {
config->importMemory = true;
- config->exportDynamic = true;
config->allowUndefined = true;
}
}
Index: lld/test/wasm/shared-export-dynamic.ll
===================================================================
--- /dev/null
+++ lld/test/wasm/shared-export-dynamic.ll
@@ -0,0 +1,20 @@
+; 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
+}
+
+
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66359.215653.patch
Type: text/x-patch
Size: 1960 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190816/bb659ced/attachment.bin>
More information about the llvm-commits
mailing list