[openib-general] ofed 1.2 - compilation erros on ppc64 and ia64

Michael S. Tsirkin mst at mellanox.co.il
Mon Dec 25 15:46:50 PST 2006


> > Subject: Re: ofed 1.2 - compilation erros on ppc64 and ia64
> > 
> > Michael S. Tsirkin wrote:
> > 
> > 
> >>>>Quoting r. Yosef Etigin <yosefe at voltaire.com>:
> >>>>Subject: ofed 1.2 - compilation erros on ppc64 and ia64
> >>>>   
> >>>>
> >>>
> >>>Which distro are you testing on?
> >>>
> >>> 
> >>>
> >>
> >>I am testing on sles10, both ia64 and ppc64.
> >>
> >>
> >>>>Hello,
> >>>>I've been testing ofed 1.2 build from 
> >>>>http://staging.openfabrics.org/builds/ 
> >>>><http://staging.openfabrics.org/build/>, (latest.tgz versions both user 
> >>>>and kernel) and got compilation erros on: ia64, ppc64:
> >>>>
> >>>>*ppc64:*
> >>>>
> >>>>   make -w -C ip ip
> >>>>   make[2]: Entering directory
> >>>>   `/tmp/openib_gen2/userspace/src/userspace/ipoibtools/iproute2/ip'
> >>>>   [ ... omitted text ... ]
> >>>>   gcc -D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -I../include
> >>>>   -DRESOLVE_HOSTNAMES -c -o xfrm_monitor.o xfrm_monitor.c
> >>>>   gcc -g -O2 -m64 -L/usr/lib64 ip.o ipaddress.o iproute.o iprule.o
> >>>>   rtm_map.o iptunnel.o ipneigh.o ipntable.o iplink.o ipmaddr.o
> >>>>   ipmonitor.o ipmroute.o ipprefix.o ipxfrm.o xfrm_state.o
> >>>>   xfrm_policy.o xfrm_monitor.o ../lib/libnetlink.a ../lib/libutil.a
> >>>>   -lresolv -L../lib -lnetlink -lutil -o ip
> >>>>   /usr/bin/ld: skipping incompatible ../lib/libnetlink.a when
> >>>>   searching for -lnetlink
> >>>>   /usr/bin/ld: skipping incompatible
> >>>>   /usr/lib/gcc/powerpc64-suse-linux/4.1.0/../../../libnetlink.a when
> >>>>   searching for -lnetlink
> >>>>   /usr/bin/ld: skipping incompatible /usr/lib/libnetlink.a when
> >>>>   searching for -lnetlink
> >>>>   /usr/bin/ld: cannot find -lnetlink
> >>>>   collect2: ld returned 1 exit status
> >>>>   make[2]: *** [ip] Error 1
> >>>>
> >>>>possible cause: the src/userspace/ipoibtools/iproute2/Makefile overrides 
> >>>>CFLAGS (= instead of +=)
> >>>>   
> >>>>
> >>>
> >>>Isn't this makefile part of iproute2?
> >>>Can you build iproute on this platform?
> >>> 
> >>>
> >>
> >>This makefile is indeed of iproute,
> >>but it seems to make 32-bit object files for `iproute' during compilation
> >>and therefore fails to find 64-bit during linkage of `ip'.
> > 
> > 
> > Will installing the 32 bit version of the library help?
> > 
> >
> 
> I dont think so.. the issue arised during compilation, since `iproute' 
> was inconsinsten in its use of -m64:
> The iproute Makefile overrides any `CFLAGS' it might get from top-level, 
> thus throwing `-m64' away, while LDFLAGS are not overriden.
> Therefore, the compilation is done in 32bit while the linkage in 64bit

Probably the easies thing is to fix iproute. Patch?

> >>>	
> >>> 
> >>>
> >>>
> >>>>*ia64:*
> >>>>
> >>>>   make -f /usr/src/linux-2.6.16.21-0.8/scripts/Makefile.build
> >>>>   obj=/tmp/openib_gen2/kernel/drivers/infiniband/core
> >>>>   gcc [ ... omitted text ... ] -c -o
> >>>>   /tmp/openib_gen2/kernel/drivers/infiniband/core/.tmp_addr.o
> >>>>   /tmp/openib_gen2/kernel/drivers/infiniband/core/addr.c
> >>>>   In file included from /tmp/openib_gen2/kernel/include/rdma/ib_addr.h:37,
> >>>>   from /tmp/openib_gen2/kernel/drivers/infiniband/core/addr.c:38:
> >>>>   /tmp/openib_gen2/kernel/include/rdma/ib_verbs.h: In function
> >>>>   ‘ib_sg_dma_address’:
> >>>>   /tmp/openib_gen2/kernel/include/rdma/ib_verbs.h:1577: error:
> >>>>   implicit declaration of function ‘sg_dma_address’
> >>>>   /tmp/openib_gen2/kernel/include/rdma/ib_verbs.h: In function
> >>>>   ‘ib_sg_dma_len’:
> >>>>   /tmp/openib_gen2/kernel/include/rdma/ib_verbs.h:1590: error:
> >>>>   implicit declaration of function ‘sg_dma_len’
> >>>>   /tmp/openib_gen2/kernel/drivers/infiniband/core/addr.c: At top level:
> >>>>   /tmp/openib_gen2/kernel/drivers/infiniband/core/addr.c:61: warning:
> >>>>   initialization from incompatible pointer type
> >>>>   [ ... omitted text ... ]
> >>>>   make: *** [kernel] Error 2
> >>>>   
> >>>>
> >>>
> >>>Probably a distro-specific backport problem - check how come sg_dma_len is not defined.
> >>>I see this on upstream 2.6.16
> >>>	asm-powerpc/scatterlist.h:#define sg_dma_len(sg) ((sg)->dma_length)
> >>> 
> >>>
> >>
> >>Im running this of ia64, `sg_dma_len' is not defined there, nor anywhere 
> >>else in this file, but in:
> >>        ./asm-ia64/pci.h:82:#define sg_dma_len(sg)    ((sg)->dma_length)
> >>
> > 
> > 
> > Isee, its fixed on 2.6.20.
> > Need to do something about it in the backport then.
> > 
> > I wonder whether we can just put
> > #ifdef __ia64__
> > #define sg_dma_len(sg)          ((sg)->dma_length)
> > #endif
> > 
> > in kernel_addons/backports/2.6.16/include/asm/scatterlist.h
> > 
> > Also need tofind out in which kernel this was fixed.
> > 
> 
> Looks like in all kernels up to 2.6.20 it was in `pci.h' so need to 
> backtort to.. all previous versions

Right. Try sticking this in kernel_addons/backports/2.6.20 and
copying it over.

-- 
MST




More information about the general mailing list