GobySoft / dccl

Dynamic Compact Control Language
Other
17 stars 13 forks source link

armhf - ubuntu:20.04 - Multiple ctests failing LeakSanitizer #115

Closed psmskelton closed 8 months ago

psmskelton commented 1 year ago

Likely related to #114, but separating issues due to different architecture.

On an armhf platform running Ubuntu 20.04, compiling the latest 4.0 repository and running ctest has the following failures:

The following tests FAILED:
         14 - dccl_test_oneof (Failed)
         22 - dccl_test_load_file (Failed)
         23 - dccl_test_ccl (Failed)
         24 - dccl_test_arithmetic (Failed)
         25 - dccl_test_multithread (Failed)
         26 - dccl_test_native_protobuf (Failed)
         34 - dccl_test_dynamic_conditions_v4 (Failed)

Which have summary asan outputs of:

SUMMARY: AddressSanitizer: 132 byte(s) leaked in 1 allocation(s).
SUMMARY: AddressSanitizer: 132 byte(s) leaked in 1 allocation(s).
SUMMARY: AddressSanitizer: 132 byte(s) leaked in 1 allocation(s).
SUMMARY: AddressSanitizer: 132 byte(s) leaked in 1 allocation(s).
SUMMARY: AddressSanitizer: 132 byte(s) leaked in 1 allocation(s).
SUMMARY: AddressSanitizer: 132 byte(s) leaked in 1 allocation(s).
SUMMARY: AddressSanitizer: 33680 byte(s) leaked in 421 allocation(s).

For dccl_test_dynamic_conditions_v4, this is multiples of:

Direct leak of 80 byte(s) in 1 object(s) allocated from:
    #0 0xb6a75ffa in __interceptor_realloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:163
    #1 0xad9c30cc  (<unknown module>)

For the rest:

Direct leak of 132 byte(s) in 1 object(s) allocated from:
    #0 0xb6aefcf8 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:144
    #1 0xb6feac6c  (<unknown module>)

The lack of tracing points to the common dlopen/dlclose bug that asan has had for, oh, 7 years.

@tsaubergine - Any thoughts on #114 or this?

psmskelton commented 1 year ago

34 - dccl_test_dynamic_conditions_v4 (Failed) is fixed by the patch to lua-protobuf spoken about in #114.

The other 6 tests still fail.

psmskelton commented 1 year ago

The remaining 6 failing tests appear to be caused by gcc. Swapping over to clang-12 (latest binaries for target platform) results in a green bill of health from asan/lsan on armhf.

gcc=9.3 is warning about ABI changes that are known incompatibilities that gcc=7.1 introduced specific to the arm32/armhf architecture. I would assume that the cross-compilation build farms for protobuf and boost are using at least gcc=7.1, so the general consensus is:

Just ignore the warnings with -Wno-psabi if you can ensure all of your libraries are built with at least gcc=7.1.

That doesn't sit particularly well with me as warnings are usually there for a reason.


pb_plugin.cpp

[  4%] Building CXX object src/apps/pb_plugin/CMakeFiles/protoc-gen-dccl.dir/pb_plugin.cpp.o
In file included from /usr/include/c++/9/vector:72,
                 from /usr/include/google/protobuf/descriptor.h:60,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/gen_units_class_plugin.h:28,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/pb_plugin.cpp:25:
/usr/include/c++/9/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {double}; _Tp = double; _Alloc = std::allocator<double>]’:
/usr/include/c++/9/bits/vector.tcc:121:4: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<double*, std::vector<double> >’ changed in GCC 7.1
  121 |    _M_realloc_insert(end(), std::forward<_Args>(__args)...);
      |    ^~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {double}; _Tp = double; _Alloc = std::allocator<double>]’:
/usr/include/c++/9/bits/vector.tcc:426:7: note: parameter passing for argument of type ‘std::vector<double>::iterator’ {aka ‘__gnu_cxx::__normal_iterator<double*, std::vector<double> >’} changed in GCC 7.1
  426 |       vector<_Tp, _Alloc>::
      |       ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/9/memory:65,
                 from /usr/include/google/protobuf/descriptor.h:57,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/gen_units_class_plugin.h:28,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/pb_plugin.cpp:25:
