diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 82261c0dc63..8e8c295f2ca 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -5289,6 +5289,10 @@ void BinaryenSetStart(BinaryenModuleRef module, BinaryenFunctionRef start) { ((Module*)module)->addStart(((Function*)start)->name); } +BinaryenFunctionRef BinaryenGetStart(BinaryenModuleRef module) { + return ((Module*)module)->getFunctionOrNull(((Module*)module)->start); +} + // Features BinaryenFeatures BinaryenModuleGetFeatures(BinaryenModuleRef module) { diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 06604a510a8..65a2f12f451 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -2869,6 +2869,8 @@ BINARYEN_API void BinaryenAddDataSegment(BinaryenModuleRef module, BINARYEN_API void BinaryenSetStart(BinaryenModuleRef module, BinaryenFunctionRef start); +BINARYEN_API BinaryenFunctionRef BinaryenGetStart(BinaryenModuleRef module); + // Features // These control what features are allowed when validation and in passes. diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index 5d6022d2550..6d886d26b1d 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -2594,6 +2594,9 @@ function wrapModule(module, self = {}) { self['setStart'] = function(start) { return Module['_BinaryenSetStart'](module, start); }; + self['getStart'] = function() { + return Module['_BinaryenGetStart'](module); + }; self['getFeatures'] = function() { return Module['_BinaryenModuleGetFeatures'](module); }; diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js index 04cf4ef8e4a..556749059b7 100644 --- a/test/binaryen.js/kitchen-sink.js +++ b/test/binaryen.js/kitchen-sink.js @@ -760,6 +760,7 @@ function test_core() { // Start function. One per module var starter = module.addFunction("starter", binaryen.none, binaryen.none, [], module.nop()); module.setStart(starter); + assert(module.getStart() == starter); var features = binaryen.Features.All; module.setFeatures(features); diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index fcf6c78d1fb..c97de45a366 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -1376,6 +1376,7 @@ void test_core() { 0, BinaryenNop(module)); BinaryenSetStart(module, starter); + assert(BinaryenGetStart(module) == starter); BinaryenFeatures features = BinaryenFeatureAll(); BinaryenModuleSetFeatures(module, features);