Skip to content

Commit

Permalink
[lld][WebAssembly] Honor --no-export-dynamic even with -shared
Browse files Browse the repository at this point in the history
Differential Revision: https://reviews.llvm.org/D66359

llvm-svn: 369276
  • Loading branch information
sbc100 committed Aug 19, 2019
1 parent f497da3 commit e8e914e
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
18 changes: 18 additions & 0 deletions lld/test/wasm/shared-export-dynamic.ll
Original file line number Diff line number Diff line change
@@ -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
}
7 changes: 4 additions & 3 deletions lld/wasm/Driver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -313,8 +313,6 @@ static void readConfigs(opt::InputArgList &args) {
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);
Expand Down Expand Up @@ -358,6 +356,10 @@ static void readConfigs(opt::InputArgList &args) {
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>());
Expand All @@ -381,7 +383,6 @@ static void setConfigs() {

if (config->shared) {
config->importMemory = true;
config->exportDynamic = true;
config->allowUndefined = true;
}
}
Expand Down

0 comments on commit e8e914e

Please sign in to comment.