diff --git a/lld/wasm/Driver.cpp b/lld/wasm/Driver.cpp --- a/lld/wasm/Driver.cpp +++ b/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()); @@ -381,7 +384,6 @@ if (config->shared) { config->importMemory = true; - config->exportDynamic = true; config->allowUndefined = true; } }