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