Bug#1133635: spirv-tools: ftbfs with GCC-16

Emanuele Rocca <[email protected]>
Newsgroups gmane.linux.debian.devel.x
Message-ID <[email protected]>
Package: src:spirv-tools
Version: 2026.1-1
Severity: important
Tags: sid forky ftbfs
User: [email protected]
Usertags: ftbfs-gcc-16

Hi,

spirv-tools fails to build in a test rebuild on at least amd64 and arm64 with
gcc-16/g++-16, but builds properly with gcc-15/g++-15. The severity of this
report will be raised before the forky release.

The full build log can be found at:
https://people.debian.org/~ema/gcc-16-rebuilds/output-1/spirv-tools_arm64.build.xz

The last lines of the build log are at the end of this report.

To build with GCC 16, either set CC=gcc-16 CXX=g++-16 explicitly,
or install the gcc, g++, gfortran, ... packages from experimental.

  apt-get -t=experimental install g++ 

Common build failures include unused (but set) variables, array subscripts
partly outside array bounds, and new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-16/porting_to.html

Please only close this issue after double-checking that the package can be
built correctly with GCC 16.

Please do not reassign this bug to another package. If a fix in another package
is required, then file a bug for the other package (or clone), and mark this
bug as blocked by the bug in the other package.

[...]


    inlined from ‘spvtools::utils::ScopedTimer<TimerType>::~ScopedTimer() [with TimerType = spvtools::utils::Timer]’ at /build/reproducible-path/spirv-tools-2026.1/source/util/timer.h:260:16,
    inlined from ‘spvtools::opt::Pass::Status spvtools::opt::PassManager::Run(spvtools::opt::IRContext*)’ at /build/reproducible-path/spirv-tools-2026.1/source/opt/pass_manager.cpp:78:3:
/build/reproducible-path/spirv-tools-2026.1/source/util/timer.h:335:9: error: array subscript ‘spvtools::utils::CumulativeTimer[0]’ is partly outside array bounds of ‘void [384]’ [-Werror=array-bounds=]
  335 |     if (pgfaults_ >= 0 && Timer::PageFault() >= 0)
      |         ^~~~~~~~~
In constructor ‘spvtools::utils::ScopedTimer<TimerType>::ScopedTimer(std::ostream*, const char*, bool) [with TimerType = spvtools::utils::Timer]’,
    inlined from ‘spvtools::opt::Pass::Status spvtools::opt::PassManager::Run(spvtools::opt::IRContext*)’ at /build/reproducible-path/spirv-tools-2026.1/source/opt/pass_manager.cpp:57:5:
