From af2b751ecdae6e0b316b50df87913f3e7da05a2c Mon Sep 17 00:00:00 2001 From: Gulg <65360617+GulgDev@users.noreply.github.com> Date: Tue, 1 Apr 2025 23:24:57 +0500 Subject: [PATCH 1/5] Add BinaryenGetStart function --- src/binaryen-c.cpp | 4 ++++ 1 file changed, 4 insertions(+) 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) { From 27dda73f0b81928b6e37d254d234008fedadb474 Mon Sep 17 00:00:00 2001 From: Gulg <65360617+GulgDev@users.noreply.github.com> Date: Tue, 1 Apr 2025 23:26:14 +0500 Subject: [PATCH 2/5] Add setStart function to JS wrapper --- src/js/binaryen.js-post.js | 3 +++ 1 file changed, 3 insertions(+) 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); }; From 1735b9178c8a63630ab668100ae95272e9f9aae1 Mon Sep 17 00:00:00 2001 From: Gulg <65360617+GulgDev@users.noreply.github.com> Date: Wed, 2 Apr 2025 17:10:31 +0500 Subject: [PATCH 3/5] Add BinaryenGetStart test --- test/example/c-api-kitchen-sink.c | 1 + 1 file changed, 1 insertion(+) 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); From f8914f354d9e2ea5fd638099e383f2e15f31c6b5 Mon Sep 17 00:00:00 2001 From: Gulg <65360617+GulgDev@users.noreply.github.com> Date: Wed, 2 Apr 2025 17:11:35 +0500 Subject: [PATCH 4/5] Add module.getStart test --- test/binaryen.js/kitchen-sink.js | 1 + 1 file changed, 1 insertion(+) 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); From a8d5841bee4bcbde677843966ea84927f68167cb Mon Sep 17 00:00:00 2001 From: Gulg <65360617+GulgDev@users.noreply.github.com> Date: Thu, 3 Apr 2025 00:52:13 +0500 Subject: [PATCH 5/5] Add BinaryenGetStart function declaration --- src/binaryen-c.h | 2 ++ 1 file changed, 2 insertions(+) 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.