Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 9 Apr 2016 18:50:32 -0700
From:      Mark Millard <markmi@dsl-only.net>
To:        FreeBSD Toolchain <freebsd-toolchain@freebsd.org>, FreeBSD Current <freebsd-current@freebsd.org>
Cc:        freebsd-arm <freebsd-arm@freebsd.org>, FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>, Bryan Drewery <bdrewery@FreeBSD.org>, Warner Losh <imp@bsdimp.com>, emaste@freebsd.org
Subject:   11.0-CURRENT buildworld lib32/libsoft failures: ioctl.c and sys/dev/ciss/cissio.h and __amd64__ vs. __amd64 example; LIBCOMPATWMAKEFLAGS and CP="${XCPP}"
Message-ID:  <36DB1DE3-B69D-4D65-9BB3-D6619DE4EC38@dsl-only.net>

next in thread | raw e-mail | index | archive | help
I'm currently getting errors for CCIS_PASSTHRU32 and others in ioctl.c =
not being defined while an amd64 context updates itself from -r297514 to =
-r297769 via buildworld. The problem is during lib32's build activity. A =
grep of the log shows:

> ioctl.c:472:18: error: use of undeclared identifier 'CCISS_PASSTHRU32'
> ioctl.c:1186:18: error: use of undeclared identifier =
'IPMICTL_RECEIVE_MSG_32'
> ioctl.c:1190:18: error: use of undeclared identifier =
'IPMICTL_RECEIVE_MSG_TRUNC_32'
> ioctl.c:1196:18: error: use of undeclared identifier =
'IPMICTL_SEND_COMMAND_32'
> ioctl.c:1394:18: error: use of undeclared identifier =
'MPTIO_RAID_ACTION32'
> ioctl.c:1398:18: error: use of undeclared identifier =
'MPTIO_READ_CFG_HEADER32'
> ioctl.c:1402:18: error: use of undeclared identifier =
'MPTIO_READ_CFG_PAGE32'
> ioctl.c:1406:18: error: use of undeclared identifier =
'MPTIO_READ_EXT_CFG_HEADER32'
> ioctl.c:1410:18: error: use of undeclared identifier =
'MPTIO_READ_EXT_CFG_PAGE32'
> ioctl.c:1414:18: error: use of undeclared identifier =
'MPTIO_WRITE_CFG_PAGE32'


sys/dev/ciss/cissio.h is an example of a more general issue here for =
lib32 (for amd64 not cross built) and libsoft (for amd64 cross building =
for a rpi2 as an example).

sys/dev/ciss/cissio.h has code such as:

> #ifdef __amd64__
> typedef struct {
>     LUNAddr_struct      LUN_info;       /* 8 */
>     RequestBlock_struct Request;        /* 20 */
>     ErrorInfo_struct    error_info;     /* 48 */
>     u_int16_t           buf_size;       /* 2 */
>     u_int32_t           buf;            /* 4 */
> } __packed IOCTL_Command_struct32;
> #endif
> . . .
> #ifdef __amd64
> #define CCISS_PASSTHRU32        _IOWR ('C', 210, =
IOCTL_Command_struct32)
> #endif

Note the __ suffix vs. not after the "amd64". There can be headers =
around that produce such variations of macros. arm has one of those that =
makes macros that track characteristics of specific types of arm =
variants, for example.

The details of what happen for this sort of thing can depend on =
Makefile.libcompat's:

> LIBCOMPATWMAKEFLAGS+=3D CC=3D"${XCC} ${LIBCOMPATCFLAGS}" \
>                 CXX=3D"${XCXX} ${LIBCOMPATCFLAGS} =
${LIBCOMPATCXXFLAGS}" \
>                 DESTDIR=3D${LIBCOMPATTMP} \
>                 -DNO_CPU_CFLAGS \
>                 MK_CTF=3Dno \
>                 -DNO_LINT \
>                 MK_TESTS=3Dno

vs. also having CPP=3D"${XCPP}" listed as can be required for cross =
builds (such amd64 building for an rpi2 [libsoft] or powerpc64 [lib32]):

> LIBCOMPATWMAKEFLAGS+=3D CC=3D"${XCC} ${LIBCOMPATCFLAGS}" \
>                 CXX=3D"${XCXX} ${LIBCOMPATCFLAGS} =
${LIBCOMPATCXXFLAGS}" \
>                 CPP=3D"${XCPP}" \
>                 DESTDIR=3D${LIBCOMPATTMP} \
>                 -DNO_CPU_CFLAGS \
>                 MK_CTF=3Dno \
>                 -DNO_LINT \
>                 MK_TESTS=3Dno


Because of previously needing it for cross compiles I currently have the =
CPP=3D"${XCPP}" in place in my context: an arm header was processed by =
the amd64 preprocessor and the header could not detect its context =
correctly:

> --- all_subdir_lib/libsysdecode ---
> In file included from <stdin>:17:
> In file included from =
/usr/obj/clang/arm.armv6/usr/src/libsoft/usr/include/dev/nvme/nvme.h:36:
> In file included from =
/usr/obj/clang/arm.armv6/usr/src/libsoft/usr/include/sys/param.h:135:
> In file included from =
/usr/obj/clang/arm.armv6/usr/src/libsoft/usr/include/machine/param.h:49:
> =
/usr/obj/clang/arm.armv6/usr/src/libsoft/usr/include/machine/acle-compat.h=
:182:4: error: Unable to determine architecture version.
> #  error Unable to determine architecture version.
> ^


Is this area broken overall? Or is there something that I need to do =
differently in order to have amd64 rebuild itself (not a cross build) =
but also to also have amd64 do cross builds (such as arm and its =
libsoft)?


=3D=3D=3D
Mark Millard
markmi at dsl-only.net




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?36DB1DE3-B69D-4D65-9BB3-D6619DE4EC38>