[DynInst_API:] boost 1.70 breaks dyninst build over checked_delete


Date: Mon, 15 Apr 2019 13:43:15 -0500
From: "Mark W. Krentel" <krentel@xxxxxxxx>
Subject: [DynInst_API:] boost 1.70 breaks dyninst build over checked_delete
This is mostly an early heads up, I'm not blocked or anything.  But at
some point, you'll need to adapt to some new boost usage.

I'll leave it to you to decide if this is needed for 10.1.  Before
10.1 would be a bit easier for spack users, so that when 10.1 comes
out, then the latest release of dyninst works with the latest release
of boost.  Otherwise, I'd have to add a constraint so that 10.1
requires boost <= 1.69, or else add a patch to 10.1.

Anyway, boost 1.70.0 was released April 12 and was added to spack
yesterday.  1.70 changed some usage in checked_delete which breaks
dyninst master.

Boost 1.70 added BOOST_NOEXCEPT to the signature to the checked_delete
templates.  For example, diff from 1.69 to 1.70 includes:

--- boost_1_69_0/boost/core/checked_delete.hpp 2018-12-05 13:58:16.000000000 -0600 +++ boost_1_70_0/boost/core/checked_delete.hpp 2019-04-09 14:35:30.000000000 -0500
...
-template<class T> inline void checked_delete(T * x)
+template<class T> inline void checked_delete(T * x) BOOST_NOEXCEPT

The dyninst build dies in some proccontrol files as:

In file included from /home/krentel/dyninst/dyninst/proccontrol/src/int_process.h:34:0, from /home/krentel/dyninst/dyninst/proccontrol/src/event.C:33: /home/krentel/dyninst/dyninst/proccontrol/h/PCProcess.h:106:16: error: declaration of 'void boost::checked_delete(T*) [with T = Dyninst::ProcControlAPI::Breakpoint]' has a different exception specifier
    friend void boost::checked_delete<Breakpoint>(Breakpoint *);
                ^~~~~
In file included from /home/krentel/dyninst/install/linux-fedora26-x86_64/gcc-7.3.1/boost-1.70.0-77l6mbqsezvvqrg2ngewbxkggd6mlht5/include/boost/checked_delete.hpp:15:0, from /home/krentel/dyninst/install/linux-fedora26-x86_64/gcc-7.3.1/boost-1.70.0-77l6mbqsezvvqrg2ngewbxkggd6mlht5/include/boost/smart_ptr/shared_ptr.hpp:26, from /home/krentel/dyninst/install/linux-fedora26-x86_64/gcc-7.3.1/boost-1.70.0-77l6mbqsezvvqrg2ngewbxkggd6mlht5/include/boost/shared_ptr.hpp:17,
                 from /home/krentel/dyninst/dyninst/common/h/dyn_regs.h:36,
from /home/krentel/dyninst/dyninst/common/h/dyntypes.h:183, from /home/krentel/dyninst/dyninst/proccontrol/src/event.C:31: /home/krentel/dyninst/install/linux-fedora26-x86_64/gcc-7.3.1/boost-1.70.0-77l6mbqsezvvqrg2ngewbxkggd6mlht5/include/boost/core/checked_delete.hpp:31:31: note: from previous declaration 'void boost::checked_delete(T*) noexcept [with T = Dyninst::ProcControlAPI::Breakpoint]'
 template<class T> inline void checked_delete(T * x) BOOST_NOEXCEPT


These things happen, it's what keeps developers employed.  A similar
thing happened when 1.69 came out.

I'll open an issue ...

--Mark


[← Prev in Thread] Current Thread [Next in Thread→]