Bug#1102068: libfabric: FTBFS on 32-bit arches: ofi_cma.h: error: passing argument 2 of 'ofi_consume_iov' from incompatible pointer type
On Fri, Apr 04, 2025 at 03:07:42PM +0200, Drew Parsons wrote:
> libfabric is failing to build on 32-bit architectures. The failure is
> blocking migration to testing, and will therefore block mpich migration.
>
> e.g. armhf https://buildd.debian.org/status/fetch.php?pkg=libfabric&arch=armhf&ver=2.0.0-4&stamp=1742062166&raw=0
>
> /bin/bash ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./include -D_GNU_SOURCE -D__USE_XOPEN2K8 -DSYSCONFDIR=\"/etc\" -DRDMADIR=\"@rdmadir@\" -DPROVDLDIR=\"/usr/lib/arm-linux-gnueabihf/libfabric\" -I./prov/sockets/include -I./prov/sockets -I./prov/lpp/include -I./prov/lpp -I./prov/verbs/include -I./prov/verbs/include/linux -I./prov/verbs/src/ep_rdm -I./prov/verbs/src/ep_dgram -I./prov/lnx/include -I./prov/hook/include -I./prov/hook/perf/include -I./prov/hook/hook_debug/include -I./prov/hook/hook_hmem/include -I./prov/hook/dmabuf_peer_mem/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -O2 -DNDEBUG -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libfabric-2.0.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -c -o prov/hook/src/src_libfabric_la-hook.lo `test -f 'prov/hook/src/hook.c' || echo './'`prov/hook/src/hook.c
> In file included from ./include/ofi_util.h:59,
> from src/fabric.c:47:
> ./include/ofi_mr.h: In function 'ofi_mr_get_iov_from_dmabuf':
> ./include/ofi_mr.h:345:35: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
> 345 | iov[i].iov_base = (void *) (
> | ^
> In file included from ./include/ofi_util.h:61:
> ./include/ofi_mem.h: In function 'smr_freestack_init':
> ./include/ofi_mem.h:281:53: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
> 281 | next_aligned_addr = ofi_get_aligned_size((( (uint64_t) fs) +
> | ^
> ./include/ofi_mem.h:283:54: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
> 283 | fs->entry_base_offset = next_aligned_addr - ((uint64_t) fs);
> | ^
> In file included from ./include/ofi_shm_p2p.h:37,
> from src/fabric.c:54:
> ./include/ofi_cma.h: In function 'cma_copy':
> ./include/ofi_cma.h:67:40: error: passing argument 2 of 'ofi_consume_iov' from incompatible pointer type [-Wincompatible-pointer-types]
> 67 | ofi_consume_iov(local, &local_cnt, (size_t) ret);
> | ^~~~~~~~~~
> | |
> | long unsigned int *
> In file included from ./include/ofi_cma.h:41:
> ./include/ofi_iov.h:204:51: note: expected 'size_t *' {aka 'unsigned int *'} but argument is of type 'long unsigned int *'
>
>
> This might be a gcc-15 error, which tightened type checking.
>
> Upstream has released v2.1.0 with gcc-15 fixes, though I don't know
> if it fixes this 32-bit build error.
This is still a problem on armel, armhf, i386.
Will something be done about it?
Best,
Chris
Reply to: