Opened 5 months ago

Closed 3 months ago

#10724 closed defect (fixed)

Build failure with stricter C compilers (e.g. GCC 14)

Reported by: Sam James Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

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.

Change History (2)

Note: See TracTickets for help on using tickets.