/usr/include/c++/9/bits/stl_uninitialized.h: In function ‘_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = double*; _ForwardIterator = double*; _Allocator = std::allocator<double>]’:
/usr/include/c++/9/bits/stl_uninitialized.h:329:2: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  328 |       return std::__uninitialized_copy_a
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  329 |  (_GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(__first),
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  330 |   _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(__last), __result, __alloc);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h: In function ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator<_Tp>&) [with _InputIterator = std::move_iterator<double*>; _ForwardIterator = double*; _Tp = double]’:
/usr/include/c++/9/bits/stl_uninitialized.h:305:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  305 |     __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
      |     ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h:305:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
/usr/include/c++/9/bits/stl_uninitialized.h:307:37: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  307 |     { return std::uninitialized_copy(__first, __last, __result); }
      |              ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/9/vector:67,
                 from /usr/include/google/protobuf/descriptor.h:60,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/gen_units_class_plugin.h:28,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/pb_plugin.cpp:25:
/usr/include/c++/9/bits/stl_vector.h: In member function ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = double; _Alloc = std::allocator<double>]’:
/usr/include/c++/9/bits/stl_vector.h:1195:4: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<double*, std::vector<double> >’ changed in GCC 7.1
 1195 |    _M_realloc_insert(end(), __x);
      |    ^~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/9/memory:65,
                 from /usr/include/google/protobuf/descriptor.h:57,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/gen_units_class_plugin.h:28,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/pb_plugin.cpp:25:
/usr/include/c++/9/bits/stl_uninitialized.h: In function ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::move_iterator<double*>; _ForwardIterator = double*]’:
/usr/include/c++/9/bits/stl_uninitialized.h:115:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  115 |     uninitialized_copy(_InputIterator __first, _InputIterator __last,
      |     ^~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h:115:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
/usr/include/c++/9/bits/stl_uninitialized.h:140:15: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  137 |       return std::__uninitialized_copy<__is_trivial(_ValueType1)
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  138 |            && __is_trivial(_ValueType2)
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  139 |            && __assignable>::
      |            ~~~~~~~~~~~~~~~~~~
  140 |  __uninit_copy(__first, __last, __result);
      |  ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/9/vector:72,
                 from /usr/include/google/protobuf/descriptor.h:60,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/gen_units_class_plugin.h:28,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/pb_plugin.cpp:25:
/usr/include/c++/9/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const double&}; _Tp = double; _Alloc = std::allocator<double>]’:
/usr/include/c++/9/bits/vector.tcc:426:7: note: parameter passing for argument of type ‘std::vector<double>::iterator’ {aka ‘__gnu_cxx::__normal_iterator<double*, std::vector<double> >’} changed in GCC 7.1
  426 |       vector<_Tp, _Alloc>::
      |       ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/9/memory:65,
                 from /usr/include/google/protobuf/descriptor.h:57,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/gen_units_class_plugin.h:28,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/pb_plugin.cpp:25:
