[serialisation] Strange "direct access" warning on OSX for basic_text_oprimitive

Marco Craveiro via Boost-users <[email protected]>
Newsgroups gmane.comp.lib.boost.user
Message-ID <CAKRNd4zZh_mv-C3C4OmfeZthgNbJU0Bjhp5_eYBQRvLVAJJ1AQ@mail.gmail.com>
Hi Boost Users,

First, a great thanks to the authors of the boost serialisation
library, which I have used successfully across projects and has proven
invaluable. Now to my problem. I have been investigating for a little
while a strange warning I get when linking on OSX; the results of my
investigation can be found here [1].

The TL; DR of it is as follows: my OSX debug build has a warning
(indented for ease of reading):

    ld: warning: direct access in function

    'boost::archive::basic_text_oprimitive<
        std::__1::basic_ostream<char, std::__1::char_traits<char> >
    >::~basic_text_oprimitive()'

    from file

    'vcpkg_installed/x64-osx/debug/lib/libboost_serialization.a(basic_text_oprimitive.o)'

    to global weak symbol

    'std::__1::basic_ostream<char, std::__1::char_traits<char> >&
    std::__1::endl<char, std::__1::char_traits<char> >
   (std::__1::basic_ostream<char, std::__1::char_traits<char> >&)'

This warning is caused by a mismatch in visibility settings between my
project and vcpkg's build of boost. However, as far as I can see, both
projects are using "-fvisibility=default", meaning there should be no
mismatch. Also, no other warnings show up but if I change the project
settings I then get hundreds of warnings (again, for details see
ticket).

What I find even more puzzling is that I am using all three types of
archives (Text, XML and Binary). Of these three, only Text produces
this warning. As the problem is with the destructors, I did a quick
inventory of the destructors to see how they differ:

    basic_xml_oarchive.hpp: [2]
    BOOST_ARCHIVE_OR_WARCHIVE_DECL
    ~basic_xml_oarchive() BOOST_OVERRIDE;

    basic_text_oarchive.hpp: [3]
    ~basic_text_oarchive() BOOST_OVERRIDE {}

    basic_binary_oarchive.hpp: [4] no destructor.

So my question is, should text archive also have a
BOOST_ARCHIVE_OR_WARCHIVE_DECL macro, and would that fix my warning?
If so I can submit a PR.

Many thanks for your time.

Marco

[1] https://github.com/Microsoft/vcpkg/issues/4497
[2] https://github.com/boostorg/serialization/blob/develop/include/boost/archive/basic_xml_oarchive.hpp
[3] https://github.com/boostorg/serialization/blob/develop/include/boost/archive/basic_text_oarchive.hpp
[4]  https://github.com/boostorg/serialization/blob/develop/include/boost/archive/basic_binary_oarchive.hpp
-- 
Marco Craveiro

MD, Domain Driven Consulting
blog: https://mcraveiro.github.io/index.html
twitter: https://twitter.com/MarcoCraveiro

That the Ideas are themselves manifestations (of the Idea-Idea) and
that the Idea-Idea is a-kind-of Manifestation-Idea—which is a-kind-of
itself, so that the system is completely self-describing— would have
been appreciated by Plato as an extremely practical joke [Plato]. --
Alan Key
_______________________________________________
Boost-users mailing list
[email protected]
https://lists.boost.org/mailman/listinfo.cgi/boost-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.