canonical / wlcs

Wayland Conformance Test Suite
GNU General Public License v2.0
50 stars 14 forks source link

FTBFS on ppc64el "error: ‘memcpy’ accessing $loads or more bytes…" #262

Closed Saviq closed 1 year ago

Saviq commented 1 year ago

https://launchpad.net/~mir-team/+archive/ubuntu/dev/+packages?field.name_filter=wlcs&field.status_filter=&field.series_filter=kinetic

[ 57%] Building CXX object CMakeFiles/wlcs.ubsan.dir/tests/test_bad_buffer.cpp.o
/usr/bin/c++ -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/<<PKGBUILDDIR>>/include -I/usr/src/googletest/googlemock/include -I/<<PKGBUILDDIR>>/obj-powerpc64le-linux-gnu -g -O3 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pthread -g -Werror -Wall -fno-strict-aliasing -pedantic -Wnon-virtual-dtor -Wextra -fPIC -fsanitize=undefined -DGTEST_HAS_PTHREAD=1 -std=c++20 -MD -MT CMakeFiles/wlcs.ubsan.dir/tests/test_bad_buffer.cpp.o -MF CMakeFiles/wlcs.ubsan.dir/tests/test_bad_buffer.cpp.o.d -o CMakeFiles/wlcs.ubsan.dir/tests/test_bad_buffer.cpp.o -c /<<PKGBUILDDIR>>/tests/test_bad_buffer.cpp
In file included from /usr/include/c++/12/string:40,
                 from /<<PKGBUILDDIR>>/include/surface_builder.h:22,
                 from /<<PKGBUILDDIR>>/src/surface_builder.cpp:19:
In function ‘std::char_traits<char>::copy(char*, char const*, unsigned long)’,
    inlined from ‘std::char_traits<char>::copy(char*, char const*, unsigned long)’ at /usr/include/c++/12/bits/char_traits.h:423:7,
    inlined from ‘std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy(char*, char const*, unsigned long)’ at /usr/include/c++/12/bits/basic_string.h:423:21,
    inlined from ‘std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned long, unsigned long, char const*, unsigned long)’ at /usr/include/c++/12/bits/basic_string.tcc:532:22,
    inlined from ‘std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::replace(unsigned long, unsigned long, char const*, unsigned long)’ at /usr/include/c++/12/bits/basic_string.h:2171:19,
    inlined from ‘std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::insert(unsigned long, char const*)’ at /usr/include/c++/12/bits/basic_string.h:1928:22,
    inlined from ‘std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >’ at /usr/include/c++/12/bits/basic_string.h:3541:36,
    inlined from ‘wlcs::XdgStableSurfaceBuilder::XdgStableSurfaceBuilder(int, int, int, int)’ at /<<PKGBUILDDIR>>/src/surface_builder.cpp:73:80:
/usr/include/c++/12/bits/char_traits.h:431:56: error: ‘memcpy’ accessing 9223372036854775810 or more bytes at offsets [2, 9223372036854775807] and 1 may overlap up to 9223372036854775813 bytes at offset -3 [-Werror=restrict]
  431 |         return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n));
      |                                        ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~

I originally thought we're hitting LP#1983852, but without precompiled headers.