/usr/include/c++/9/bits/stl_uninitialized.h: In static member function ‘static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::move_iterator<double*>; _ForwardIterator = double*]’:
/usr/include/c++/9/bits/stl_uninitialized.h:99:9: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
   99 |         __uninit_copy(_InputIterator __first, _InputIterator __last,
      |         ^~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h:99:9: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
/usr/include/c++/9/bits/stl_uninitialized.h:101:27: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  101 |         { return std::copy(__first, __last, __result); }
      |                  ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/9/memory:62,
                 from /usr/include/google/protobuf/descriptor.h:57,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/gen_units_class_plugin.h:28,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/pb_plugin.cpp:25:
/usr/include/c++/9/bits/stl_algobase.h: In function ‘_OI std::copy(_II, _II, _OI) [with _II = std::move_iterator<double*>; _OI = double*]’:
/usr/include/c++/9/bits/stl_algobase.h:465:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  465 |     copy(_II __first, _II __last, _OI __result)
      |     ^~~~
/usr/include/c++/9/bits/stl_algobase.h:465:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
In file included from /usr/include/c++/9/bits/stl_algobase.h:67,
                 from /usr/include/c++/9/memory:62,
                 from /usr/include/google/protobuf/descriptor.h:57,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/gen_units_class_plugin.h:28,
                 from /home/admin/git_ws/dccl/src/apps/pb_plugin/pb_plugin.cpp:25:
/usr/include/c++/9/bits/stl_iterator.h: In function ‘decltype (std::__miter_base(__it.base())) std::__miter_base(std::move_iterator<_IteratorL>) [with _Iterator = double*]’:
/usr/include/c++/9/bits/stl_iterator.h:1259:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
 1259 |     __miter_base(move_iterator<_Iterator> __it)
      |     ^~~~~~~~~~~~

field_codec_arithmetic.cpp

[ 21%] Building CXX object src/arithmetic/CMakeFiles/dccl_arithmetic.dir/field_codec_arithmetic.cpp.o
In file included from /usr/include/c++/9/vector:72,
                 from /usr/include/google/protobuf/descriptor.h:60,
                 from /home/admin/git_ws/dccl/src/arithmetic/../field_codec.h:31,
                 from /home/admin/git_ws/dccl/src/arithmetic/../field_codec_typed.h:31,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.h:33,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.cpp:25:
/usr/include/c++/9/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {double}; _Tp = double; _Alloc = std::allocator<double>]’:
/usr/include/c++/9/bits/vector.tcc:121:4: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<double*, std::vector<double> >’ changed in GCC 7.1
  121 |    _M_realloc_insert(end(), std::forward<_Args>(__args)...);
      |    ^~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {double}; _Tp = double; _Alloc = std::allocator<double>]’:
/usr/include/c++/9/bits/vector.tcc:426:7: note: parameter passing for argument of type ‘std::vector<double>::iterator’ {aka ‘__gnu_cxx::__normal_iterator<double*, std::vector<double> >’} changed in GCC 7.1
  426 |       vector<_Tp, _Alloc>::
      |       ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/9/vector:67,
                 from /usr/include/google/protobuf/descriptor.h:60,
                 from /home/admin/git_ws/dccl/src/arithmetic/../field_codec.h:31,
                 from /home/admin/git_ws/dccl/src/arithmetic/../field_codec_typed.h:31,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.h:33,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.cpp:25:
/usr/include/c++/9/bits/stl_vector.h: In copy constructor ‘std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = double; _Alloc = std::allocator<double>]’:
/usr/include/c++/9/bits/stl_vector.h:555:31: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
  555 |    std::__uninitialized_copy_a(__x.begin(), __x.end(),
      |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
  556 |           this->_M_impl._M_start,
      |           ~~~~~~~~~~~~~~~~~~~~~~~
  557 |           _M_get_Tp_allocator());
      |           ~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/9/memory:65,
                 from /usr/include/google/protobuf/descriptor.h:57,
                 from /home/admin/git_ws/dccl/src/arithmetic/../field_codec.h:31,
                 from /home/admin/git_ws/dccl/src/arithmetic/../field_codec_typed.h:31,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.h:33,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.cpp:25:
/usr/include/c++/9/bits/stl_uninitialized.h: In function ‘_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = double*; _ForwardIterator = double*; _Allocator = std::allocator<double>]’:
/usr/include/c++/9/bits/stl_uninitialized.h:329:2: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  328 |       return std::__uninitialized_copy_a
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  329 |  (_GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(__first),
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  330 |   _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(__last), __result, __alloc);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h: In function ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator<const double*, std::vector<double> >; _ForwardIterator = double*; _Tp = double]’:
/usr/include/c++/9/bits/stl_uninitialized.h:305:5: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
  305 |     __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
      |     ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h:305:5: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
/usr/include/c++/9/bits/stl_uninitialized.h:307:37: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
  307 |     { return std::uninitialized_copy(__first, __last, __result); }
      |              ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h: In function ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator<_Tp>&) [with _InputIterator = std::move_iterator<double*>; _ForwardIterator = double*; _Tp = double]’:
/usr/include/c++/9/bits/stl_uninitialized.h:305:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  305 |     __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
      |     ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h:305:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
/usr/include/c++/9/bits/stl_uninitialized.h:307:37: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  307 |     { return std::uninitialized_copy(__first, __last, __result); }
      |              ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h: In function ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<const double*, std::vector<double> >; _ForwardIterator = double*]’:
