-
Bug
-
Resolution: Fixed
-
P4
-
13
-
None
-
b25
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8226044 | 14 | Erik Joelsson | P4 | Resolved | Fixed | team |
This issue was brought up on build-dev here: http://mail.openjdk.java.net/pipermail/build-dev/2019-January/024729.html
On some target platforms, some values in UnixConstants.java get different values compared to linux-x64. This causes cross compilation of those targets from linux-x64 to fail. The failure happens when the newly constructed BuildJDK is used to run jmod/jlink using the UnixConstants.class created for the target.
When we cross compile, the default behavior is to create a BuildJDK on the fly, but for efficiency reasons, we try to reuse as much as possible of the JDK built for the target. One such reuse is all class files as they were assumed to be equivalent. We now have an example of where they aren't.
I think the simplest solution to this is to stop reusing all of java.base classes and let the BuildJDK build gensrc and compile those classes separately.
On some target platforms, some values in UnixConstants.java get different values compared to linux-x64. This causes cross compilation of those targets from linux-x64 to fail. The failure happens when the newly constructed BuildJDK is used to run jmod/jlink using the UnixConstants.class created for the target.
When we cross compile, the default behavior is to create a BuildJDK on the fly, but for efficiency reasons, we try to reuse as much as possible of the JDK built for the target. One such reuse is all class files as they were assumed to be equivalent. We now have an example of where they aren't.
I think the simplest solution to this is to stop reusing all of java.base classes and let the BuildJDK build gensrc and compile those classes separately.
- backported by
-
JDK-8226044 Cannot reuse java.base UnixConstants.java from target in BuildJDK when cross compiling
- Resolved