libstdc++: Define memory resource key functions non-inline (PR93208)
authorJonathan Wakely <jwakely@redhat.com>
Thu, 9 Jan 2020 13:18:20 +0000 (13:18 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 9 Jan 2020 13:18:20 +0000 (13:18 +0000)
commitd574c8aafea40bd8759cb09031ff0dc6c250d8cf
tree2a9d4cb5cda8c0decff5dad89ba215ee2a114fb8
parent27c5a1779badd02b337af5887e26b5420fbf71c7
libstdc++: Define memory resource key functions non-inline (PR93208)

This prevents the vtables and RTTI from being emitted in every object
file that uses memory_resource and monotonic_buffer_resource.

Objects compiled by GCC 9.1 or 9.2 will contain inline definitions of
the destructors, vtable and RTTI, but this is harmless. The inline
definitions have identical effects to the ones that are now defined in
libstdc++.so so it doesn't matter if the inline ones are used instead of
calling the symbols exported from the runtime library.

PR libstdc++/93208
* config/abi/pre/gnu.ver: Add new exports.
* include/std/memory_resource (memory_resource::~memory_resource()):
Do not define inline.
(monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
* src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
Define.
(monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
* testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.

From-SVN: r280044
libstdc++-v3/ChangeLog
libstdc++-v3/config/abi/pre/gnu.ver
libstdc++-v3/include/std/memory_resource
libstdc++-v3/src/c++17/memory_resource.cc
libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/93208.cc [new file with mode: 0644]