Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.4.0: build failure with GCC 14 #9986

Closed
thesamesam opened this issue Mar 16, 2024 · 1 comment · Fixed by #9992
Closed

3.4.0: build failure with GCC 14 #9986

thesamesam opened this issue Mar 16, 2024 · 1 comment · Fixed by #9992

Comments

@thesamesam
Copy link

Describe the bug

freerdp-3.4.0 fails to build with GCC 14.

FAILED: winpr/libwinpr/CMakeFiles/winpr.dir/clipboard/synthetic_file.c.o
/usr/bin/x86_64-pc-linux-gnu-gcc -DFREERDP_EXPORTS -DUSE_EXECINFO -DUSE_UNWIND -DWINPR_CRITICAL_SECTION_DISABLE_SPINCOUNT -DWINPR_EXPORTS -DWITH_FREERDP_DEPRECATED_COMMANDLINE -DWITH_OP
_EMULATE -DWITH_SMARTCARD_PCSC -DWITH_VERBOSE_WINPR_ASSERT -D_FILE_OFFSET_BITS=64 -Dwinpr_EXPORTS -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/winpr/include -I/var/tmp/p
winpr/include -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/winpr/libwinpr/utils/.  -O2 -pipe -march=native -fdiagnostics-color=always -frecord-gcc-switches -ggdb3 -Wall
-after-statement -fPIC -Wall -fvisibility=hidden -Wimplicit-function-declaration -Wredundant-decls -g -fno-omit-frame-pointer -DWINPR_DLL -std=gnu11 -fPIC -fdiagnostics-color=always -MD
hetic_file.c.o -MF winpr/libwinpr/CMakeFiles/winpr.dir/clipboard/synthetic_file.c.o.d -o winpr/libwinpr/CMakeFiles/winpr.dir/clipboard/synthetic_file.c.o -c /var/tmp/portage/net-misc/fr
/synthetic_file.c
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/winpr/libwinpr/clipboard/synthetic_file.c: In function ‘add_directory_contents_to_list’:
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/winpr/libwinpr/clipboard/synthetic_file.c:279:33: error: initialization of ‘const WCHAR *’ {aka ‘const short unsigned int *’}
-pointer-types]
  279 |         const WCHAR* wildcard = "/\0*\0\0\0";
      |                                 ^~~~~~~~~~~~
FAILED: libfreerdp/CMakeFiles/freerdp.dir/codec/rfx.c.o
/usr/bin/x86_64-pc-linux-gnu-gcc -DEXT_PATH=\"/usr/lib64/freerdp3/extensions\" -DFREERDP_EXPORTS -DWITH_FREERDP_DEPRECATED_COMMANDLINE -DWITH_OPENSSL -DWITH_SMARTCARD_EMULATE -DWITH_VER
ILE -D_FILE_OFFSET_BITS=64 -Dfreerdp_EXPORTS -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/winpr/include -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0_buil
.0/work/freerdp-3.4.0_build -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0_build/include -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/include  -O2 -pipe -m
tches -ggdb3 -Wall -Wpedantic -Wno-padded -Wno-cast-align -Wno-declaration-after-statement -fPIC -Wall -fvisibility=hidden -Wimplicit-function-declaration -Wredundant-decls -g -fno-omit
ays -MD -MT libfreerdp/CMakeFiles/freerdp.dir/codec/rfx.c.o -MF libfreerdp/CMakeFiles/freerdp.dir/codec/rfx.c.o.d -o libfreerdp/CMakeFiles/freerdp.dir/codec/rfx.c.o -c /var/tmp/portage/
dec/rfx.c
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/libfreerdp/codec/rfx.c: In function ‘rfx_message_get_tiles’:
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/libfreerdp/codec/rfx.c:1371:23: error: returning ‘RFX_TILE **’ from a function with incompatible return type ‘const RFX_TILE *
 1371 |         return message->tiles;
      |                ~~~~~~~^~~~~~~
