diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/passes/ExtractFunction.cpp | 14 | ||||
-rw-r--r-- | src/passes/Strip.cpp | 6 | ||||
-rw-r--r-- | src/passes/pass.cpp | 1 | ||||
-rw-r--r-- | src/passes/passes.h | 1 |
4 files changed, 16 insertions, 6 deletions
diff --git a/src/passes/ExtractFunction.cpp b/src/passes/ExtractFunction.cpp index 01daf3504..fbc1aa7c4 100644 --- a/src/passes/ExtractFunction.cpp +++ b/src/passes/ExtractFunction.cpp @@ -49,12 +49,14 @@ struct ExtractFunction : public Pass { module->memory.segments.clear(); module->table.segments.clear(); // leave just an export for the thing we want - module->exports.clear(); - auto* export_ = new Export; - export_->name = name; - export_->value = name; - export_->kind = ExternalKind::Function; - module->addExport(export_); + if (!module->getExportOrNull(name)) { + module->exports.clear(); + auto* export_ = new Export; + export_->name = name; + export_->value = name; + export_->kind = ExternalKind::Function; + module->addExport(export_); + } } }; diff --git a/src/passes/Strip.cpp b/src/passes/Strip.cpp index e85379003..ace745f87 100644 --- a/src/passes/Strip.cpp +++ b/src/passes/Strip.cpp @@ -62,6 +62,12 @@ Pass* createStripDebugPass() { }); } +Pass* createStripDWARFPass() { + return new Strip([&](const UserSection& curr) { + return curr.name.find(".debug") == 0 || curr.name.find("reloc..debug") == 0; + }); +} + Pass* createStripProducersPass() { return new Strip([&](const UserSection& curr) { return curr.name == BinaryConsts::UserSections::Producers; diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp index 0f6507d98..9afea38e6 100644 --- a/src/passes/pass.cpp +++ b/src/passes/pass.cpp @@ -320,6 +320,7 @@ void PassRegistry::registerPasses() { registerPass("strip-debug", "strip debug info (including the names section)", createStripDebugPass); + registerPass("strip-dwarf", "strip dwarf debug info", createStripDWARFPass); registerPass("strip-producers", "strip the wasm producers section", createStripProducersPass); diff --git a/src/passes/passes.h b/src/passes/passes.h index caa02ac8a..cc33e4300 100644 --- a/src/passes/passes.h +++ b/src/passes/passes.h @@ -102,6 +102,7 @@ Pass* createSimplifyLocalsNoTeePass(); Pass* createSimplifyLocalsNoStructurePass(); Pass* createSimplifyLocalsNoTeeNoStructurePass(); Pass* createStripDebugPass(); +Pass* createStripDWARFPass(); Pass* createStripProducersPass(); Pass* createStripTargetFeaturesPass(); Pass* createSouperifyPass(); |