------- 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