FAILED: client/common/CMakeFiles/freerdp-client.dir/file.c.o
/usr/bin/x86_64-pc-linux-gnu-gcc -DFREERDP_EXPORTS -DWITH_FREERDP_DEPRECATED_COMMANDLINE -DWITH_FUSE -DWITH_OPENSSL -DWITH_SMARTCARD_EMULATE -DWITH_VERBOSE_WINPR_ASSERT -D_FILE_OFFSET_B
misc/freerdp-3.4.0/work/freerdp-3.4.0/winpr/include -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0_build/winpr/include -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freer
0/work/freerdp-3.4.0_build/include -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/include -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0_build/channels/clien
p-3.4.0/channels/client -I/usr/include/fuse3  -O2 -pipe -march=native -fdiagnostics-color=always -frecord-gcc-switches -ggdb3 -Wall -Wpedantic -Wno-padded -Wno-cast-align -Wno-declarati
plicit-function-declaration -Wredundant-decls -g -fno-omit-frame-pointer -std=gnu11 -fPIC -fdiagnostics-color=always -MD -MT client/common/CMakeFiles/freerdp-client.dir/file.c.o -MF cli
client/common/CMakeFiles/freerdp-client.dir/file.c.o -c /var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/client/common/file.c
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/client/common/file.c: In function ‘freerdp_client_populate_settings_from_rdp_file’:
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/client/common/file.c:2303:85: error: passing argument 3 of ‘freerdp_client_add_dynamic_channel’ from incompatible pointer type
 2303 |                 const BOOL rc = freerdp_client_add_dynamic_channel(settings, count, str);
      |                                                                                     ^~~
      |                                                                                     |
      |                                                                                     char **
In file included from /var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/client/common/file.c:31:
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/include/freerdp/client/cmdline.h:96:74: note: expected ‘const char **’ but argument is of type ‘char **’
   96 |                                                             const char** params);
      |                                                             ~~~~~~~~~~~~~^~~~~~
FAILED: winpr/libwinpr/CMakeFiles/winpr.dir/smartcard/smartcard_pcsc.c.o
/usr/bin/x86_64-pc-linux-gnu-gcc -DFREERDP_EXPORTS -DUSE_EXECINFO -DUSE_UNWIND -DWINPR_CRITICAL_SECTION_DISABLE_SPINCOUNT -DWINPR_EXPORTS -DWITH_FREERDP_DEPRECATED_COMMANDLINE -DWITH_OP
_EMULATE -DWITH_SMARTCARD_PCSC -DWITH_VERBOSE_WINPR_ASSERT -D_FILE_OFFSET_BITS=64 -Dwinpr_EXPORTS -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/winpr/include -I/var/tmp/p
winpr/include -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/winpr/libwinpr/utils/.  -O2 -pipe -march=native -fdiagnostics-color=always -frecord-gcc-switches -ggdb3 -Wall
-after-statement -fPIC -Wall -fvisibility=hidden -Wimplicit-function-declaration -Wredundant-decls -g -fno-omit-frame-pointer -DWINPR_DLL -std=gnu11 -fPIC -fdiagnostics-color=always -MD
tcard_pcsc.c.o -MF winpr/libwinpr/CMakeFiles/winpr.dir/smartcard/smartcard_pcsc.c.o.d -o winpr/libwinpr/CMakeFiles/winpr.dir/smartcard/smartcard_pcsc.c.o -c /var/tmp/portage/net-misc/fr
/smartcard_pcsc.c
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/winpr/libwinpr/smartcard/smartcard_pcsc.c: In function ‘PCSC_SCardListReadersW’:
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/winpr/libwinpr/smartcard/smartcard_pcsc.c:996:66: error: passing argument 3 of ‘PCSC_SCardListReaders_Internal’ from incompati
  996 |             PCSC_SCardListReaders_Internal(hContext, mszGroupsA, (LPSTR*)&mszReadersA, pcchReaders);
      |                                                                  ^~~~~~~~~~~~~~~~~~~~
      |                                                                  |
      |                                                                  CHAR ** {aka char **}
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/winpr/libwinpr/smartcard/smartcard_pcsc.c:875:57: note: expected ‘LPSTR’ {aka ‘char *’} but argument is of type ‘CHAR **’ {aka
  875 |                                                   LPSTR mszReaders, LPDWORD pcchReaders)
      |                                                   ~~~~~~^~~~~~~~~~
