[Bug 271537] net/libfabric: fix build with clang 16 on i386

From: <bugzilla-noreply_at_freebsd.org>
Date: Sat, 20 May 2023 18:30:58 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271537

            Bug ID: 271537
           Summary: net/libfabric: fix build with clang 16 on i386
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: yuri@freebsd.org
          Reporter: dim@FreeBSD.org
          Assignee: yuri@freebsd.org
             Flags: maintainer-feedback?(yuri@freebsd.org)

Clang 16 has a new error about incompatible function types, which shows
up when building net/libfabric (on i386):

  prov/hook/src/hook_domain.c:124:12: error: incompatible function pointer
types passing 'ssize_t (struct fid_ep *, size_t)' (aka 'int (struct fid_ep *,
unsigned int)') to parameter of type 'ssize_t (*)(struct fid_ep *, uint64_t)'
(aka 'int (*)(struct fid_ep *, unsigned long long)')
[-Wincompatible-function-pointer-types]
                                                       hook_credit_handler);
                                                       ^~~~~~~~~~~~~~~~~~~
  prov/hook/src/hook_domain.c:150:17: error: incompatible function pointer
types initializing 'void (*)(struct fid_ep *, uint64_t)' (aka 'void (*)(struct
fid_ep *, unsigned long long)') with an expression of type 'void (struct fid_ep
*, size_t)' (aka 'void (struct fid_ep *, unsigned int)')
[-Wincompatible-function-pointer-types]
          .add_credits = hook_add_credits,
                         ^~~~~~~~~~~~~~~~
  prov/hook/src/hook_domain.c:152:22: error: incompatible function pointer
types initializing 'void (*)(struct fid_domain *, ssize_t (*)(struct fid_ep *,
uint64_t))' (aka 'void (*)(struct fid_domain *, int (*)(struct fid_ep *,
unsigned long long))') with an expression of type 'void (struct fid_domain *,
ssize_t (*)(struct fid_ep *, size_t))' (aka 'void (struct fid_domain *, int
(*)(struct fid_ep *, unsigned int))') [-Wincompatible-function-pointer-types]
          .set_send_handler = hook_set_send_handler,
                              ^~~~~~~~~~~~~~~~~~~~~

The problem is that the 'credits' parameter used in these functions is
size_t in some cases, but uint64_t in other cases. On LP64 architectures
this does not result in any errors, but on e.g. i386 you get the above.

Make the 'credits' parameter uint64_t everywhere to fix this issue.

-- 
You are receiving this mail because:
You are the assignee for the bug.