diff -ru gcc-4.0.2.orig/gcc/java/gjavah.c gcc-4.0.2/gcc/java/gjavah.c --- gcc-4.0.2.orig/gcc/java/gjavah.c 2005-06-06 21:20:56.000000000 +0200 +++ gcc-4.0.2/gcc/java/gjavah.c 2006-04-29 01:20:19.000000000 +0200 @@ -145,7 +145,7 @@ static void print_c_decl (FILE*, JCF*, int, int, int, const char *, int); static void print_stub_or_jni (FILE*, JCF*, int, int, int, const char *, int); static void print_full_cxx_name (FILE*, JCF*, int, int, int, const char *, int); -static void decompile_method (FILE*, JCF*, int); +static void decompile_method (FILE*, JCF*, int) ATTRIBUTE_UNUSED; static void add_class_decl (FILE*, JCF*, JCF_u2); static void print_name (FILE *, JCF *, int); @@ -250,8 +250,14 @@ } \ } +/* Only include byte-code decompilation optimizations for ELF targets + since the generated headers are only known to work with ELF weak + symbol semnatics. Specifically, these optimizations are known to + not work on PE-COFF and possibly others. */ +#ifdef OBJECT_FORMAT_ELF #define HANDLE_CODE_ATTRIBUTE(MAX_STACK, MAX_LOCALS, CODE_LENGTH) \ if (out && method_declared) decompile_method (out, jcf, CODE_LENGTH); +#endif static int decompiled = 0; #define HANDLE_END_METHOD() \ diff -ru gcc-4.0.2.orig/libjava/gnu/java/nio/channels/natFileChannelWin32.cc gcc-4.0.2/libjava/gnu/java/nio/channels/natFileChannelWin32.cc --- gcc-4.0.2.orig/libjava/gnu/java/nio/channels/natFileChannelWin32.cc 2004-02-29 20:09:28.000000000 +0100 +++ gcc-4.0.2/libjava/gnu/java/nio/channels/natFileChannelWin32.cc 2006-04-29 01:24:56.000000000 +0200 @@ -258,7 +258,7 @@ void FileChannelImpl::seek (jlong newPos) { - LONG high = pos >> 32; + LONG high = (LONG)(newPos >> 32); DWORD low = SetFilePointer ((HANDLE)fd, (DWORD)(0xffffffff & newPos), &high, FILE_BEGIN); if ((low == 0xffffffff) && (GetLastError () != NO_ERROR)) _Jv_ThrowIOException (); diff -ru gcc-4.0.2.orig/libjava/java/io/natFileWin32.cc gcc-4.0.2/libjava/java/io/natFileWin32.cc --- gcc-4.0.2.orig/libjava/java/io/natFileWin32.cc 2003-12-02 23:26:49.000000000 +0100 +++ gcc-4.0.2/libjava/java/io/natFileWin32.cc 2006-04-29 01:22:51.000000000 +0200 @@ -258,7 +258,7 @@ } else { - if (GetLastError () == ERROR_ALREADY_EXISTS) + if (GetLastError () == ERROR_FILE_EXISTS) return false; else throw new IOException (JvNewStringLatin1 ("CreateFile failed"));