Bug 272209

Summary: x11/xdm: error: incompatible function pointer types (LLVM16)
Product: Ports & Packages Reporter: O. Hartmann <ohartmann>
Component: Individual Port(s)Assignee: freebsd-x11 (Nobody) <x11>
Status: Closed FIXED    
Severity: Affects Many People CC: dim, manu, ohartmann, saper
Priority: --- Flags: manu: maintainer-feedback+
Version: Latest   
Hardware: Any   
OS: Any   
Bug Depends on:    
Bug Blocks: 271047    
Attachments:
Description Flags
Fix xdm's idea of setgrent none

Description O. Hartmann 2023-06-25 17:37:43 UTC
Host: FreeBSD 14.0-CURRENT #2 main-n263789-f190c36b5d45: Sun Jun 25 14:46:00 CEST 2023 amd64

Compiling x11/xdm fails with the following error:

[...]
greet.c:451:20: error: incompatible function pointer types assigning to 'void (*)(void)' from 'int (*)(void)' [-Wincompatible-function-pointer-types]
    __xdm_setgrent = dlfuncs->_setgrent;
                   ^ ~~~~~~~~~~~~~~~~~~
1 error generated.
*** Error code 1
Comment 1 Dimitry Andric freebsd_committer freebsd_triage 2023-06-25 18:32:36 UTC
Created attachment 242994 [details]
Fix xdm's idea of setgrent
Comment 2 Marcin Cieślak 2023-06-25 18:33:43 UTC
Maybe we should try to add a configure test and upstream it...
Comment 3 Dimitry Andric freebsd_committer freebsd_triage 2023-06-25 18:36:37 UTC
(In reply to Marcin Cieślak from comment #2)
The patch I added can be upstreamed. No supported version of FreeBSD has the old setgrent prototype anymore.
Comment 4 commit-hook freebsd_committer freebsd_triage 2023-06-28 17:26:50 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ffa7085ab4121e92eb61c4e1f6a7138e7ea43d6a

commit ffa7085ab4121e92eb61c4e1f6a7138e7ea43d6a
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-06-25 18:26:57 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-06-28 17:25:30 +0000

    x11/xdm: fix build with clang 16

    Clang 16 has a new error about incompatible function types, which shows
    up when x11/xdm:

      greet.c:451:20: error: incompatible function pointer types assigning to 'void (*)(void)' from 'int (*)(void)' [-Wincompatible-function-pointer-types]
          __xdm_setgrent = dlfuncs->_setgrent;
                         ^ ~~~~~~~~~~~~~~~~~~

    This is because it assumes setgrent(3) returns int, which it has not
    done since a very long time.

    Reported by:    O. Hartmann <ohartmann@walstatt.org>
    PR:             272209
    MFH:            2023Q2

 x11/xdm/Makefile                          |  1 +
 x11/xdm/files/patch-include_greet.h (new) | 11 +++++++++++
 2 files changed, 12 insertions(+)