Ralf S. Engelschall wrote:
On Wed, Nov 22, 2006, Doug Summers wrote:

Ralf S. Engelschall wrote:
On Tue, Nov 21, 2006, Doug Summers wrote:

For whatever reason I can't get tar-1.16 or openpkg (anything later than
10.18) to build on AIX 5.2 or newer.

Here are the errors (identical for both builds):
In file included from ./stdint.h:55,
                from ///usr/include/inttypes.h:51,
                from ./inttypes.h:24,
                from xstrtol.h:25,
                from xstrtoumax.c:23:
/opt/openpkg/bin/../lib/gcc/powerpc-ibm-aix5.2.0.0/4.1.1/include/sys/types.h:188:
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'daddr_t'
/opt/openpkg/bin/../lib/gcc/powerpc-ibm-aix5.2.0.0/4.1.1/include/sys/types.h:194:
[...]
The include file which breaks is part of GCC's local overrides/variants
of <sys/types.h>. The reason for such a break usually is because a
dependent header file has to be included first. With the available
information I cannot identify how to actually solve the problem,
so you have to dig deeper yourself or at least show me the context
(or even the while file) around the lines 188 and 194 in the
/opt/openpkg/bin/../lib/gcc/powerpc-ibm-aix5.2.0.0/4.1.1/include/sys/typ
es.h files. Perhaps this way we see what the problem is.

Here's the types.h section from an AIX 5.2 machine:
/*
 * standard AIX type definitions
 */
typedef int             level_t;
typedef __long64_t      daddr_t;        /* disk address */
typedef int             daddr32_t;      /* size invariant 32-bit disk
address */
#if defined(__64BIT__) || defined(_LONG_LONG)
typedef int64_t         daddr64_t;      /* size invariant 64-bit disk
address */
#endif
typedef char *          caddr_t;        /* "core" (i.e. memory) address */
typedef __ulong64_t     ino_t;          /* inode number (filesystem) */
typedef uint_t          ino32_t;        /* size invariant 32-bit inode
number */
#if defined(__64BIT__) || defined(_LONG_LONG)
typedef uint64_t        ino64_t;        /* size invariant 64-bit inode
number */
#endif

I checked this file on AIX 5.1. While the above lines aren't in the
exact same place the content is the same. I think the problem is with
the newer AIX releases and not GCC. I have similar issues trying to
build with XLC.

I guess the problem is that "__long64_t" or "__ulong64_t" are not
defined. You can try a "grep -r __ulong64_t /usr/include" to see where
AIX defines these non-standard types.

[EMAIL PROTECTED] /tmp/tar-1.16-20061114]$ grep -r __ulong64_t /usr/include
/usr/include/sys/buf.h: __ulong64_t b_bcount; /* transfer count, OR */ /usr/include/sys/buf.h: __ulong64_t b_resid; /* words not xferred after error */ /usr/include/sys/dir.h: __ulong64_t d_offset; /* real off after this entry */
/usr/include/sys/ide.h:      __ulong64_t resid;
/usr/include/sys/inttypes.h:typedef unsigned long       __ulong64_t;
/usr/include/sys/inttypes.h:typedef unsigned int        __ulong64_t;
/usr/include/sys/msg.h:typedef __ulong64_t     msglen_t;
/usr/include/sys/scsi.h: __ulong64_t tm_correlator; /* same as that givento adap driver */ /usr/include/sys/scsi.h: __ulong64_t resvd7; /* reserved for use by adapter driver */ /usr/include/sys/scsi.h: __ulong64_t resvd8; /* reserved for use by adapter driver */ /usr/include/sys/scsi.h: __ulong64_t resvd9; /* reserved for use by adapter driver */ /usr/include/sys/scsi.h: __ulong64_t resvd10; /* reserved for use by adapter driver */ /usr/include/sys/scsi.h: __ulong64_t resvd11; /* reserved for use by adapter driver */ /usr/include/sys/scsi.h: __ulong64_t resvd12; /* reserved for use by adapter driver */ /usr/include/sys/scsi.h: __ulong64_t resvd13; /* reserved for use by adapter driver */ /usr/include/sys/scsi.h: __ulong64_t resvd14; /* reserved for use by adapter driver */ /usr/include/sys/scsi.h: __ulong64_t resvd15; /* reserved for future expansion */ /usr/include/sys/scsi.h: __ulong64_t resvd16; /* reserved for future expansion */ /usr/include/sys/scsi.h: __ulong64_t resvd17; /* reserved for future expansion */ /usr/include/sys/scsi.h: __ulong64_t resvd18; /* reserved for future expansion */ /usr/include/sys/scsi.h: __ulong64_t resvd1; /* when not zero it is a pointer to /usr/include/sys/scsi.h: __ulong64_t target_driver_flags;/* Flags set by target device */ /usr/include/sys/scsi.h: __ulong64_t resvd4; /* reserved, should be set to zero */ /usr/include/sys/scsi.h: __ulong64_t resvd2; /* reserved, should beset to zero */ /usr/include/sys/scsi.h: __ulong64_t async_correlator; /* optional field for use by caller. /usr/include/sys/scsi.h: __ulong64_t resvd2; /* reserved, should beset to zero */ /usr/include/sys/scsi.h: __ulong64_t async_correlator; /* this value is a copy of the field /usr/include/sys/scsi.h: __ulong64_t tm_correlator; /* optional field for use by caller. /usr/include/sys/scsi.h: __ulong64_t resvd1; /* reserved, should beset to zero */ /usr/include/sys/scsi.h: __ulong64_t resvd1; /* reserved, should be setto zero */ /usr/include/sys/scsi.h: __ulong64_t resvd2; /* reserved, should be setto zero */ /usr/include/sys/types.h:typedef __ulong64_t ino_t; /* inode number (filesystem) */ /usr/include/sys/types.h:typedef __ulong64_t dev_t; /* device number (major+minor) */
/usr/include/inttypes.h:typedef unsigned long   __ulong64_t;
/usr/include/inttypes.h:typedef unsigned int    __ulong64_t;

I've submitted a bug report for this on the gtar project page. It's strange to me that this only affects 5.2 & above.

Doug
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
User Communication List                      openpkg-users@openpkg.org

Reply via email to