[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