This seems serious, but I've no idea what it means.
The line of code appears to be 398 marked below.
std::string spvTargetEnvList(const int pad, const int wrap) {
std::string ret;
size_t max_line_len = wrap - pad; // The first line isn't padded
std::string line;
std::string sep = "";
for (auto& name_env : spvTargetEnvNameMap) {
std::string word = sep + name_env.first;
if (line.length() + word.length() > max_line_len) {
// Adding one word wouldn't fit, commit the line in progress and
// start a new one.
ret += line + "\n";
line.assign(pad, ' ');
// The first line is done. The max length now comprises the
// padding.
max_line_len = wrap;
}
line += word;
398 >> sep = "|";
}
ret += line;
return ret;
}
In file included from /usr/include/c++/12/string:40,
from
/builddir/build/BUILD/SPIRV-Tools-21e3f681e2004590c7865bc8c0195a4ab8e66c88/source/spirv_target_env.h:18,
from
/builddir/build/BUILD/SPIRV-Tools-21e3f681e2004590c7865bc8c0195a4ab8e66c88/source/spirv_target_env.cpp:15:
In function 'std::char_traits<char>::copy(char*, char const*, unsigned
int)',
inlined from 'std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >::_S_copy(char*, char
const*, unsigned int)' 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> >::_S_copy(char*, char
const*, unsigned int)' at
/usr/include/c++/12/bits/basic_string.h:418:7,
inlined from 'std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned
int, unsigned int, char const*, unsigned int)' 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> >::assign(char const*)'
at /usr/include/c++/12/bits/basic_string.h:1647:19,
inlined from 'std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >::operator=(char
const*)' at /usr/include/c++/12/bits/basic_string.h:815:28,
inlined from 'spvTargetEnvList[abi:cxx11](int, int)' at
/builddir/build/BUILD/SPIRV-Tools-21e3f681e2004590c7865bc8c0195a4ab8e66c88/source/spirv_target_env.cpp:398:11:
/usr/include/c++/12/bits/char_traits.h:431:56: error: 'memcpy'
accessing 2147483650 or more bytes at offsets [-1073741822,
3221225470] and [-1073741823, 1073741824] overlaps 2147483653 bytes at
offset -3 [-Werror=restrict]
431 | return static_cast<char_type*>(__builtin_memcpy(__s1,
__s2, __n));
| ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
Show replies by date
Bumping this since I have an identical issue with colobot - the compilation errors out
when a C-like string literal is assigned to an std::string, with the compiler providing
the same "memcpy accessing... overlaps lots-of-bytes at offset -3" error
message.
A.FI.