[FFmpeg-trac] #10724(undetermined:new): Build failure with stricter C compilers (e.g. GCC 14)

FFmpeg trac at avcodec.org
Tue Dec 5 17:33:02 EET 2023


#10724: Build failure with stricter C compilers (e.g. GCC 14)
-------------------------------------+-------------------------------------
             Reporter:  Sam James    |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug: ffmpeg's vulkan_av1.c fails to build w/ GCC 14 which
 makes -Wint-conversion an error by default.

 This came up in a different file but vulkan related in #9983.

 How to reproduce:
 {{{
 /var/tmp/portage/media-video/ffmpeg-6.1/work/ffmpeg-6.1/configure
 --prefix=/usr --libdir=/usr/lib --shlibdir=/usr/lib
 --docdir=/usr/share/doc/ffmpeg-6.1/html --mandir=/usr/share/man --enable-
 shared --cc=x86_64-pc-linux-gnu-gcc -m32 -mfpmath=sse --cxx=x86_64-pc-
 linux-gnu-g++ -m32 -mfpmath=sse --ar=x86_64-pc-linux-gnu-ar --nm=x86_64
 -pc-linux-gnu-nm --strip=x86_64-pc-linux-gnu-strip --ranlib=x86_64-pc-
 linux-gnu-ranlib --pkg-config=x86_64-pc-linux-gnu-pkg-config
 --optflags=-O3 -march=native -fno-semantic-interposition -pipe -Wa,-O2
 -Wa,-mtune=znver2 -fcf-protection=none -fdiagnostics-color=always
 -fdiagnostics-urls=never -frecord-gcc-switches -ggdb3 -Werror=format-
 security -Wformat --disable-static --disable-libaribcaption --enable-
 avfilter --disable-stripping --disable-optimizations --disable-libcelt
 --disable-indev=v4l2 --disable-outdev=v4l2 --disable-indev=oss --disable-
 indev=jack --disable-indev=sndio --disable-outdev=oss --disable-
 outdev=sndio --enable-version3 --enable-nonfree --enable-bzlib --disable-
 runtime-cpudetect --disable-debug --disable-gcrypt --enable-gnutls
 --enable-gmp --enable-gpl --disable-hardcoded-tables --enable-iconv
 --disable-libxml2 --disable-lzma --enable-network --disable-opencl
 --disable-openssl --enable-postproc --disable-libsmbclient --enable-ffplay
 --enable-sdl2 --disable-vaapi --disable-vdpau --enable-vulkan --enable-
 xlib --enable-libxcb --enable-libxcb-shm --enable-libxcb-xfixes --enable-
 zlib --disable-libcdio --disable-libiec61883 --disable-libdc1394
 --disable-libcaca --disable-openal --enable-opengl --disable-libv4l2
 --enable-libpulse --disable-libdrm --disable-libjack --disable-
 libopencore-amrwb --disable-libopencore-amrnb --disable-libcodec2
 --enable-libdav1d --enable-libfdk-aac --enable-libopenjpeg --disable-
 libjxl --disable-libbluray --disable-libgme --disable-libgsm --disable-
 libaribb24 --disable-mmal --disable-libmodplug --enable-libopus --disable-
 libvpl --disable-libilbc --disable-librtmp --disable-libssh --disable-
 libspeex --disable-libsrt --enable-librsvg --disable-ffnvcodec --enable-
 libvorbis --enable-libvpx --disable-libzvbi --disable-appkit --disable-
 libbs2b --disable-chromaprint --disable-cuda-llvm --disable-libflite
 --disable-fontconfig --disable-frei0r --disable-libfribidi --disable-
 libglslang --disable-ladspa --enable-lcms2 --disable-libass --disable-
 libplacebo --disable-libtesseract --disable-lv2 --disable-librubberband
 --disable-libshaderc --enable-libfreetype --enable-libharfbuzz --disable-
 libvidstab --disable-libvmaf --disable-libzmq --disable-libzimg --disable-
 libsoxr --enable-pthreads --disable-amf --disable-libvo-amrwbenc
 --disable-libkvazaar --disable-libaom --enable-libmp3lame --disable-
 libopenh264 --disable-librav1e --disable-libsnappy --disable-libsvtav1
 --enable-libtheora --disable-libtwolame --disable-libwebp --enable-libx264
 --disable-libx265 --enable-libxvid --disable-librav1e --disable-libzmq
 --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-neon
 --disable-vfp --disable-vfpv3 --disable-armv8 --disable-mipsdsp --disable-
 mipsdspr2 --disable-mipsfpu --disable-altivec --disable-vsx --disable-
 power8 --disable-amd3dnow --disable-amd3dnowext --disable-fma4 --disable-
 xop --disable-dotprod --disable-i8mm --enable-pic --disable-asm --cpu=host
 --disable-doc --disable-htmlpages --disable-manpages

 ffmpeg version 6.1
 built on x86_64-pc-linux-gnu for -m32/x86 multilib
 }}}

 The failure looks like:
 {{{
 x86_64-pc-linux-gnu-gcc -m32 -mfpmath=sse -I. -Isrc/ -D_ISOC99_SOURCE
 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112
 -D_XOPEN_SOURCE=600 -DPIC -DZLIB_CONST -DHAVE_AV_CONFIG_H
 -DBUILDING_avcodec -O3 -march=native -fno-semantic-interposition -pipe
 -Wa,-O2 -Wa,-mtune=znver2 -fcf-protection=none -fdiagnostics-color=always
 -fdiagnostics-urls=never -frecord-gcc-switches -ggdb3 -Werror=format-
 security -Wformat   -march=znver2 -std=c11 -fPIC    -pthread
 -I/usr/include/p11-kit-1    -I/usr/include/freetype2
 -I/usr/include/harfbuzz -I/usr/include/glib-2.0
 -I/usr/lib/glib-2.0/include -I/usr/include/harfbuzz
 -I/usr/include/freetype2 -I/usr/include/glib-2.0
 -I/usr/lib/glib-2.0/include -I/usr/include/openjpeg-2.5
 -I/usr/include/opus -I/usr/include/opus -D_REENTRANT
 -I/usr/include/librsvg-2.0 -I/usr/include/gdk-pixbuf-2.0
 -I/usr/include/cairo -I/usr/include/freetype2 -I/usr/include/glib-2.0
 -I/usr/lib/glib-2.0/include -I/usr/lib/libffi/include -pthread
 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libpng16
 -I/usr/include/harfbuzz -I/usr/include/pixman-1       -DX264_API_IMPORTS
 -Wdeclaration-after-statement -Wall -Wdisabled-optimization -Wpointer-
 arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -Wmissing-
 prototypes -Wstrict-prototypes -Wempty-body -Wno-parentheses -Wno-switch
 -Wno-format-zero-length -Wno-pointer-sign -Wno-unused-const-variable -Wno-
 bool-operation -Wno-char-subscripts -O3 -march=native -fno-semantic-
 interposition -pipe -Wa,-O2 -Wa,-mtune=znver2 -fcf-protection=none
 -fdiagnostics-color=always -fdiagnostics-urls=never -frecord-gcc-switches
 -ggdb3 -Werror=format-security -Wformat -fno-math-errno -fno-signed-zeros
 -fno-tree-vectorize -Werror=format-security -Werror=implicit-function-
 declaration -Werror=missing-prototypes -Werror=return-type -Werror=vla
 -Wformat -Wno-maybe-uninitialized -I/usr/include/SDL2 -D_REENTRANT   -MMD
 -MF libavcodec/vulkan_av1.d -MT libavcodec/vulkan_av1.o -c -o
 libavcodec/vulkan_av1.o src/libavcodec/vulkan_av1.c
 In file included from src/libavcodec/vulkan.h:22,
                  from src/libavcodec/vulkan_video.h:23,
                  from src/libavcodec/vulkan_decode.h:26,
                  from src/libavcodec/vulkan_av1.c:21:
 src/libavutil/vulkan.h:227:1: note: the alignment of ‘_Atomic long long
 int’ fields changed in GCC 11.1
   227 | } FFVkExecPool;
       | ^
 src/libavcodec/vulkan_av1.c: In function ‘vk_av1_create_params’:
 src/libavcodec/vulkan_av1.c:183:43: error: initialization of ‘long long
 unsigned int’ from ‘void *’ makes integer from pointer without a cast
 [-Wint-conversion]
   183 |         .videoSessionParametersTemplate = NULL,
       |                                           ^~~~
 src/libavcodec/vulkan_av1.c:183:43: note: (near initialization for
 ‘(anonymous).videoSessionParametersTemplate’)
 make: *** [/var/tmp/portage/media-
 video/ffmpeg-6.1/work/ffmpeg-6.1/ffbuild/common.mak:81:
 libavcodec/vulkan_av1.o] Error 1
 make: *** Waiting for unfinished jobs....
 }}}

 Originally reported downstream in Gentoo at
 https://bugs.gentoo.org/919067.

 This can be emulated with -Werror=incompatible-pointer-types
 -Werror=implicit -Werror=int-conversion on an older GCC (<14) or Clang.
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10724>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list