chaincodelabs / libmultiprocess

C++ library and code generator making it easy to call functions and reference objects in different processes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Need to suppress compiler warnings in generated code from clang on macOS

ryanofsky opened this issue · comments

Reported bitcoin/bitcoin#10102 (review) by @Sjors

When building on macOS, using capnp 0.9.1 via homebrew and chaincodelabs/libmultiprocess@34ce921, I get flooded with warnings like this:

./interfaces/chain.h:227:18: note: overridden virtual function is here
    virtual void initWarning(const bilingual_str& message) = 0;
                 ^
In file included from ipc/capnp/node.cpp:9:
In file included from ./ipc/capnp/node-types.h:11:
In file included from ./ipc/capnp/wallet.capnp.proxy-types.h:6:
In file included from ./ipc/capnp/wallet.capnp.proxy.h:7:
In file included from ./ipc/capnp/wallet.h:9:
./ipc/capnp/chain.capnp.proxy.h:1414:26: warning: 'initError' overrides a member function but is not marked 'override' [-Wsuggest-override]
    typename M35::Result initError(M35::Param<0> message);

Also a bunch of these:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/memory:2644:9: warning: destructor called on non-final 'mp::ProxyClient<ipc::capnp::messages::NotifyHeaderTipCallback>' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
        __get_elem()->~_Tp();

I'm not sure about the virtual destructor warnings. That seems bad and potentially there is a real bug or leak there.

The override warnings probably need a fix like #40 that was made to fix the same issue in GCC

I was able to reproduce basically the same warnings with clang 13.0.0 on linux and added fixes in #62. Thanks for reporting!