/usr/include/c++/9/bits/stl_uninitialized.h:115:5: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
  115 |     uninitialized_copy(_InputIterator __first, _InputIterator __last,
      |     ^~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h:115:5: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
/usr/include/c++/9/bits/stl_uninitialized.h:140:15: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
  137 |       return std::__uninitialized_copy<__is_trivial(_ValueType1)
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  138 |            && __is_trivial(_ValueType2)
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  139 |            && __assignable>::
      |            ~~~~~~~~~~~~~~~~~~
  140 |  __uninit_copy(__first, __last, __result);
      |  ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h: In function ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::move_iterator<double*>; _ForwardIterator = double*]’:
/usr/include/c++/9/bits/stl_uninitialized.h:115:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  115 |     uninitialized_copy(_InputIterator __first, _InputIterator __last,
      |     ^~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h:115:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
/usr/include/c++/9/bits/stl_uninitialized.h:140:15: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  137 |       return std::__uninitialized_copy<__is_trivial(_ValueType1)
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  138 |            && __is_trivial(_ValueType2)
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  139 |            && __assignable>::
      |            ~~~~~~~~~~~~~~~~~~
  140 |  __uninit_copy(__first, __last, __result);
      |  ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h: In static member function ‘static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<const double*, std::vector<double> >; _ForwardIterator = double*]’:
/usr/include/c++/9/bits/stl_uninitialized.h:99:9: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
   99 |         __uninit_copy(_InputIterator __first, _InputIterator __last,
      |         ^~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h:99:9: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
/usr/include/c++/9/bits/stl_uninitialized.h:101:27: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
  101 |         { return std::copy(__first, __last, __result); }
      |                  ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h: In static member function ‘static _ForwardIterator std::__uninitialized_copy<true>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::move_iterator<double*>; _ForwardIterator = double*]’:
/usr/include/c++/9/bits/stl_uninitialized.h:99:9: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
   99 |         __uninit_copy(_InputIterator __first, _InputIterator __last,
      |         ^~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_uninitialized.h:99:9: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
/usr/include/c++/9/bits/stl_uninitialized.h:101:27: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  101 |         { return std::copy(__first, __last, __result); }
      |                  ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/9/algorithm:61,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.h:29,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.cpp:25:
/usr/include/c++/9/bits/stl_algobase.h: In function ‘_OI std::copy(_II, _II, _OI) [with _II = __gnu_cxx::__normal_iterator<const double*, std::vector<double> >; _OI = double*]’:
/usr/include/c++/9/bits/stl_algobase.h:465:5: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
  465 |     copy(_II __first, _II __last, _OI __result)
      |     ^~~~
/usr/include/c++/9/bits/stl_algobase.h:465:5: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
/usr/include/c++/9/bits/stl_algobase.h:474:7: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
  473 |       return std::__copy_move_a2<__is_move_iterator<_II>::__value>
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  474 |       (std::__miter_base(__first), std::__miter_base(__last), __result);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_algobase.h: In function ‘_OI std::copy(_II, _II, _OI) [with _II = std::move_iterator<double*>; _OI = double*]’:
/usr/include/c++/9/bits/stl_algobase.h:465:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
  465 |     copy(_II __first, _II __last, _OI __result)
      |     ^~~~
/usr/include/c++/9/bits/stl_algobase.h:465:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
In file included from /usr/include/c++/9/bits/stl_algobase.h:61,
                 from /usr/include/c++/9/algorithm:61,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.h:29,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.cpp:25:
/usr/include/c++/9/bits/cpp_type_traits.h: In function ‘_Iterator std::__miter_base(_Iterator) [with _Iterator = __gnu_cxx::__normal_iterator<const double*, std::vector<double> >]’:
/usr/include/c++/9/bits/cpp_type_traits.h:428:5: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
  428 |     __miter_base(_Iterator __it)
      |     ^~~~~~~~~~~~
In file included from /usr/include/c++/9/algorithm:61,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.h:29,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.cpp:25:
/usr/include/c++/9/bits/stl_algobase.h: In function ‘_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = __gnu_cxx::__normal_iterator<const double*, std::vector<double> >; _OI = double*]’:
/usr/include/c++/9/bits/stl_algobase.h:438:5: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
  438 |     __copy_move_a2(_II __first, _II __last, _OI __result)
      |     ^~~~~~~~~~~~~~