FAILED: libfreerdp/CMakeFiles/freerdp.dir/core/license.c.o
/usr/bin/x86_64-pc-linux-gnu-gcc -DEXT_PATH=\"/usr/lib64/freerdp3/extensions\" -DFREERDP_EXPORTS -DWITH_FREERDP_DEPRECATED_COMMANDLINE -DWITH_OPENSSL -DWITH_SMARTCARD_EMULATE -DWITH_VER
ILE -D_FILE_OFFSET_BITS=64 -Dfreerdp_EXPORTS -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/winpr/include -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0_buil
.0/work/freerdp-3.4.0_build -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0_build/include -I/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/include  -O2 -pipe -m
tches -ggdb3 -Wall -Wpedantic -Wno-padded -Wno-cast-align -Wno-declaration-after-statement -fPIC -Wall -fvisibility=hidden -Wimplicit-function-declaration -Wredundant-decls -g -fno-omit
ays -MD -MT libfreerdp/CMakeFiles/freerdp.dir/core/license.c.o -MF libfreerdp/CMakeFiles/freerdp.dir/core/license.c.o.d -o libfreerdp/CMakeFiles/freerdp.dir/core/license.c.o -c /var/tmp
reerdp/core/license.c
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/libfreerdp/core/license.c: In function ‘license_read_platform_challenge_packet’:
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/libfreerdp/core/license.c:1956:16: warning: variable ‘ConnectFlags’ set but not used [-Wunused-but-set-variable]
 1956 |         UINT32 ConnectFlags = 0;
      |                ^~~~~~~~~~~~
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/libfreerdp/core/license.c: In function ‘license_set_string’:
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/libfreerdp/core/license.c:2813:14: error: assignment to ‘WCHAR *’ {aka ‘short unsigned int *’} from incompatible pointer type
r-types]
 2813 |         *dst = (BYTE*)ConvertUtf8ToWCharAlloc(value, &len);
      |              ^
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/libfreerdp/core/license.c: In function ‘license_server_configure’:
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/libfreerdp/core/license.c:2855:63: error: passing argument 3 of ‘license_set_string’ from incompatible pointer type [-Wincompa
 2855 |         if (!license_set_string("pbCompanyName", CompanyName, &license->ProductInfo->pbCompanyName,
      |                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                               |
      |                                                               BYTE ** {aka unsigned char **}
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/libfreerdp/core/license.c:2805:77: note: expected ‘WCHAR **’ {aka ‘short unsigned int **’} but argument is of type ‘BYTE **’ {
 2805 | static BOOL license_set_string(const char* what, const char* value, WCHAR** dst, UINT32* dstLen)
      |                                                                     ~~~~~~~~^~~
/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0/libfreerdp/core/license.c:2859:61: error: passing argument 3 of ‘license_set_string’ from incompatible pointer type [-Wincompa
 2859 |         if (!license_set_string("pbProductId", ProductName, &license->ProductInfo->pbProductId,
      |                                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                             |
      |                                                             BYTE ** {aka unsigned char **}

To Reproduce
Steps to reproduce the behavior:

  1. Build with GCC 14, or build with CFLAGS="... -Werror=int-conversion -Werror=implicit-int -Werror=implicit-function-declaration -Werror=incompatible-pointer-types" (roughly).

Expected behavior

Successful build.

Application details

  • FreeRDP version (xfreerdp /version): 3.4.0
  • If you built it yourself add some notes which tag/commit/branch you have used, also your cmake parameters and
    compiler can help: cmake -C /var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0_build/gentoo_common_config.cmake -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -Wno-dev -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF -DBUILD_TESTING=OFF -DCHANNEL_URBDRC=ON -DWITH_AAD=OFF -DWITH_ALSA=ON -DWITH_CCACHE=OFF -DWITH_CLIENT_SDL=ON -DWITH_CUPS=OFF -DWITH_DEBUG_ALL=OFF -DWITH_MANPAGES=ON -DWITH_FFMPEG=ON -DWITH_FREERDP_DEPRECATED_COMMANDLINE=ON -DWITH_SWSCALE=ON -DWITH_CAIRO=OFF -DWITH_DSP_FFMPEG=ON -DWITH_FUSE=ON -DWITH_GSTREAMER_1_0=OFF -DWITH_JPEG=ON -DWITH_KRB5=OFF -DWITH_NEON=OFF -DWITH_OPENH264=OFF -DWITH_OSS=OFF -DWITH_PCSC=ON -DWITH_PKCS11=ON -DWITH_PULSE=ON -DWITH_SERVER=OFF -DWITH_LIBSYSTEMD=OFF -DWITH_UNICODE_BUILTIN=OFF -DWITH_VALGRIND_MEMCHECK=OFF -DWITH_X11=ON -DWITH_XINERAMA=OFF -DWITH_XV=ON -DWITH_WAYLAND=ON -DWITH_WEBVIEW=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE=/var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0_build/gentoo_toolchain.cmake /var/tmp/portage/net-misc/freerdp-3.4.0/work/freerdp-3.4.0 with gcc version 14.0.1 20240310 (experimental).

Environment (please complete the following information):

  • OS: Linux
  • Version/Distribution: Gentoo
  • Architecture: amd64

Additional context

GCC 14 enables various warnings-as-errors by default. See https://wiki.gentoo.org/wiki/Modern_C_porting#What_changed.3F.

@akallabeth akallabeth linked a pull request Mar 18, 2024 that will close this issue
@akallabeth akallabeth added this to the next-3.0 milestone Mar 18, 2024
@thesamesam
Copy link
Author

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants