Re: [DynInst_API:] boost 1.70 breaks dyninst build over checked_delete


Date: Mon, 15 Apr 2019 14:55:54 -0500
From: Tim Haines <thaines.astro@xxxxxxxxx>
Subject: Re: [DynInst_API:] boost 1.70 breaks dyninst build over checked_delete
Hi, Mark.

I saw that 1.70 had been released and put it on my TODO list to test with Dyninst, so thanks for checking that off for me! The underlying issue is that the Breakpoint class has marked boost::checked_delete as a friend which is weird because it doesn't access any members of the passed object. I guessing that just marking the friend declaration BOOST_NOEXCEPT will probably fix the issue.

Thanks.

- Tim


On Mon, Apr 15, 2019 at 1:43 PM Mark W. Krentel <krentel@xxxxxxxx> wrote:
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


_______________________________________________
Dyninst-api mailing list
Dyninst-api@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api
[← Prev in Thread] Current Thread [Next in Thread→]