This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libgcj/30513] [4.3 Regression] Bootstrap failure with libgcj on sparc-sun-solaris2.10
- From: "andreast at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 23 Jan 2007 22:10:30 -0000
- Subject: [Bug libgcj/30513] [4.3 Regression] Bootstrap failure with libgcj on sparc-sun-solaris2.10
- References: <bug-30513-578@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #9 from andreast at gcc dot gnu dot org 2007-01-23 22:10 -------
Here is what I get when I add -ansi to the CXX flags:
gnu/java/nio/channels/natFileChannelImpl.cc: In member function 'void
gnu::java::nio::channels::FileChannelImpl::implTruncate(jlong)':
gnu/java/nio/channels/natFileChannelImpl.cc:262: error: invalid cast from type
'off_t' to type 'jlong'
gnu/java/nio/channels/natFileChannelImpl.cc:268: error: invalid cast from type
'off_t' to type 'jlong'
gnu/java/nio/channels/natFileChannelImpl.cc:270: error: no matching function
for call to 'longlong_t::longlong_t(__java_long)'
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
candidates are: longlong_t::longlong_t()
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
longlong_t::longlong_t(const longlong_t&)
gnu/java/nio/channels/natFileChannelImpl.cc:274: error: conversion from 'jlong'
to non-scalar type 'off_t' requested
gnu/java/nio/channels/natFileChannelImpl.cc:279: error: no matching function
for call to 'longlong_t::longlong_t(jlong&)'
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
candidates are: longlong_t::longlong_t()
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
longlong_t::longlong_t(const longlong_t&)
gnu/java/nio/channels/natFileChannelImpl.cc:282: error: no matching function
for call to 'longlong_t::longlong_t(jlong&)'
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
candidates are: longlong_t::longlong_t()
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
longlong_t::longlong_t(const longlong_t&)
gnu/java/nio/channels/natFileChannelImpl.cc: In member function 'void
gnu::java::nio::channels::FileChannelImpl::seek(jlong)':
gnu/java/nio/channels/natFileChannelImpl.cc:294: error: no matching function
for call to 'longlong_t::longlong_t(jlong&)'
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
candidates are: longlong_t::longlong_t()
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
longlong_t::longlong_t(const longlong_t&)
gnu/java/nio/channels/natFileChannelImpl.cc:295: error: no match for
'operator==' in 'r == -0x00000000000000001'
gnu/java/nio/channels/natFileChannelImpl.cc:297: error: cannot convert 'off_t'
to 'jlong' in assignment
gnu/java/nio/channels/natFileChannelImpl.cc: In member function 'virtual jlong
gnu::java::nio::channels::FileChannelImpl::size()':
gnu/java/nio/channels/natFileChannelImpl.cc:306: error: cannot convert 'off_t'
to 'jlong' in return
gnu/java/nio/channels/natFileChannelImpl.cc: In member function 'jint
gnu::java::nio::channels::FileChannelImpl::available()':
gnu/java/nio/channels/natFileChannelImpl.cc:423: error: conversion from 'int'
to non-scalar type 'longlong_t' requested
gnu/java/nio/channels/natFileChannelImpl.cc:426: error: conversion from 'int'
to non-scalar type 'off_t' requested
gnu/java/nio/channels/natFileChannelImpl.cc:426: error: no matching function
for call to 'longlong_t::longlong_t(int)'
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
candidates are: longlong_t::longlong_t()
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
longlong_t::longlong_t(const longlong_t&)
gnu/java/nio/channels/natFileChannelImpl.cc:428: error: no match for
'operator-' in 'sb.stat::st_size - where'
gnu/java/nio/channels/natFileChannelImpl.cc: In member function 'jboolean
gnu::java::nio::channels::FileChannelImpl::lock(jlong, jlong, jboolean,
jboolean)':
gnu/java/nio/channels/natFileChannelImpl.cc:464: error: no match for
'operator=' in 'lockdata.flock::l_start = pos'
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
candidates are: longlong_t& longlong_t::operator=(const longlong_t&)
gnu/java/nio/channels/natFileChannelImpl.cc:465: error: no match for
'operator=' in 'lockdata.flock::l_len = len'
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
candidates are: longlong_t& longlong_t::operator=(const longlong_t&)
gnu/java/nio/channels/natFileChannelImpl.cc: In member function 'void
gnu::java::nio::channels::FileChannelImpl::unlock(jlong, jlong)':
gnu/java/nio/channels/natFileChannelImpl.cc:483: error: no match for
'operator=' in 'lockdata.flock::l_start = pos'
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
candidates are: longlong_t& longlong_t::operator=(const longlong_t&)
gnu/java/nio/channels/natFileChannelImpl.cc:484: error: no match for
'operator=' in 'lockdata.flock::l_len = len'
/export/data/devel-test/gcc-svn/objdir/./gcc/include/sys/types.h:70: note:
candidates are: longlong_t& longlong_t::operator=(const longlong_t&)
gnu/java/nio/channels/natFileChannelImpl.cc: In member function
'java::nio::MappedByteBuffer*
gnu::java::nio::channels::FileChannelImpl::mapImpl(jchar, jlong, jint)':
gnu/java/nio/channels/natFileChannelImpl.cc:508: error: conversion from 'jint'
to non-scalar type 'off_t' requested
gmake[3]: *** [gnu/java/nio/channels/natFileChannelImpl.lo] Error 1
This has to do with the fixincludes in sys/types.h from gcc I guess. At least
in this header we see this:
#if !defined(__STRICT_ANSI__) && !defined(_NO_LONGLONG)
typedef long long longlong_t;
typedef unsigned long long u_longlong_t;
#else
/* used to reserve space and generate alignment */
typedef union {
double _d;
int32_t _l[2];
} longlong_t;
typedef union {
double _d;
uint32_t _l[2];
} u_longlong_t;
#endif /* __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) */
and for off_t:
#if defined(_LP64) || _FILE_OFFSET_BITS == 32
typedef long off_t; /* offsets within files */
#elif _FILE_OFFSET_BITS == 64
typedef longlong_t off_t; /* offsets within files */
#endif
#if defined(_LARGEFILE64_SOURCE)
#ifdef _LP64
typedef off_t off64_t; /* offsets within files */
#else
typedef longlong_t off64_t; /* offsets within files */
#endif
#endif /* _LARGEFILE64_SOURCE */
So we see that in the 32-bit part with strict ansi longlong is not defined.
This is what I read.
So '#undef sun' in a header (which one?) seems for me the cheapest/easiest
solution.
Ah, yes, if I did not already mention it, I work on sparc-solaris8 ;) with
multilib build. The -m64 part built fine, btw.
Andreas
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30513