GCC (and the C and C++ standard) have been removing support for older or dubious things in the languages over the years. Unfortunately, we have code both in the build environment and in ThinLinc that relies on that support. We need to upgrade and fix things to make sure we can use the newer compilers.
One issue is that our build of PulseAudio has been broken for quite some time: > modules/alsa/alsa-source.c: In function 'pa_alsa_source_new': > modules/alsa/alsa-source.c:1864:17: error: implicit declaration of function 'snd_use_case_set' [-Wimplicit-function-declaration] > 1864 | if (snd_use_case_set(u->ucm_context->ucm->ucm_mgr, "_enamod", mod_name) < 0) > | ^~~~~~~~~~~~~~~~ Earlier versions of gcc would let this slide, but not the latest gcc. This has been fixed in upstream PulseAudio, so an upgrade would resolve it. However, we are far behind upstream. An upgrade would be risky and probably too big in scope for this bug. Backporting a fix seems more reasonable in this case.
Everything now builds nicely with both the old and new gcc. Most of the fixes were trivial, or for very general packages. There were a few specific functional areas that were affected and regression tested, though: * PDF version of the TAG * Local drive redirection on Windows * Windows installer * Translations on Windows and macOS > MUST: > > * Everything in cenbuild should build correctly using the latest gcc Yup > * Everything in ThinLinc should build correctly using the latest gcc Yup, including a --no-repo build. > SHOULD: > > * Broken packages should be upgraded rather than patched to fix issues As much as possible. Some packages didn't have a later version, and in some cases upgrading was a very large amount of work. Primarily PulseAudio and librsvg were held back.
The gcc upgrade exposed some pointer bugs we need to fix. See bug 8361, comment 35.
PulseAudio now works fine on Win64. Checked the build logs for the same warning about pointer casts in other components, but could not find anything. Hopefully, it was the only instance.