/build/reproducible-path/spirv-tools-2026.1/source/util/timer.h:253:15: note: object of size 384 allocated by ‘operator new’
  253 |       : timer(new TimerType(out, measure_mem_usage)), tag_(tag) {
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/reproducible-path/spirv-tools-2026.1/source/util/timer.h:253:15: note: object of size 384 allocated by ‘operator new’
In member function ‘virtual void spvtools::utils::CumulativeTimer::Stop()’,
    inlined from ‘spvtools::utils::ScopedTimer<TimerType>::~ScopedTimer() [with TimerType = spvtools::utils::Timer]’ at /build/reproducible-path/spirv-tools-2026.1/source/util/timer.h:260:16,
    inlined from ‘spvtools::opt::Pass::Status spvtools::opt::PassManager::Run(spvtools::opt::IRContext*)’ at /build/reproducible-path/spirv-tools-2026.1/source/opt/pass_manager.cpp:78:3:
/build/reproducible-path/spirv-tools-2026.1/source/util/timer.h:336:17: error: array subscript ‘spvtools::utils::CumulativeTimer[0]’ is partly outside array bounds of ‘void [384]’ [-Werror=array-bounds=]
  336 |       pgfaults_ += Timer::PageFault();
      |       ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
In constructor ‘spvtools::utils::ScopedTimer<TimerType>::ScopedTimer(std::ostream*, const char*, bool) [with TimerType = spvtools::utils::Timer]’,
    inlined from ‘spvtools::opt::Pass::Status spvtools::opt::PassManager::Run(spvtools::opt::IRContext*)’ at /build/reproducible-path/spirv-tools-2026.1/source/opt/pass_manager.cpp:57:5:
/build/reproducible-path/spirv-tools-2026.1/source/util/timer.h:253:15: note: object of size 384 allocated by ‘operator new’
  253 |       : timer(new TimerType(out, measure_mem_usage)), tag_(tag) {
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/reproducible-path/spirv-tools-2026.1/source/util/timer.h:253:15: note: object of size 384 allocated by ‘operator new’
In member function ‘virtual void spvtools::utils::CumulativeTimer::Stop()’,
    inlined from ‘spvtools::utils::ScopedTimer<TimerType>::~ScopedTimer() [with TimerType = spvtools::utils::Timer]’ at /build/reproducible-path/spirv-tools-2026.1/source/util/timer.h:260:16,
    inlined from ‘spvtools::opt::Pass::Status spvtools::opt::PassManager::Run(spvtools::opt::IRContext*)’ at /build/reproducible-path/spirv-tools-2026.1/source/opt/pass_manager.cpp:78:3:
/build/reproducible-path/spirv-tools-2026.1/source/util/timer.h:338:17: error: array subscript ‘spvtools::utils::CumulativeTimer[0]’ is partly outside array bounds of ‘void [384]’ [-Werror=array-bounds=]
  338 |       pgfaults_ = -1;
      |       ~~~~~~~~~~^~~~
In constructor ‘spvtools::utils::ScopedTimer<TimerType>::ScopedTimer(std::ostream*, const char*, bool) [with TimerType = spvtools::utils::Timer]’,
    inlined from ‘spvtools::opt::Pass::Status spvtools::opt::PassManager::Run(spvtools::opt::IRContext*)’ at /build/reproducible-path/spirv-tools-2026.1/source/opt/pass_manager.cpp:57:5:
/build/reproducible-path/spirv-tools-2026.1/source/util/timer.h:253:15: note: object of size 384 allocated by ‘operator new’
  253 |       : timer(new TimerType(out, measure_mem_usage)), tag_(tag) {
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/reproducible-path/spirv-tools-2026.1/source/util/timer.h:253:15: note: object of size 384 allocated by ‘operator new’
cc1plus: all warnings being treated as errors
make[3]: *** [source/opt/CMakeFiles/SPIRV-Tools-opt.dir/build.make:1230: source/opt/CMakeFiles/SPIRV-Tools-opt.dir/pass_manager.cpp.o] Error 1
make[3]: *** Waiting for unfinished jobs....
[ 73%] Linking CXX executable spirv-cfg
cd /build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu/tools && /usr/bin/cmake -E cmake_link_script CMakeFiles/spirv-cfg.dir/link.txt --verbose=1
/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/spirv-tools-2026.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -O3 -DNDEBUG -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/spirv-cfg.dir/link.d "CMakeFiles/spirv-cfg.dir/cfg/cfg.cpp.o" "CMakeFiles/spirv-cfg.dir/cfg/bin_to_dot.cpp.o" "CMakeFiles/spirv-cfg.dir/io.cpp.o" "CMakeFiles/spirv-cfg.dir/util/flags.cpp.o" -o spirv-cfg  ../source/libSPIRV-Tools.a -lrt
make[3]: Leaving directory '/build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu'
[ 73%] Built target spirv-cfg
[ 74%] Linking CXX executable spirv-as
cd /build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu/tools && /usr/bin/cmake -E cmake_link_script CMakeFiles/spirv-as.dir/link.txt --verbose=1
[ 75%] Linking CXX executable spirv-val
/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/spirv-tools-2026.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -O3 -DNDEBUG -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/spirv-as.dir/link.d "CMakeFiles/spirv-as.dir/as/as.cpp.o" "CMakeFiles/spirv-as.dir/io.cpp.o" "CMakeFiles/spirv-as.dir/util/flags.cpp.o" -o spirv-as  ../source/libSPIRV-Tools.a -lrt
cd /build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu/tools && /usr/bin/cmake -E cmake_link_script CMakeFiles/spirv-val.dir/link.txt --verbose=1
make[3]: Leaving directory '/build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu'
[ 75%] Built target spirv-as
/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/spirv-tools-2026.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -O3 -DNDEBUG -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/spirv-val.dir/link.d "CMakeFiles/spirv-val.dir/util/flags.cpp.o" "CMakeFiles/spirv-val.dir/val/val.cpp.o" "CMakeFiles/spirv-val.dir/util/cli_consumer.cpp.o" "CMakeFiles/spirv-val.dir/io.cpp.o" -o spirv-val  ../source/libSPIRV-Tools.a -lrt
make[3]: Leaving directory '/build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu'
[ 75%] Built target spirv-val
[ 75%] Linking CXX executable spirv-objdump
cd /build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu/tools && /usr/bin/cmake -E cmake_link_script CMakeFiles/spirv-objdump.dir/link.txt --verbose=1
[ 75%] Linking CXX executable spirv-dis
cd /build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu/tools && /usr/bin/cmake -E cmake_link_script CMakeFiles/spirv-dis.dir/link.txt --verbose=1
/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/spirv-tools-2026.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -O3 -DNDEBUG -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/spirv-dis.dir/link.d "CMakeFiles/spirv-dis.dir/util/flags.cpp.o" "CMakeFiles/spirv-dis.dir/dis/dis.cpp.o" "CMakeFiles/spirv-dis.dir/io.cpp.o" -o spirv-dis  ../source/libSPIRV-Tools.a -lrt
make[3]: Leaving directory '/build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu'
[ 75%] Built target spirv-dis
/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/spirv-tools-2026.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -O3 -DNDEBUG -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/spirv-objdump.dir/link.d "CMakeFiles/spirv-objdump.dir/objdump/objdump.cpp.o" "CMakeFiles/spirv-objdump.dir/objdump/extract_source.cpp.o" "CMakeFiles/spirv-objdump.dir/util/cli_consumer.cpp.o" "CMakeFiles/spirv-objdump.dir/io.cpp.o" "CMakeFiles/spirv-objdump.dir/util/flags.cpp.o" -o spirv-objdump  ../source/libSPIRV-Tools.a -lrt
make[3]: Leaving directory '/build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu'
[ 75%] Built target spirv-objdump
make[3]: Leaving directory '/build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:1144: source/opt/CMakeFiles/SPIRV-Tools-opt.dir/all] Error 2
make[2]: Leaving directory '/build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu'
make[1]: *** [Makefile:149: all] Error 2
make[1]: Leaving directory '/build/reproducible-path/spirv-tools-2026.1/obj-aarch64-linux-gnu'
dh_auto_build: error: cd obj-aarch64-linux-gnu && make -j128 INSTALL="install --strip-program=true" VERBOSE=1 returned exit code 2
make: *** [debian/rules:6: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.