Bug#983951: renderdoc: ftbfs with -march=x86-64-v3
Package: src:renderdoc
Version: 1.11+dfsg-5
Severity: minor
User: debian-gcc@lists.debian.org
Usertags: ftbfs-x86-64-v3
Starting with LLVM 12 and GCC 11 (and backported to gcc-10 for Debian),
GCC introduces optimizations for new micro-architecture levels from
the x86-64 psABI. Filing these bug reports for packages building with
the current level (x86-64), but not with x86-64-v3.
To reproduce these issues, append -march=x86-64-v3 to the compiler
flags (CFLAGS, CXXFLAGS, ...). You also need hardware supporting these.
The easiest way is to call the dynamic linker in glibc 2.33 like
/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 --help
Otherwise look at the flags in /proc/cpuinfo and compare these with
those from table 3.1 in the System V Application Binary Interface doc:
https://gitlab.com/x86-psABIs/x86-64-ABI/-/wikis/x86-64-psABI
Please don't upload a package setting these flags by default. The
x86-64 baseline is still unchanged.
The full build log can be found at:
http://people.debian.org/~doko/logs/20210228/filtered/gcc10-v3/renderdoc_1.11+dfsg-5_unstable_gcc10-v3.log
The last lines of the build log are at the end of this report.
[...]
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp: In function ‘unsigned int half_float::detail::float2half_impl(double, std::true_type)’:
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:999:56: error: there are no arguments to ‘_mm_set_sd’ that depend on a template parameter, so a declaration of ‘_mm_set_sd’ must be available [-fpermissive]
999 | return _mm_cvtsi128_si32(_mm_cvtps_ph(_mm_cvtpd_ps(_mm_set_sd(value)), _MM_FROUND_CUR_DIRECTION));
| ^~~~~~~~~~
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:999:76: error: ‘_MM_FROUND_CUR_DIRECTION’ was not declared in this scope
999 | return _mm_cvtsi128_si32(_mm_cvtps_ph(_mm_cvtpd_ps(_mm_set_sd(value)), _MM_FROUND_CUR_DIRECTION));
| ^~~~~~~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp: In function ‘float half_float::detail::half2float_impl(unsigned int, float, std::true_type)’:
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:1099:38: error: ‘_mm_cvtsi32_si128’ was not declared in this scope
1099 | return _mm_cvtss_f32(_mm_cvtph_ps(_mm_cvtsi32_si128(value)));
| ^~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:1099:25: error: ‘_mm_cvtph_ps’ was not declared in this scope
1099 | return _mm_cvtss_f32(_mm_cvtph_ps(_mm_cvtsi32_si128(value)));
| ^~~~~~~~~~~~
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:1099:11: error: ‘_mm_cvtss_f32’ was not declared in this scope
1099 | return _mm_cvtss_f32(_mm_cvtph_ps(_mm_cvtsi32_si128(value)));
| ^~~~~~~~~~~~~
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp: In function ‘double half_float::detail::half2float_impl(unsigned int, double, std::true_type)’:
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:1262:51: error: ‘_mm_cvtsi32_si128’ was not declared in this scope
1262 | return _mm_cvtsd_f64(_mm_cvtps_pd(_mm_cvtph_ps(_mm_cvtsi32_si128(value))));
| ^~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:1262:38: error: ‘_mm_cvtph_ps’ was not declared in this scope
1262 | return _mm_cvtsd_f64(_mm_cvtps_pd(_mm_cvtph_ps(_mm_cvtsi32_si128(value))));
| ^~~~~~~~~~~~
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:1262:25: error: ‘_mm_cvtps_pd’ was not declared in this scope
1262 | return _mm_cvtsd_f64(_mm_cvtps_pd(_mm_cvtph_ps(_mm_cvtsi32_si128(value))));
| ^~~~~~~~~~~~
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:1262:11: error: ‘_mm_cvtsd_f64’ was not declared in this scope
1262 | return _mm_cvtsd_f64(_mm_cvtps_pd(_mm_cvtph_ps(_mm_cvtsi32_si128(value))));
| ^~~~~~~~~~~~~
[ 57%] Building CXX object renderdoc/driver/vulkan/CMakeFiles/rdoc_vulkan.dir/vk_state.cpp.o
cd /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/renderdoc/driver/vulkan && /usr/bin/c++ -DDISTRIBUTION_CONTACT=\"https://salsa.debian.org/xorg-team/app/renderdoc\" -DDISTRIBUTION_NAME=\"Debian\" -DDISTRIBUTION_VERSION=\"1.11+dfsg-5\" -DRENDERDOC_EXPORTS -DRENDERDOC_PLATFORM_LINUX -DRENDERDOC_STABLE_BUILD=1 -DRENDERDOC_SUPPORT_EGL -DRENDERDOC_SUPPORT_GL -DRENDERDOC_SUPPORT_GLES -DRENDERDOC_SUPPORT_VULKAN -DRENDERDOC_WINDOWING_XCB -DRENDERDOC_WINDOWING_XLIB -DVK_USE_PLATFORM_WIN32_KHR -DVK_USE_PLATFORM_XCB_KHR -DVK_USE_PLATFORM_XLIB_KHR -DVK_USE_PLATFORM_XLIB_XRANDR_EXT -D_RELEASE -I/<<PKGBUILDDIR>>/renderdoc -I/<<PKGBUILDDIR>>/renderdoc/3rdparty -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++11 -fno-strict-aliasing -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter -Wno-unused-result -Wno-type-limits -Wno-missing-field-initializers -Wno-unknown-
pragmas -Wno-reorder -Wno-unused-but-set-variable -Wno-maybe-uninitialized -Wno-class-memaccess -Wimplicit-fallthrough=2 -O3 -DNDEBUG -fPIC -o CMakeFiles/rdoc_vulkan.dir/vk_state.cpp.o -c /<<PKGBUILDDIR>>/renderdoc/driver/vulkan/vk_state.cpp
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp: In instantiation of ‘unsigned int half_float::detail::float2half_impl(float, std::true_type) [with std::float_round_style R = std::round_to_nearest; std::true_type = std::integral_constant<bool, true>]’:
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:1066:29: required from ‘unsigned int half_float::detail::float2half(T) [with std::float_round_style R = std::round_to_nearest; T = float]’
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:2077:99: required from here
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:910:52: error: ‘_mm_set_ss’ was not declared in this scope
910 | return _mm_cvtsi128_si32(_mm_cvtps_ph(_mm_set_ss(value),
| ~~~~~~~~~~^~~~~~~
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:915:29: error: ‘_mm_cvtps_ph’ was not declared in this scope
915 | _MM_FROUND_CUR_DIRECTION));
| ^
/<<PKGBUILDDIR>>/renderdoc/3rdparty/half/half.hpp:910:28: error: ‘_mm_cvtsi128_si32’ was not declared in this scope
910 | return _mm_cvtsi128_si32(_mm_cvtps_ph(_mm_set_ss(value),
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
911 | (R==std::round_to_nearest) ? _MM_FROUND_TO_NEAREST_INT :
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
912 | (R==std::round_toward_zero) ? _MM_FROUND_TO_ZERO :
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
913 | (R==std::round_toward_infinity) ? _MM_FROUND_TO_POS_INF :
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
914 | (R==std::round_toward_neg_infinity) ? _MM_FROUND_TO_NEG_INF :
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
915 | _MM_FROUND_CUR_DIRECTION));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
make[3]: *** [renderdoc/driver/vulkan/CMakeFiles/rdoc_vulkan.dir/build.make:397: renderdoc/driver/vulkan/CMakeFiles/rdoc_vulkan.dir/vk_shaderdebug.cpp.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:488: renderdoc/driver/vulkan/CMakeFiles/rdoc_vulkan.dir/all] Error 2
/<<PKGBUILDDIR>>/renderdoc/driver/gl/gl_hooks.cpp: In member function ‘virtual void GLHook::RegisterHooks()’:
/<<PKGBUILDDIR>>/renderdoc/driver/gl/gl_hooks.cpp:252:6: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
252 | void GLHook::RegisterHooks()
| ^~~~~~
make[3]: Leaving directory '/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu'
[ 57%] Built target rdoc_gl
make[2]: Leaving directory '/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu'
make[1]: *** [Makefile:152: all] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu'
dh_auto_build: error: cd obj-x86_64-linux-gnu && make -j4 "INSTALL=install --strip-program=true" VERBOSE=1 returned exit code 2
make: *** [debian/rules:10: build] Error 25
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2
Reply to: