[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: