From b31bfaddebf7f4bb900665f85eb07af4e74ee3a5 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Tue, 4 Jun 2019 17:26:26 +0200 Subject: [PATCH] test: make sure vtable is generated in addon test with LTO PR-URL: https://github.com/nodejs/node/pull/28057 Fixes: https://github.com/nodejs/node/issues/28026 Reviewed-By: Colin Ihrig Reviewed-By: Richard Lau --- test/addons/uv-handle-leak/binding.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/test/addons/uv-handle-leak/binding.cc b/test/addons/uv-handle-leak/binding.cc index 221a1284323171..1b769b141c0076 100644 --- a/test/addons/uv-handle-leak/binding.cc +++ b/test/addons/uv-handle-leak/binding.cc @@ -15,9 +15,16 @@ void CloseCallback(uv_handle_t* handle) {} class ExampleOwnerClass { public: - virtual ~ExampleOwnerClass() {} + virtual ~ExampleOwnerClass(); }; +// Do not inline this into the class, because that may remove the virtual +// table when LTO is used, and with it the symbol for which we grep the process +// output in test/abort/test-addon-uv-handle-leak. +// When the destructor is not inlined, the compiler will have to assume that it, +// and the vtable, is part of what this compilation unit exports, and keep them. +ExampleOwnerClass::~ExampleOwnerClass() {} + ExampleOwnerClass example_instance; void LeakHandle(const FunctionCallbackInfo& args) {