Request for approval (was Re: Request for review: 7039182) (original) (raw)

Edvard Wendelin edvard.wendelin at oracle.com
Sun Aug 7 23:47:46 PDT 2011


Approved!

Use http://hg.openjdk.java.net/jdk7u/jdk7u-dev-gate/jdk/ for the push

Cheers, Edvard

On 08/08/2011 08:00 AM, David Holmes wrote:

As this is identical to the JDK8 fix it seems I need only seek approval and not re-review.

Thanks, David David Holmes said the following on 08/05/11 13:02: 7039182 is not a public CR so I'll summarize the issue.

When the NIO libs are built there are a few files that contain constants that represent platform specific I/O constants found in various C header files. Normally the build process compiles and runs a small C program which will generate the .java file for that platform. When I integrated the basic support for cross-compilation I modified this process to use the host C compiler not the cross-compiler for the target, as we couldn't execute the resulting C program. That wasn't the correct thing to do because it means we generate values for the build platform not the target platform. Luckily these values are mostly the same on the Linux platforms we care about, but not all the same (hence this bug report where a read system call returned EINVAL because we thought we were passing ONOFOLLOW but in fact passed ODIRECT). The simplest fix is to not try to generate a file when cross-compiling but allow the developer to specify where these files can be found. This is done using the NIOPLATFORMCLASSESROOTDIR variable which is expected to be the "root" directory for where classes can be found and the directories under that are expected to follow the package hierarchy for the files, so, for example we will look for: $(NIOPLATFORMCLASSESROOTDIR)/sun/nio/ch/SocketOptionRegistry-$(PLATFORM)-$(ARCH).java

the platform and arch are used in the filename as we don't have platform/arch directories in the JDK repo. In addition I reverted the original change to use the host C compiler as this allows you to specifically build the generator program using the cross-compiler (which will get the right values) then copy it across to the target system and run it to generate the file. --- Here's the webrev against 7u-dev: http://cr.openjdk.java.net/~dholmes/7039182/webrev.u2/ --- Here's the information from the JDK 8 submission: http://hg.openjdk.java.net/jdk8/tl/jdk/rev/3abc52f0a4dc 7039182: PPC: NIO: java.io.IOException: Invalid argument in sun.nio.ch.FileDispatcherImpl.read0 author dholmes Mon Jun 27 20:13:48 2011 -0400 (5 weeks ago) changeset 4369 3abc52f0a4dc parent 4368 a053c28304e8 child 4371 585cc4a4528d 7039182: PPC: NIO: java.io.IOException: Invalid argument in sun.nio.ch.FileDispatcherImpl.read0 Summary: Allow platform specific files to be located at build time instead of generating them Reviewed-by: alanb, ohair Thanks, David Holmes



More information about the jdk7u-dev mailing list