/usr/include/c++/9/bits/stl_algobase.h:438:5: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
In file included from /usr/include/c++/9/bits/stl_algobase.h:67,
                 from /usr/include/c++/9/algorithm:61,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.h:29,
                 from /home/admin/git_ws/dccl/src/arithmetic/field_codec_arithmetic.cpp:25:
/usr/include/c++/9/bits/stl_iterator.h: In function ‘decltype (std::__miter_base(__it.base())) std::__miter_base(std::move_iterator<_IteratorL>) [with _Iterator = double*]’:
/usr/include/c++/9/bits/stl_iterator.h:1259:5: note: parameter passing for argument of type ‘std::move_iterator<double*>’ changed in GCC 7.1
 1259 |     __miter_base(move_iterator<_Iterator> __it)
      |     ^~~~~~~~~~~~
/usr/include/c++/9/bits/stl_iterator.h: In function ‘_Iterator std::__niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container>) [with _Iterator = const double*; _Container = std::vector<double>]’:
/usr/include/c++/9/bits/stl_iterator.h:1007:5: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const double*, std::vector<double> >’ changed in GCC 7.1
 1007 |     __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it)
      |     ^~~~~~~~~~~~

dccl_test_units/test.cpp

[ 69%] Building CXX object src/test/dccl_units/CMakeFiles/dccl_test_units.dir/test.cpp.o
In file included from /home/admin/git_ws/dccl/src/test/dccl_units/test.cpp:30:
/usr/include/boost/units/io.hpp: In function ‘constexpr bool boost::units::detail::find_matching_scale_impl(End, End, Prev, T, double, F) [with End = boost::units::dimensionless_type; Prev = boost::units::scale<2, boost::units::static_rational<90> >; T = double; F = boost::units::detail::print_scale_t<std::basic_ostream<char> >]’:
/usr/include/boost/units/io.hpp:695:6: note: parameter passing for argument of type ‘boost::units::scale<2, boost::units::static_rational<90> >’ changed in GCC 7.1
  695 | bool find_matching_scale_impl(End, End, Prev, T, double, F)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/boost/units/io.hpp: In function ‘constexpr bool boost::units::detail::find_matching_scale_impl(End, End, Prev, T, double, F) [with End = boost::units::dimensionless_type; Prev = boost::units::scale<2, boost::units::static_rational<90> >; T = int; F = boost::units::detail::print_scale_t<std::basic_ostream<char> >]’:
/usr/include/boost/units/io.hpp:695:6: note: parameter passing for argument of type ‘boost::units::scale<2, boost::units::static_rational<90> >’ changed in GCC 7.1
/usr/include/boost/units/io.hpp: In function ‘constexpr bool boost::units::detail::find_matching_scale_impl(End, End, Prev, T, double, F) [with End = boost::units::dimensionless_type; Prev = boost::units::scale<10, boost::units::static_rational<27> >; T = double; F = boost::units::detail::print_scale_t<std::basic_ostream<char> >]’:
/usr/include/boost/units/io.hpp:695:6: note: parameter passing for argument of type ‘boost::units::scale<10, boost::units::static_rational<27> >’ changed in GCC 7.1
/usr/include/boost/units/io.hpp: In function ‘constexpr bool boost::units::detail::find_matching_scale_impl(End, End, Prev, T, double, F) [with End = boost::units::dimensionless_type; Prev = boost::units::scale<10, boost::units::static_rational<27> >; T = int; F = boost::units::detail::print_scale_t<std::basic_ostream<char> >]’:
/usr/include/boost/units/io.hpp:695:6: note: parameter passing for argument of type ‘boost::units::scale<10, boost::units::static_rational<27> >’ changed in GCC 7.1
tsaubergine commented 10 months ago

Is this actually causing issues or just warnings related to the ABI change?

psmskelton commented 8 months ago

@tsaubergine - Just warnings.

Just ignore the warnings with -Wno-psabi if you can ensure all of your libraries are built with at least gcc=7.1.

Feel free to suppress them and close this.