summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/passes/ExtractFunction.cpp14
-rw-r--r--src/passes/Strip.cpp6
-rw-r--r--src/passes/pass.cpp1
-rw-r--r--src/passes/passes.h1
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();