This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: libjava seems to miss some files for win32

Kai Tietz wrote:

> There are a lot of issues about casting HANDLE values into jint types,
> which is for x86 valid, but for x64 can lead potential to pointer
> truncations. Those part need some review by libjava maintainers. My
> patch simply casts those kind of pointers via __UINTPTR_TYPE__ into
> integer scalar before casting it into jint. I put comments at those
> places, where some rework is necessary.

  Argh.  You're replacing a bunch of warnings that draw attention to a real
problem by a bunch of silent fixmes in the code.  That's a bit scary to me.

> Index: gcc/libjava/gnu/java/net/
> ===================================================================
> --- gcc.orig/libjava/gnu/java/net/	2009-07-19 12:06:54.200476000 +0200
> +++ gcc/libjava/gnu/java/net/	2009-07-19 12:13:45.727476500 +0200
> @@ -58,7 +58,8 @@
>    // We use native_fd in place of fd here.  From leaving fd null we avoid
>    // the double close problem in FileDescriptor.finalize.
> -  native_fd = (jint) hSocket;
> +  // Fixme, it isn't correct to cast a HANDLE to integer scalar here for x64
> +  native_fd = (jint) (__UINTPTR_TYPE__) hSocket;
>  }

  Question is, can we change the sizes of the members of class objects, such
as gnu::java::net::PlainSocketImpl::native_fd, or do these objects and their
layout form part of an ABI, and/or do they ever get serialised?  The Java guys
will be able to tell us.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]