summaryrefslogtreecommitdiff
path: root/test/addons
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2018-02-22 13:35:26 +0100
committerBen Noordhuis <info@bnoordhuis.nl>2018-03-01 13:45:57 +0100
commit3828fc6289783a632b00270d6b72b5c5bdd6437d (patch)
tree6ebbfb99f150d9c81ff04365a578e42da0ad95e6 /test/addons
parent66315220aebf69573c682fea7f21531f58dd8c2a (diff)
downloadandroid-node-v8-3828fc6289783a632b00270d6b72b5c5bdd6437d.tar.gz
android-node-v8-3828fc6289783a632b00270d6b72b5c5bdd6437d.tar.bz2
android-node-v8-3828fc6289783a632b00270d6b72b5c5bdd6437d.zip
src: make process.dlopen() load well-known symbol
Look for symbol `node_register_module_v${NODE_MODULE_VERSION}` if the add-on didn't self-register. This can be used to create add-ons that support multiple Node.js versions from a single shared object. PR-URL: https://github.com/nodejs/node/pull/18934 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Matheus Marchini <matheus@sthima.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Diffstat (limited to 'test/addons')
-rw-r--r--test/addons/hello-world/binding.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/test/addons/hello-world/binding.cc b/test/addons/hello-world/binding.cc
index 944f563195..ba6a22d719 100644
--- a/test/addons/hello-world/binding.cc
+++ b/test/addons/hello-world/binding.cc
@@ -6,8 +6,12 @@ void Method(const v8::FunctionCallbackInfo<v8::Value>& args) {
args.GetReturnValue().Set(v8::String::NewFromUtf8(isolate, "world"));
}
-void init(v8::Local<v8::Object> exports) {
+#define CONCAT(a, b) CONCAT_HELPER(a, b)
+#define CONCAT_HELPER(a, b) a##b
+#define INITIALIZER CONCAT(node_register_module_v, NODE_MODULE_VERSION)
+
+extern "C" NODE_MODULE_EXPORT void INITIALIZER(v8::Local<v8::Object> exports,
+ v8::Local<v8::Value> module,
+ v8::Local<v8::Context> context) {
NODE_SET_METHOD(exports, "hello", Method);
}
-
-NODE_MODULE(NODE_GYP_MODULE_NAME, init)