Merge branch 'rawhide' into epel9

This commit is contained in:
Jiri 2023-12-05 13:11:15 +01:00
commit 7945966e03
24 changed files with 4290 additions and 1356 deletions

4
.gitignore vendored
View File

@ -34,3 +34,7 @@
/openjdk-jdk20u-jdk-20+36.tar.xz
/openjdk-jdk20u-jdk-20.0.1+9.tar.xz
/openjdk-jdk20u-jdk-20.0.2+9.tar.xz
/openjdk-jdk21u-jdk-21+34.tar.xz
/openjdk-jdk21u-jdk-21+35.tar.xz
/openjdk-21+35.tar.xz
/openjdk-21.0.1+12.tar.xz

559
NEWS
View File

@ -3,161 +3,210 @@ Key:
JDK-X - https://bugs.openjdk.java.net/browse/JDK-X
CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY
New in release OpenJDK 20.0.2 (2023-07-18):
===========================================
* CVEs
- CVE-2023-22041
- CVE-2023-22051
- CVE-2023-25193
- CVE-2023-22044
- CVE-2023-22045
- CVE-2023-22049
- CVE-2023-22036
- CVE-2023-22006
* Security fixes
- JDK-8299945: Update the release version after forking Apr CPU23_04
- JDK-8299946: Update the Jul CPU23_07 release date in master branch after forking Apr CPU23_04
- JDK-8299129: Enhance NameService lookups
- JDK-8295304: Runtime support improvements
- JDK-8300285: Enhance TLS data handling
- JDK-8298676: Enhanced Look and Feel
- JDK-8304460: Improve array usages
- JDK-8304468: Better array usages
- JDK-8302483: Enhance ZIP performance
- JDK-8305565: Incorrect milestone for release JDK 20.0.2
- JDK-8300596: Enhance Jar Signature validation
- JDK-8302475: Enhance HTTP client file downloading
- JDK-8305421: Work around JDK-8305420 in CDSJDITest.java
- JDK-8294323: Improve Shared Class Data
- JDK-8305312: Enhanced path handling
- JDK-8296565: Enhanced archival support
- JDK-8306049: Change milestone to fcs for all releases
- JDK-8303376: Better launching of JDI
- JDK-8308682: Enhance AES performance
* Other changes
- JDK-8304741: C2 Intrinsification of Float.floatToFloat16 and Float.float16ToFloat Yields Different Result than the Interpreter
- JDK-8306763: GHA: MSVC installation is failing
- JDK-8304075: Consider removal of expiry check in VerifyCACerts.java test
- JDK-8304077: The "ZonedDateTime.parse" may not accept the "UTC+XX" zone id
- JDK-8304227: Corrupted heap dumps due to missing retries for os::write()
- JDK-8304424: Update HarfBuzz to 7.0.1
- JDK-8304887: javax/swing/JFileChooser/4847375/bug4847375.java fails with AssertionError
- JDK-8305123: javac regression: Compilation with --release 8 fails on underscore in enum identifiers
- JDK-8305537: Use default visibility for static library builds
- JDK-8305540: ArrayFill with store on backedge needs to reduce length by 1
- JDK-8305541: C2: Div/Mod nodes without zero check could be split through iv phi of loop resulting in SIGFPE
- JDK-8305542: C2: PhaseCFG::convert_NeverBranch_to_Goto must handle both orders of successors
- JDK-8305546: C2: Arraycopy intrinsic throws incorrect exception
- JDK-8305548: use-after-free related to GraphKit::clone_map
- JDK-8305549: SIGSEGV in LibraryCallKit::inline_string_copy due to constant NULL src argument
- JDK-8305550: C2: CmpU::Value must filter overflow computation against local sub computation
- JDK-8305551: C2 compiled code crashes with SIGFPE with -XX:+StressLCM and -XX:+StressGCM
- JDK-8305554: C2: java.lang.StringUTF16::indexOfChar intrinsic called with negative character argument
- JDK-8305555: C2: assert(get_ctrl(n) == cle_out) during unrolling
- JDK-8305557: Vector.lane() gets wrong value on x86
- JDK-8305558: [JVMCI] Insufficient error handling when CodeBuffer is exhausted
- JDK-8305560: C2: "Bad graph detected in build_loop_late" after a CMove is wrongly split thru phi
- JDK-8305561: DebugNonSafepoints generates incorrect information
- JDK-8305850: Fastdebug build fails after JDK-8296389
- JDK-8305851: use-def assert: special case undetected loops nested in infinite loops
- JDK-8305865: (tz) Update Timezone Data to 2023c
- JDK-8305876: Special case infinite loops with unmerged backedges in IdealLoopTree::check_safepts
- JDK-8306319: Add the runtime version in the release file of a JDK image
- JDK-8306478: On the latest macOS+XCode the Robot API may report wrong colors
- JDK-8306750: Upgrade JLine to 3.22.0
- JDK-8306751: JShell does not switch to raw mode when there is no /bin/test
- JDK-8306771: [AIX] Broken build after JDK-8301998
- JDK-8307107: updateIconImages may lead to deadlock after JDK-8276849
- JDK-8307111: Shenandoah evacuation workers may deadlock
- JDK-8307112: GHA: MSVC installation could be optional since it might already be pre-installed
- JDK-8307151: Shenandoah: Missing barriers on deoptimization path
- JDK-8307364: Make runtime/Monitor/GuaranteedAsyncDeflationIntervalTest.java more reliable
- JDK-8307372: Add TWCA Global Root CA
- JDK-8307373: Add 2 Microsoft TLS roots
- JDK-8307391: Monitor deflation might be accidentally disabled by zero intervals
- JDK-8307631: Add GTS root CAs
- JDK-8308008: java.time.Instant calculation bug in until and between methods
- JDK-8309850: ConcurrentModificationException in javadoc tool
- JDK-8301870: Include cdb in the Windows devkit
- JDK-8303906: Update jdk20u fix version to 20.0.2
- JDK-8303958: Missing Classpath exception from Continuation.c
- JDK-8304417: GCC 12 reports some compiler warnings in bundled freetype
- JDK-8304981: jcmd: ManagementAgent.status truncates the text longer than O_BUFLEN
- JDK-8305545: [JVMCI] HotSpotResolvedJavaMethodImpl.canBeInlined must respect ForceInline
- JDK-8305547: use-after-free in Node::destruct
- JDK-8305552: [JVMCI] BytecodeFrame.equals is broken
- JDK-8305553: C2: assert in PhaseIdealLoop::do_unroll() is subject to undefined behavior
- JDK-8305789: Update Commons BCEL to Version 6.7.0
- JDK-8305849: Memory leak in CompilerOracle::parse_from_line
- JDK-8305859: ProblemList runtime/CompressedOops/CompressedClassPointers.java
- JDK-8305948: Performance degradation for float/double modulo on Linux
- JDK-8306448: NoClassDefFoundError omits the original cause of an error
- JDK-8307209: Thread stacksize is reported with wrong units in os::create_thread logging
- JDK-8307360: [vectorapi] The typeChar of LaneType is incorrect when default locale is tr
- JDK-8307361: Guarantee eventual async monitor deflation
- JDK-8307380: harfbuzz build fails with GCC 7 after JDK-8301998
- JDK-8307419: UTIL_LOOKUP_PROGS fails on pathes with space
- JDK-8307420: UTIL_REQUIRE_SPECIAL warning on grep
- JDK-8307705: Support for GB18030-2022
- JDK-8308112: Allow collectors to provide specific values for GC notifications' actions
- JDK-8308390: Font.getStringBounds calculates wrong width for TextAttribute.TRACKING other than 0.0
- JDK-8308418: Socket input stream read burns CPU cycles with back-to-back poll(0) calls
- JDK-8308457: [AIX] VM crashes with UseRTMLocking on Power10
- JDK-8308693: Add missing gc+phases logging for ObjectCount(AfterGC) JFR event collection code
- JDK-8309483: PPC: Non-Top Interpreted frames should be independent of ABI_ELFv2
- JDK-8305544: UB: Compile::_phase_optimize_finished is initialized too late
- JDK-8305556: Memory leak in WB_IsMethodCompatible
- JDK-8305559: Identical branch conditions in CompileBroker::print_heapinfo
The full list of changes in 20u can be found at:
- * https://builds.shipilev.net/backports-monitor/release-notes-20.0.2.txt
- * https://builds.shipilev.net/backports-monitor/pushes-20.0.2.txt
New in release OpenJDK 20.0.1 (2023-04-18):
New in release OpenJDK 21.0.1 (2023-10-17):
===========================================
* CVEs
- CVE-2023-21930
- CVE-2023-21937
- CVE-2023-21938
- CVE-2023-21939
- CVE-2023-21967
- CVE-2023-21968
- CVE-2023-22081
- CVE-2023-22025
* Security fixes
- JDK-8287404: Improve ping times
- JDK-8288436: Improve Xalan supports
- JDK-8294474: Better AES support
- JDK-8295304: Runtime support improvements
- JDK-8296676, JDK-8296622: Improve String platform support
- JDK-8296684: Improve String platform support
- JDK-8296692: Improve String platform support
- JDK-8296832: Improve Swing platform support
- JDK-8297371: Improve UTF8 representation redux
- JDK-8298310: Enhance TLS session negotiation
- JDK-8298667: Improved path handling
- JDK-8299129: Enhance NameService lookups
- JDK-8286503, JDK-8312367: Enhance security classes
- JDK-8296581: Better system proxy support
- JDK-8297856: Improve handling of Bidi characters
- JDK-8309966: Enhanced TLS connections
- JDK-8312248: Enhanced archival support redux
- JDK-8314649: Enhanced archival support redux
- JDK-8317121: vector_masked_load instruction is moved too early after JDK-8286941
* Other changes
- JDK-8208077: File.listRoots performance degradation
- JDK-8245654: Add Certigna Root CA
- JDK-8278965: crash in SymbolTable::do_lookup
- JDK-8295951: intermittent cmp_baseline task failures with CDS files
- JDK-8299194: CustomTzIDCheckDST.java may fail at future date
- JDK-8299843: Bump version numbers for 20.0.1
- JDK-8299947: Change milestone to fcs for all releases
- JDK-8301123: Enable Symbol refcounting underflow checks in PRODUCT
- JDK-8301858: Verification error when compiling switch with record patterns
- JDK-8301876: Crash in DumpTimeClassInfo::add_verification_constraint
- JDK-8302202: Incorrect desugaring of null-allowed nested patterns
- JDK-8302879: doc/building.md update link to jtreg builds
- JDK-8303412: Update linux_x64-to-linux_aarch64 cross compilation devkit at Oracle
- JDK-8240567: MethodTooLargeException thrown while creating a jlink image
- JDK-8284772: GHA: Use GCC Major Version Dependencies Only
- JDK-8293114: JVM should trim the native heap
- JDK-8299658: C1 compilation crashes in LinearScan::resolve_exception_edge
- JDK-8302017: Allocate BadPaddingException only if it will be thrown
- JDK-8303815: Improve Metaspace test speed
- JDK-8304954: SegmentedCodeCache fails when using large pages
- JDK-8307766: Linux: Provide the option to override the timer slack
- JDK-8308042: [macos] Developer ID Application Certificate not picked up by jpackage if it contains UNICODE characters
- JDK-8308047: java/util/concurrent/ScheduledThreadPoolExecutor/BasicCancelTest.java timed out and also had jcmd pipe errors
- JDK-8308184: Launching java with large number of jars in classpath with java.protocol.handler.pkgs system property set can lead to StackOverflowError
- JDK-8308474: DSA does not reset SecureRandom when initSign is called again
- JDK-8308609: java/lang/ScopedValue/StressStackOverflow.java fails with "-XX:-VMContinuations"
- JDK-8309032: jpackage does not work for module projects unless --module-path is specified
- JDK-8309088: security/infra/java/security/cert/CertPathValidator/certification/AmazonCA.java fails
- JDK-8309214: sun/security/pkcs11/KeyStore/CertChainRemoval.java fails after 8301154
- JDK-8309475: Test java/foreign/TestByteBuffer.java fails: a problem with msync (aix)
- JDK-8309502: RISC-V: String.indexOf intrinsic may produce misaligned memory loads
- JDK-8309591: Socket.setOption(TCP_QUICKACK) uses wrong level
- JDK-8309746: Reconfigure check should include make/conf/version-numbers.conf
- JDK-8309889: [s390] Missing return statement after calling jump_to_native_invoker method in generate_method_handle_dispatch.
- JDK-8310106: sun.security.ssl.SSLHandshake.getHandshakeProducer() incorrectly checks handshakeConsumers
- JDK-8310171: Bump version numbers for 21.0.1
- JDK-8310211: serviceability/jvmti/thread/GetStackTrace/getstacktr03/getstacktr03.java failing
- JDK-8310233: Fix THP detection on Linux
- JDK-8310268: RISC-V: misaligned memory access in String.Compare intrinsic
- JDK-8310321: make JDKOPT_CHECK_CODESIGN_PARAMS more verbose
- JDK-8310586: ProblemList java/lang/ScopedValue/StressStackOverflow.java#default with virtual threads on linux-all
- JDK-8310687: JDK-8303215 is incomplete
- JDK-8310873: Re-enable locked_create_entry symbol check in runtime/NMT/CheckForProperDetailStackTrace.java for RISC-V
- JDK-8311026: Some G1 specific tests do not set -XX:+UseG1GC
- JDK-8311033: [macos] PrinterJob does not take into account Sides attribute
- JDK-8311160: [macOS, Accessibility] VoiceOver: No announcements on JRadioButtonMenuItem and JCheckBoxMenuItem
- JDK-8311249: Remove unused MemAllocator::obj_memory_range
- JDK-8311285: report some fontconfig related environment variables in hs_err file
- JDK-8311511: Improve description of NativeLibrary JFR event
- JDK-8311592: ECKeySizeParameterSpec causes too many exceptions on third party providers
- JDK-8311682: Change milestone to fcs for all releases
- JDK-8311862: RISC-V: small improvements to shift immediate instructions
- JDK-8311917: MAP_FAILED definition seems to be obsolete in src/java.desktop/unix/native/common/awt/fontpath.c
- JDK-8311921: Inform about MaxExpectedDataSegmentSize in case of pthread_create failures on AIX
- JDK-8311923: TestIRMatching.java fails on RISC-V
- JDK-8311926: java/lang/ScopedValue/StressStackOverflow.java takes 9mins in tier1
- JDK-8311955: c++filt is now ibm-llvm-cxxfilt when using xlc17 / clang on AIX
- JDK-8311981: Test gc/stringdedup/TestStringDeduplicationAgeThreshold.java#ZGenerational timed out
- JDK-8312127: FileDescriptor.sync should temporarily increase parallelism
- JDK-8312180: (bf) MappedMemoryUtils passes incorrect arguments to msync (aix)
- JDK-8312182: THPs cause huge RSS due to thread start timing issue
- JDK-8312394: [linux] SIGSEGV if kernel was built without hugepage support
- JDK-8312395: Improve assertions in growableArray
- JDK-8312401: SymbolTable::do_add_if_needed hangs when called in InstanceKlass::add_initialization_error path with requesting length exceeds max_symbol_length
- JDK-8312489: Increase jdk.jar.maxSignatureFileSize default which is too low for JARs such as WhiteSource/Mend unified agent jar
- JDK-8312525: New test runtime/os/TestTrimNative.java#trimNative is failing: did not see the expected RSS reduction
- JDK-8312535: MidiSystem.getSoundbank() throws unexpected SecurityException
- JDK-8312555: Ideographic characters aren't stretched by AffineTransform.scale(2, 1)
- JDK-8312573: Failure during CompileOnly parsing leads to ShouldNotReachHere
- JDK-8312585: Rename DisableTHPStackMitigation flag to THPStackMitigation
- JDK-8312591: GCC 6 build failure after JDK-8280982
- JDK-8312619: Strange error message when switching over long
- JDK-8312620: WSL Linux build crashes after JDK-8310233
- JDK-8312625: Test serviceability/dcmd/vm/TrimLibcHeapTest.java failed: RSS use increased
- JDK-8312909: C1 should not inline through interface calls with non-subtype receiver
- JDK-8312976: MatchResult produces StringIndexOutOfBoundsException for groups outside match
- JDK-8312984: javac may crash on a record pattern with too few components
- JDK-8313081: MonitoringSupport_lock should be unconditionally initialized after 8304074
- JDK-8313248: C2: setScopedValueCache intrinsic exposes nullptr pre-values to store barriers
- JDK-8313262: C2: Sinking node may cause required cast to be dropped
- JDK-8313307: java/util/Formatter/Padding.java fails on some Locales
- JDK-8313312: Add missing classpath exception copyright header
- JDK-8313323: javac -g on a java file which uses unnamed variable leads to ClassFormatError when launching that class
- JDK-8313402: C1: Incorrect LoadIndexed value numbering
- JDK-8313428: GHA: Bump GCC versions for July 2023 updates
- JDK-8313576: GCC 7 reports compiler warning in bundled freetype 2.13.0
- JDK-8313602: increase timeout for jdk/classfile/CorpusTest.java
- JDK-8313626: C2 crash due to unexpected exception control flow
- JDK-8313657: com.sun.jndi.ldap.Connection.cleanup does not close connections on SocketTimeoutErrors
- JDK-8313676: Amend TestLoadIndexedMismatch test to target intrinsic directly
- JDK-8313678: SymbolTable can leak Symbols during cleanup
- JDK-8313691: use close after failing os::fdopen in vmError and ciEnv
- JDK-8313701: GHA: RISC-V should use the official repository for bootstrap
- JDK-8313707: GHA: Bootstrap sysroots with --variant=minbase
- JDK-8313752: InstanceKlassFlags::print_on doesn't print the flag names
- JDK-8313765: Invalid CEN header (invalid zip64 extra data field size)
- JDK-8313796: AsyncGetCallTrace crash on unreadable interpreter method pointer
- JDK-8313874: JNI NewWeakGlobalRef throws exception for null arg
- JDK-8313901: [TESTBUG] test/hotspot/jtreg/compiler/codecache/CodeCacheFullCountTest.java fails with java.lang.VirtualMachineError
- JDK-8313904: [macos] All signing tests which verifies unsigned app images are failing
- JDK-8314020: Print instruction blocks in byte units
- JDK-8314024: SIGSEGV in PhaseIdealLoop::build_loop_late_post_work due to bad immediate dominator info
- JDK-8314063: The socket is not closed in Connection::createSocket when the handshake failed for LDAP connection
- JDK-8314117: RISC-V: Incorrect VMReg encoding in RISCV64Frame.java
- JDK-8314118: Update JMH devkit to 1.37
- JDK-8314139: TEST_BUG: runtime/os/THPsInThreadStackPreventionTest.java could fail on machine with large number of cores
- JDK-8314144: gc/g1/ihop/TestIHOPStatic.java fails due to extra concurrent mark with -Xcomp
- JDK-8314216: Case enumConstant, pattern compilation fails
- JDK-8314262: GHA: Cut down cross-compilation sysroots deeper
- JDK-8314423: Multiple patterns without unnamed variables
- JDK-8314426: runtime/os/TestTrimNative.java is failing on slow machines
- JDK-8314501: Shenandoah: sun/tools/jhsdb/heapconfig/JMapHeapConfigTest.java fails
- JDK-8314517: some tests fail in case ipv6 is disabled on the machine
- JDK-8314618: RISC-V: -XX:MaxVectorSize does not work as expected
- JDK-8314656: GHA: No need for Debian ports keyring installation after JDK-8313701
- JDK-8314679: SA fails to properly attach to JVM after having just detached from a different JVM
- JDK-8314730: GHA: Drop libfreetype6-dev transitional package in favor of libfreetype-dev
- JDK-8314850: SharedRuntime::handle_wrong_method() gets called too often when resolving Continuation.enter
- JDK-8314960: Add Certigna Root CA - 2
- JDK-8315020: The macro definition for LoongArch64 zero build is not accurate.
- JDK-8315051: jdk/jfr/jvm/TestGetEventWriter.java fails with non-JVMCI GCs
- JDK-8315534: Incorrect warnings about implicit annotation processing
New in release OpenJDK 20.0.0 (2023-03-21):
Notes on individual issues:
===========================
core-libs/java.util.jar:
JDK-8313765: Invalid CEN header (invalid zip64 extra data field size)
=====================================================================
Additional validity checks in the handling of Zip64 files,
JDK-8302483, introduced in 21.0.0, caused the use of some valid zip
files to now fail with the error, `Invalid CEN header (invalid zip64
extra data field size)`
This release, 21.0.1, allows for zero length headers and additional
padding produced by some Zip64 creation tools.
The following third party tools have also released patches to better
adhere to the ZIP File Format Specification:
* Apache Commons Compress fix for Empty CEN Zip64 Extra Headers fixed in Commons Compress release 1.11
* Apache Ant fix for Empty CEN Zip64 Extra Headers fixed in Ant 1.10.14
* BND issue with writing invalid Extra Headers fixed in BND 5.3
The maven-bundle-plugin 5.1.5 includes the BND 5.3 patch.
If these improved validation checks cause issues for deployed zip or
jar files, check how the file was created and whether patches are
available from the generating software to resolve the issue. With
both JDK releases, the checks can be disabled by setting the new
system property, `jdk.util.zip.disableZip64ExtraFieldValidation` to
`true`.
hotspot/runtime:
JDK-8311981: JVM May Hang When Using Generational ZGC if a VM Handshake Stalls on Memory
========================================================================================
The JVM can hang under an uncommon condition that involves the JVM
running out of heap memory, the GC just starting a relocation phase to
reclaim memory, and a JVM thread-local Handshake asking to relocate an
object. This potential deadlock should now be avoided in this
release.
core-libs/java.util.regex:
JDK-8312976: `java.util.regex.MatchResult` Might Throw `StringIndexOutOfBoundsException` on Regex Patterns Containing Lookaheads and Lookbehinds
================================================================================================================================================
JDK-8132995 introduced an unintended regression when using instances
returned by `java.util.regex.Matcher.toMatchResult()`.
This regression happens with a `java.util.regex.Pattern`s containing
lookaheads and lookbehinds that, in turn, contain groups. If these are
located outside the match, a `StringIndexOutOfBoundsException` is
thrown when accessing these groups. See JDK-8312976 for an example.
The issue is resolved in this release by calculating a minimum start
location as part of the match result and using this in constructing
String objects, rather than the location of the first match.
JDK-8314960: Added Certigna Root CA Certificate
===============================================
The following root certificate has been added to the cacerts
truststore:
Name: Certigna (Dhimyotis)
Alias Name: certignarootca
Distinguished Name: CN=Certigna Root CA, OU=0002 48146308100036, O=Dhimyotis, C=FR
JDK-8312489: Increase Default Value of the System Property `jdk.jar.maxSignatureFileSize`
=========================================================================================
A maximum signature file size property, jdk.jar.maxSignatureFileSize,
was introduced in the 21.0.0 release of OpenJDK by JDK-8300596 to
control the maximum size of signature files in a signed JAR. The
default value of 8MB proved to be too small for some JAR files. This
release, 21.0.1, increases it to 16MB.
New in release OpenJDK 21.0.0 (2023-09-XX):
===========================================
Major changes are listed below. Some changes may have been backported
to earlier releases following their first appearance in OpenJDK 20.
The full list of changes in 20u can be found at:
- * https://builds.shipilev.net/backports-monitor/release-notes-20.txt
to earlier releases following their first appearance in OpenJDK 18
through to 21.
NEW FEATURES
============
@ -171,6 +220,7 @@ https://openjdk.org/jeps/406
https://openjdk.org/jeps/420
https://openjdk.org/jeps/427
https://openjdk.org/jeps/433
https://openjdk.org/jeps/441
Enhance the Java programming language with pattern matching for
`switch` expressions and statements, along with extensions to the
@ -179,38 +229,84 @@ expression to be tested against a number of patterns, each with a
specific action, so that complex data-oriented queries can be
expressed concisely and safely.
This is a preview feature (http://openjdk.java.net/jeps/12) introduced
in OpenJDK 17 (JEP 406), which saw a second preview in OpenJDK 18 (JEP
420) and a third in OpenJDK 19 (JEP 427). It reaches its fourth
preview (JEP 427) in OpenJDK 20.
This was a preview feature (http://openjdk.java.net/jeps/12)
introduced in OpenJDK 17 (JEP 406), which saw a second preview in
OpenJDK 18 (JEP 420), a third in OpenJDK 19 (JEP 427) and a fourth
(JEP 427) in OpenJDK 20. It became final with OpenJDK 21 (JEP 441).
Record Patterns
===============
https://openjdk.org/jeps/405
https://openjdk.org/jeps/432
https://openjdk.org/jeps/440
Enhance the Java programming language with record patterns to
deconstruct record values. Record patterns and type patterns can be
nested to enable a powerful, declarative, and composable form of data
navigation and processing.
This was a preview feature (http://openjdk.java.net/jeps/12) introduced
in OpenJDK 19 (JEP 405) with a second preview (JEP 432) in OpenJDK 20.
It became final with OpenJDK 21 (JEP 440).
String Templates
================
https://openjdk.org/jeps/430
Enhance the Java programming language with string templates. String
templates complement Java's existing string literals and text blocks
by coupling literal text with embedded expressions and template
processors to produce specialized results.
This is a preview feature (http://openjdk.java.net/jeps/12) introduced
in OpenJDK 19 (JEP 405). It reaches its second preview (JEP 432) in
OpenJDK 20.
in OpenJDK 21 (JEP 430).
Unnamed Patterns and Variables
==============================
https://openjdk.org/jeps/443
Enhance the Java language with unnamed patterns, which match a record
component without stating the component's name or type, and unnamed
variables, which can be initialized but not used. Both are denoted by
an underscore character, _.
This is a preview feature (http://openjdk.java.net/jeps/12) introduced
in OpenJDK 21 (JEP 443).
Unnamed Classes and Instance Main Methods (Preview)
===================================================
https://openjdk.org/jeps/445
Evolve the Java language so that students can write their first
programs without needing to understand language features designed for
large programs. Far from using a separate dialect of Java, students
can write streamlined declarations for single-class programs and then
seamlessly expand their programs to use more advanced features as
their skills grow.
This is a preview feature (http://openjdk.java.net/jeps/12) introduced
in OpenJDK 21 (JEP 445).
Library Features
================
Scoped Values
=============
https://openjdk.org/jeps/429
UTF-8 by Default
================
https://openjdk.org/jeps/400
Introduce scoped values, which enable the sharing of immutable data
within and across threads. They are preferred to thread-local
variables, especially when using large numbers of virtual threads.
Specify UTF-8 as the default charset of the standard Java APIs. With
this change, APIs that depend upon the default charset will behave
consistently across all implementations, operating systems, locales,
and configurations.
This is an incubation feature (https://openjdk.java.net/jeps/11)
introduced in OpenJDK 20 (JEP 429).
Reimplement Core Reflection with Method Handles
===============================================
https://openjdk.org/jeps/416
Reimplement java.lang.reflect.Method, Constructor, and Field on top of
java.lang.invoke method handles. Making method handles the underlying
mechanism for reflection will reduce the maintenance and development
cost of both the java.lang.reflect and java.lang.invoke APIs.
Vector API
==========
@ -219,6 +315,7 @@ https://openjdk.org/jeps/414
https://openjdk.org/jeps/417
https://openjdk.org/jeps/426
https://openjdk.org/jeps/438
https://openjdk.org/jeps/448
Introduce an API to express vector computations that reliably compile
at runtime to optimal vector hardware instructions on supported CPU
@ -228,7 +325,16 @@ scalar computations.
This is an incubation feature (https://openjdk.java.net/jeps/11)
introduced in OpenJDK 16 (JEP 338). A second round of incubation took
place in OpenJDK 17 (JEP 414), OpenJDK 18 (JEP 417) saw a third,
OpenJDK 19 a fourth (JEP 426) and OpenJDK 20 (JEP 438) sees its fifth.
OpenJDK 19 a fourth (JEP 426), OpenJDK 20 (JEP 438) a fifth and
OpenJDK 21 a sixth (JEP 448).
Internet-Address Resolution SPI
===============================
https://openjdk.org/jeps/418
Define a service-provider interface (SPI) for host name and address
resolution, so that java.net.InetAddress can make use of resolvers
other than the platform's built-in resolver.
Foreign Function & Memory API
=============================
@ -236,6 +342,7 @@ https://openjdk.org/jeps/412
https://openjdk.org/jeps/419
https://openjdk.org/jeps/424
https://openjdk.org/jeps/434
https://openjdk.org/jeps/442
Introduce an API by which Java programs can interoperate with code and
data outside of the Java runtime. By efficiently invoking foreign
@ -250,26 +357,29 @@ It was first introduced in incubation
evolution of the Foreign Memory Access API (OpenJDK 14 through 16) and
Foreign Linker API (OpenJDK 16) (see release notes for
java-17-openjdk). OpenJDK 18 saw a second round of incubation (JEP
419) before its inclusion as a preview in OpenJDK 19 (JEP 424). It
reaches a second preview in OpenJDK 20 (JEP 434).
419) before its inclusion as a preview in OpenJDK 19 (JEP 424) and a
second in OpenJDK 20 (JEP 434). It reaches a third preview in OpenJDK
21 (JEP 442).
Virtual Threads
===============
https://openjdk.org/jeps/425
https://openjdk.org/jeps/436
https://openjdk.org/jeps/444
Introduce virtual threads to the Java Platform. Virtual threads are
lightweight threads that dramatically reduce the effort of writing,
maintaining, and observing high-throughput concurrent applications.
This is a preview feature (http://openjdk.java.net/jeps/12) introduced
in OpenJDK 19 (JEP 425) and reaching its second preview in OpenJDK 20
(JEP 436).
This was a preview feature (http://openjdk.java.net/jeps/12)
introduced in OpenJDK 19 (JEP 425) and reaching its second preview in
OpenJDK 20 (JEP 436). It became final with OpenJDK 21 (JEP 444).
Structured Concurrency
======================
https://openjdk.org/jeps/428
https://openjdk.org/jeps/437
https://openjdk.org/jeps/453
Simplify multithreaded programming by introducing an API for
structured concurrency. Structured concurrency treats multiple tasks
@ -277,6 +387,115 @@ running in different threads as a single unit of work, thereby
streamlining error handling and cancellation, improving reliability,
and enhancing observability.
This is an incubation feature (https://openjdk.java.net/jeps/11)
introduced in OpenJDK 19 (JEP 428). A second round of incubation takes
place in OpenJDK 20 (JEP 437).
This API is now a preview feature (http://openjdk.java.net/jeps/12) in
OpenJDK 21 (JEP 453). It was first introduced in incubation
(https://openjdk.java.net/jeps/11) in OpenJDK 19 (JEP 428) and had a
second round of incubation in OpenJDK 20 (JEP 437).
Scoped Values
=============
https://openjdk.org/jeps/429
Introduce scoped values, which enable the sharing of immutable data
within and across threads. They are preferred to thread-local
variables, especially when using large numbers of virtual threads.
This API is now a preview feature (http://openjdk.java.net/jeps/12)
in OpenJDK 21 (JEP 429). It was first introduced in incubation
(https://openjdk.java.net/jeps/11) in OpenJDK 20 (JEP 429).
Sequenced Collections
=====================
https://openjdk.org/jeps/431
Introduce new interfaces to represent collections with a defined
encounter order. Each such collection has a well-defined first
element, second element, and so forth, up to the last element. It also
provides uniform APIs for accessing its first and last elements, and
for processing its elements in reverse order.
Key Encapsulation Mechanism API
===============================
https://openjdk.org/jeps/452
Introduce an API for key encapsulation mechanisms (KEMs), an
encryption technique for securing symmetric keys using public key
cryptography.
Virtual Machine Enhancements
============================
Generational ZGC
================
https://openjdk.org/jeps/439
Improve application performance by extending the Z Garbage Collector
(ZGC) to maintain separate generations for young and old objects. This
will allow ZGC to collect young objects — which tend to die young —
more frequently.
Tools
=====
Simple Web Server
=================
https://openjdk.org/jeps/408
Provide a command-line tool, `jwebserver`, to start a minimal web
server that serves static files only. No CGI or servlet-like
functionality is available. This tool will be useful for prototyping,
ad-hoc coding, and testing purposes, particularly in educational
contexts.
Code Snippets in Java API Documentation
=======================================
https://openjdk.org/jeps/413
Introduce an @snippet tag for JavaDoc's Standard Doclet, to simplify
the inclusion of example source code in API documentation.
Ports
=====
Linux/RISC-V Port
=================
https://openjdk.org/jeps/422
RISC-V is a free and open-source RISC instruction set architecture
(ISA) designed originally at the University of California, Berkeley,
and now developed collaboratively under the sponsorship of RISC-V
International. It is already supported by a wide range of language
toolchains. With the increasing availability of RISC-V hardware, a
port of the JDK would be valuable.
DEPRECATIONS
============
Deprecate Finalization for Removal
==================================
https://openjdk.org/jeps/421
Deprecate finalization for removal in a future release. Finalization
remains enabled by default for now, but can be disabled to facilitate
early testing. In a future release it will be disabled by default, and
in a later release it will be removed. Maintainers of libraries and
applications that rely upon finalization should consider migrating to
other resource management techniques such as the try-with-resources
statement and cleaners.
Deprecate the Windows 32-bit x86 Port for Removal
=================================================
https://openjdk.org/jeps/449
Deprecate the Windows 32-bit x86 port, with the intent to remove it in
a future release.
Prepare to Disallow the Dynamic Loading of Agents
=================================================
https://openjdk.org/jeps/451
Issue warnings when agents are loaded dynamically into a running
JVM. These warnings aim to prepare users for a future release which
disallows the dynamic loading of agents by default in order to improve
integrity by default. Serviceability tools that load agents at startup
will not cause warnings to be issued in any release.

View File

@ -1,16 +1,14 @@
# java-latest-openjdk-portable
This package contains the latest rolling release of OpenJDK. OpenJDK
has a release cadence of six months, with a new release in March and
September each year.
The java-latest-openjdk-portable package
=======
Rolling release of (usually) STSs OpenJDK
OpenJDK has release cadence of 6 months, but 3/4 of them are Short Term Supported for 6 months only. This package is designed to harbor them. Currently it is build of OpenJDK 12. LTSs will go also as separate packages.
The current release is OpenJDK 21. For a list of major changes from
OpenJDK 20, see the NEWS file included in this package and the
upstream release page:
JDK12 is current release of Java platform. It is bringing many cool improvements - https://openjdk.java.net/projects/jdk/12/ and is landing to your Fedora. Where it will be maintained for f28 and newer. Unluckily, this package is STS (short term support) version. Between individual LTS there will be always several STS. Again, please see announcement: http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html and See java SIG plans: https://jvanek.fedorapeople.org/devconf/2018/changesInjavaReleaseProcess.pdf . So this is rolling release of all STSs to come. Its fate during the release of fresh LTS is yet to be decided. You will always be allowed to install LTS in fedora build root, alongside with latest STS via alternatives.
https://openjdk.java.net/projects/jdk/21/
See announcement: http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html
See java SIG plans: https://jvanek.fedorapeople.org/devconf/2018/changesInjavaReleaseProcess.pdf
https://bugzilla.redhat.com/show_bug.cgi?id=1557371#c0
https://fedoraproject.org/wiki/Changes/java-openjdk-10
https://fedoraproject.org/wiki/Changes/java-11-openjdk-TechPreview
This package is intended for those who want to follow the latest
OpenJDK releases. Long term support versions of OpenJDK are available
in the java-1.8.0-openjdk, java-11-openjdk and java-17-openjdk
packages.

100
alt-java.c Normal file
View File

@ -0,0 +1,100 @@
/*
* Copyright (C) 2023 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Red Hat designates this
* particular file as subject to the "Classpath" exception as provided
* by Red Hat in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#include <errno.h>
#include <libgen.h>
#include <linux/limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/prctl.h>
#include <unistd.h>
/* Per task speculation control */
#ifndef PR_GET_SPECULATION_CTRL
# define PR_GET_SPECULATION_CTRL 52
#endif
#ifndef PR_SET_SPECULATION_CTRL
# define PR_SET_SPECULATION_CTRL 53
#endif
/* Speculation control variants */
#ifndef PR_SPEC_STORE_BYPASS
# define PR_SPEC_STORE_BYPASS 0
#endif
/* Return and control values for PR_SET/GET_SPECULATION_CTRL */
#ifndef PR_SPEC_NOT_AFFECTED
# define PR_SPEC_NOT_AFFECTED 0
#endif
#ifndef PR_SPEC_PRCTL
# define PR_SPEC_PRCTL (1UL << 0)
#endif
#ifndef PR_SPEC_ENABLE
# define PR_SPEC_ENABLE (1UL << 1)
#endif
#ifndef PR_SPEC_DISABLE
# define PR_SPEC_DISABLE (1UL << 2)
#endif
#ifndef PR_SPEC_FORCE_DISABLE
# define PR_SPEC_FORCE_DISABLE (1UL << 3)
#endif
#ifndef PR_SPEC_DISABLE_NOEXEC
# define PR_SPEC_DISABLE_NOEXEC (1UL << 4)
#endif
static void set_speculation() {
#if defined(__linux__) && defined(__x86_64__)
// PR_SPEC_DISABLE_NOEXEC doesn't survive execve, so we can't use it
// if ( prctl(PR_SET_SPECULATION_CTRL,
// PR_SPEC_STORE_BYPASS,
// PR_SPEC_DISABLE_NOEXEC, 0, 0) == 0 ) {
// return;
// }
prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0);
#else
#warning alt-java requested but SSB mitigation not available on this platform.
#endif
}
int main(int argc, char **argv) {
set_speculation();
char our_name[PATH_MAX], java_name[PATH_MAX];
ssize_t len = readlink("/proc/self/exe", our_name, PATH_MAX - 1);
if (len < 0) {
perror("I can't find myself");
exit(2);
}
our_name[len] = '\0'; // readlink(2) doesn't append a null byte
char *path = dirname(our_name);
strncpy(java_name, path, PATH_MAX - 1);
size_t remaining_bytes = PATH_MAX - strlen(path) - 1;
strncat(java_name, "/java", remaining_bytes);
execv(java_name, argv);
fprintf(stderr, "%s failed to launch: %s\n", java_name, strerror(errno));
exit(1);
}

54
discover_trees.sh Executable file
View File

@ -0,0 +1,54 @@
#!/bin/sh
# Copyright (C) 2020 Red Hat, Inc.
# Written by Andrew John Hughes <gnu.andrew@redhat.com>.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
TREE=${1}
if test "x${TREE}" = "x"; then
TREE=${PWD}
fi
if [ -e ${TREE}/nashorn/.hg -o -e ${TREE}/nashorn/merge.changeset ] ; then
NASHORN="nashorn" ;
fi
if [ -e ${TREE}/corba/.hg -o -e ${TREE}/corba/merge.changeset ] ; then
CORBA="corba";
fi
if [ -e ${TREE}/jaxp/.hg -o -e ${TREE}/jaxp/merge.changeset ] ; then
JAXP="jaxp";
fi
if [ -e ${TREE}/jaxws/.hg -o -e ${TREE}/jaxws/merge.changeset ] ; then
JAXWS="jaxws";
fi
if [ -e ${TREE}/langtools/.hg -o -e ${TREE}/langtools/merge.changeset ] ; then
LANGTOOLS="langtools";
fi
if [ -e ${TREE}/jdk/.hg -o -e ${TREE}/jdk/merge.changeset ] ; then
JDK="jdk";
fi
if [ -e ${TREE}/hotspot/.hg -o -e ${TREE}/hotspot/merge.changeset ] ; then
HOTSPOT="hotspot";
fi
SUBTREES="${CORBA} ${JAXP} ${JAXWS} ${LANGTOOLS} ${NASHORN} ${JDK} ${HOTSPOT}";
echo ${SUBTREES}

File diff suppressed because it is too large Load Diff

View File

@ -7,8 +7,8 @@
#
# In any case you have to set PROJECT_NAME REPO_NAME and VERSION. eg:
# PROJECT_NAME=openjdk
# REPO_NAME=jdk18u
# VERSION=jdk-18.0.1+10
# REPO_NAME=jdk21u
# VERSION=jdk-21.0.1+12
# or to eg prepare systemtap:
# icedtea7's jstack and other tapsets
# VERSION=6327cf1cea9e
@ -29,10 +29,11 @@ set -e
OPENJDK_URL_DEFAULT=https://github.com
COMPRESSION_DEFAULT=xz
# Corresponding IcedTea version
ICEDTEA_VERSION=15.0
if [ "x$1" = "xhelp" ] ; then
if [ "x$VERSION" = "x" ] ; then
VERSION="<unspecified>";
fi
echo -e "Behaviour may be specified by setting the following variables:\n"
echo "VERSION - the version of the specified OpenJDK project"
echo "PROJECT_NAME -- the name of the OpenJDK project being archived (optional; only needed by defaults)"
@ -40,8 +41,8 @@ if [ "x$1" = "xhelp" ] ; then
echo "OPENJDK_URL - the URL to retrieve code from (optional; defaults to ${OPENJDK_URL_DEFAULT})"
echo "COMPRESSION - the compression type to use (optional; defaults to ${COMPRESSION_DEFAULT})"
echo "FILE_NAME_ROOT - name of the archive, minus extensions (optional; defaults to PROJECT_NAME-REPO_NAME-VERSION)"
echo "REPO_ROOT - the location of the Git repository to archive (optional; defaults to OPENJDK_URL/PROJECT_NAME/REPO_NAME)"
echo "TO_COMPRESS - what part of clone to pack (default is openjdk)"
echo "REPO_ROOT - the location of the Git repository to archive (optional; defaults to OPENJDK_URL/PROJECT_NAME/REPO_NAME.git)"
echo "TO_COMPRESS - what part of clone to pack (default is ${VERSION})"
echo "BOOT_JDK - the bootstrap JDK to satisfy the configure run"
exit 1;
fi
@ -52,6 +53,7 @@ if [ "x$VERSION" = "x" ] ; then
exit 2
fi
echo "Version: ${VERSION}"
NUM_VER=${VERSION##jdk-}
RELEASE_VER=${NUM_VER%%+*}
BUILD_VER=${NUM_VER##*+}
@ -117,8 +119,8 @@ if [ "x$REPO_ROOT" = "x" ] ; then
fi;
if [ "x$TO_COMPRESS" = "x" ] ; then
TO_COMPRESS="openjdk"
echo "No targets to be compressed specified, ; default to ${TO_COMPRESS}"
TO_COMPRESS="${VERSION}"
echo "No targets to be compressed specified ; default to ${TO_COMPRESS}"
fi;
echo -e "Settings:"
@ -140,35 +142,36 @@ else
mkdir "${FILE_NAME_ROOT}"
pushd "${FILE_NAME_ROOT}"
echo "Cloning ${VERSION} root repository from ${REPO_ROOT}"
git clone -b ${VERSION} ${REPO_ROOT} openjdk
git clone -b ${VERSION} ${REPO_ROOT} ${VERSION}
popd
fi
pushd "${FILE_NAME_ROOT}"
# Generate .src-rev so build has knowledge of the revision the tarball was created from
mkdir build
pushd build
sh ${PWD}/../openjdk/configure --with-boot-jdk=${BOOT_JDK}
sh ${PWD}/../${VERSION}/configure --with-boot-jdk=${BOOT_JDK}
make store-source-revision
popd
rm -rf build
# Remove commit checks
echo "Removing $(find openjdk -name '.jcheck' -print)"
find openjdk -name '.jcheck' -print0 | xargs -0 rm -rf
echo "Removing $(find ${VERSION} -name '.jcheck' -print)"
find ${VERSION} -name '.jcheck' -print0 | xargs -0 rm -r
# Remove history and GHA
echo "find openjdk -name '.hgtags'"
find openjdk -name '.hgtags' -exec rm -fv '{}' '+'
echo "find openjdk -name '.hgignore'"
find openjdk -name '.hgignore' -exec rm -fv '{}' '+'
echo "find openjdk -name '.gitattributes'"
find openjdk -name '.gitattributes' -exec rm -fv '{}' '+'
echo "find openjdk -name '.gitignore'"
find openjdk -name '.gitignore' -exec rm -fv '{}' '+'
echo "find openjdk -name '.git'"
find openjdk -name '.git' -exec rm -rfv '{}' '+'
echo "find openjdk -name '.github'"
find openjdk -name '.github' -exec rm -rfv '{}' '+'
echo "find ${VERSION} -name '.hgtags'"
find ${VERSION} -name '.hgtags' -exec rm -fv '{}' '+'
echo "find ${VERSION} -name '.hgignore'"
find ${VERSION} -name '.hgignore' -exec rm -fv '{}' '+'
echo "find ${VERSION} -name '.gitattributes'"
find ${VERSION} -name '.gitattributes' -exec rm -fv '{}' '+'
echo "find ${VERSION} -name '.gitignore'"
find ${VERSION} -name '.gitignore' -exec rm -fv '{}' '+'
echo "find ${VERSION} -name '.git'"
find ${VERSION} -name '.git' -exec rm -rfv '{}' '+'
echo "find ${VERSION} -name '.github'"
find ${VERSION} -name '.github' -exec rm -rfv '{}' '+'
echo "Compressing remaining forest"
if [ "X$COMPRESSION" = "Xxz" ] ; then

View File

@ -1,192 +1 @@
#!/bin/bash
# Copyright (C) 2019 Red Hat, Inc.
# Written by Andrew John Hughes <gnu.andrew@redhat.com>.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
ICEDTEA_USE_VCS=true
ICEDTEA_VERSION=3.15.0
ICEDTEA_URL=https://icedtea.classpath.org/download/source
ICEDTEA_SIGNING_KEY=CFDA0F9B35964222
ICEDTEA_HG_URL=https://icedtea.classpath.org/hg/icedtea11
set -e
RPM_DIR=${PWD}
if [ ! -f ${RPM_DIR}/jconsole.desktop.in ] ; then
echo "Not in RPM source tree.";
exit 1;
fi
if test "x${TMPDIR}" = "x"; then
TMPDIR=/tmp;
fi
WORKDIR=${TMPDIR}/it.sync
echo "Using working directory ${WORKDIR}"
mkdir ${WORKDIR}
pushd ${WORKDIR}
if test "x${WGET}" = "x"; then
WGET=$(which wget);
if test "x${WGET}" = "x"; then
echo "wget not found";
exit 1;
fi
fi
if test "x${TAR}" = "x"; then
TAR=$(which tar)
if test "x${TAR}" = "x"; then
echo "tar not found";
exit 2;
fi
fi
echo "Dependencies:";
echo -e "\tWGET: ${WGET}";
echo -e "\tTAR: ${TAR}\n";
if test "x${ICEDTEA_USE_VCS}" = "xtrue"; then
echo "Mode: Using VCS";
if test "x${GREP}" = "x"; then
GREP=$(which grep);
if test "x${GREP}" = "x"; then
echo "grep not found";
exit 3;
fi
fi
if test "x${CUT}" = "x"; then
CUT=$(which cut);
if test "x${CUT}" = "x"; then
echo "cut not found";
exit 4;
fi
fi
if test "x${TR}" = "x"; then
TR=$(which tr);
if test "x${TR}" = "x"; then
echo "tr not found";
exit 5;
fi
fi
if test "x${HG}" = "x"; then
HG=$(which hg);
if test "x${HG}" = "x"; then
echo "hg not found";
exit 6;
fi
fi
echo "Dependencies:";
echo -e "\tGREP: ${GREP}";
echo -e "\tCUT: ${CUT}";
echo -e "\tTR: ${TR}";
echo -e "\tHG: ${HG}";
echo "Checking out repository from VCS...";
${HG} clone ${ICEDTEA_HG_URL} icedtea
echo "Obtaining version from configure.ac...";
ROOT_VER=$(${GREP} '^AC_INIT' icedtea/configure.ac|${CUT} -d ',' -f 2|${TR} -d '[][:space:]')
echo "Root version from configure: ${ROOT_VER}";
VCS_REV=$(${HG} log -R icedtea --template '{node|short}' -r tip)
echo "VCS revision: ${VCS_REV}";
ICEDTEA_VERSION="${ROOT_VER}-${VCS_REV}"
echo "Creating icedtea-${ICEDTEA_VERSION}";
mkdir icedtea-${ICEDTEA_VERSION}
echo "Copying required files from checkout to icedtea-${ICEDTEA_VERSION}";
# Commented out for now as IcedTea 6's jconsole.desktop.in is outdated
#cp -a icedtea/jconsole.desktop.in ../icedtea-${ICEDTEA_VERSION}
cp -a ${RPM_DIR}/jconsole.desktop.in icedtea-${ICEDTEA_VERSION}
cp -a icedtea/tapset icedtea-${ICEDTEA_VERSION}
rm -rf icedtea
else
echo "Mode: Using tarball";
if test "x${ICEDTEA_VERSION}" = "x"; then
echo "No IcedTea version specified for tarball download.";
exit 3;
fi
if test "x${CHECKSUM}" = "x"; then
CHECKSUM=$(which sha256sum)
if test "x${CHECKSUM}" = "x"; then
echo "sha256sum not found";
exit 4;
fi
fi
if test "x${PGP}" = "x"; then
PGP=$(which gpg)
if test "x${PGP}" = "x"; then
echo "gpg not found";
exit 5;
fi
fi
echo "Dependencies:";
echo -e "\tCHECKSUM: ${CHECKSUM}";
echo -e "\tPGP: ${PGP}\n";
echo "Checking for IcedTea signing key ${ICEDTEA_SIGNING_KEY}...";
if ! gpg --list-keys ${ICEDTEA_SIGNING_KEY}; then
echo "IcedTea signing key ${ICEDTEA_SIGNING_KEY} not installed.";
exit 6;
fi
echo "Downloading IcedTea release tarball...";
${WGET} -v ${ICEDTEA_URL}/icedtea-${ICEDTEA_VERSION}.tar.xz
echo "Downloading IcedTea tarball signature...";
${WGET} -v ${ICEDTEA_URL}/icedtea-${ICEDTEA_VERSION}.tar.xz.sig
echo "Downloading IcedTea tarball checksums...";
${WGET} -v ${ICEDTEA_URL}/icedtea-${ICEDTEA_VERSION}.sha256
echo "Verifying checksums...";
${CHECKSUM} --check --ignore-missing icedtea-${ICEDTEA_VERSION}.sha256
echo "Checking signature...";
${PGP} --verify icedtea-${ICEDTEA_VERSION}.tar.xz.sig
echo "Extracting files...";
${TAR} xJf icedtea-${ICEDTEA_VERSION}.tar.xz \
icedtea-${ICEDTEA_VERSION}/tapset \
icedtea-${ICEDTEA_VERSION}/jconsole.desktop.in
rm -vf icedtea-${ICEDTEA_VERSION}.tar.xz
rm -vf icedtea-${ICEDTEA_VERSION}.tar.xz.sig
rm -vf icedtea-${ICEDTEA_VERSION}.sha256
fi
echo "Replacing desktop files...";
mv -v icedtea-${ICEDTEA_VERSION}/jconsole.desktop.in ${RPM_DIR}
echo "Creating new tapset tarball...";
mv -v icedtea-${ICEDTEA_VERSION} openjdk
${TAR} cJf ${RPM_DIR}/tapsets-icedtea-${ICEDTEA_VERSION}.tar.xz openjdk
rm -rvf openjdk
popd
rm -rf ${WORKDIR}
# this file is intentionally not here, as portable builds do not have desktop integration

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1 @@
[Desktop Entry]
Name=OpenJDK @JAVA_VER@ for @target_cpu@ Monitoring & Management Console (@OPENJDK_VER@)
Comment=Monitor and manage OpenJDK applications
Exec=_SDKBINDIR_/jconsole
Icon=java-@JAVA_VER@-@JAVA_VENDOR@
Terminal=false
Type=Application
StartupWMClass=sun-tools-jconsole-JConsole
Categories=Development;Profiling;Java;
Version=1.0
# this file is intentionally not here, as portable builds do not have desktop integration

View File

@ -0,0 +1,125 @@
commit d0523302416bc6507696f20d1068f16427bcf6b8
Author: Andrew Hughes <gnu.andrew@redhat.com>
Date: Thu Aug 24 01:23:49 2023 +0100
8009550: PlatformPCSC should load versioned so
diff --git a/src/java.base/share/classes/sun/security/util/Debug.java b/src/java.base/share/classes/sun/security/util/Debug.java
index bff273c6548..e5a6b288ff8 100644
--- a/src/java.base/share/classes/sun/security/util/Debug.java
+++ b/src/java.base/share/classes/sun/security/util/Debug.java
@@ -81,6 +81,7 @@ public static void Help()
System.err.println("logincontext login context results");
System.err.println("jca JCA engine class debugging");
System.err.println("keystore KeyStore debugging");
+ System.err.println("pcsc Smartcard library debugging");
System.err.println("policy loading and granting");
System.err.println("provider security provider debugging");
System.err.println("pkcs11 PKCS11 session manager debugging");
diff --git a/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java b/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java
index bacff32efbc..d9f605ada1e 100644
--- a/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java
+++ b/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2005, 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2023, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -46,8 +47,13 @@ class PlatformPCSC {
private static final String PROP_NAME = "sun.security.smartcardio.library";
- private static final String LIB1 = "/usr/$LIBISA/libpcsclite.so";
- private static final String LIB2 = "/usr/local/$LIBISA/libpcsclite.so";
+ private static final String[] LIB_TEMPLATES = { "/usr/$LIBISA/libpcsclite.so",
+ "/usr/local/$LIBISA/libpcsclite.so",
+ "/usr/lib/$ARCH-linux-gnu/libpcsclite.so",
+ "/usr/lib/arm-linux-gnueabi/libpcsclite.so",
+ "/usr/lib/arm-linux-gnueabihf/libpcsclite.so",
+ "/usr/lib/$ARCH-kfreebsd-gnu/libpcsclite.so" };
+ private static final String[] LIB_SUFFIXES = { ".1", ".0", "" };
private static final String PCSC_FRAMEWORK = "/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC";
PlatformPCSC() {
@@ -73,23 +79,38 @@ public Throwable run() {
});
// expand $LIBISA to the system specific directory name for libraries
+ // expand $ARCH to the Debian system architecture in use
private static String expand(String lib) {
int k = lib.indexOf("$LIBISA");
- if (k == -1) {
- return lib;
+ if (k != -1) {
+ String libDir;
+ if ("64".equals(System.getProperty("sun.arch.data.model"))) {
+ // assume Linux convention
+ libDir = "lib64";
+ } else {
+ // must be 32-bit
+ libDir = "lib";
+ }
+ lib = lib.replace("$LIBISA", libDir);
}
- String s1 = lib.substring(0, k);
- String s2 = lib.substring(k + 7);
- String libDir;
- if ("64".equals(System.getProperty("sun.arch.data.model"))) {
- // assume Linux convention
- libDir = "lib64";
- } else {
- // must be 32-bit
- libDir = "lib";
+
+ k = lib.indexOf("$ARCH");
+ if (k != -1) {
+ String arch = System.getProperty("os.arch");
+ lib = lib.replace("$ARCH", getDebianArchitecture(arch));
}
- String s = s1 + libDir + s2;
- return s;
+
+ return lib;
+ }
+
+ private static String getDebianArchitecture(String jdkArch) {
+ return switch (jdkArch) {
+ case "amd64" -> "x86_64";
+ case "ppc" -> "powerpc";
+ case "ppc64" -> "powerpc64";
+ case "ppc64le" -> "powerpc64le";
+ default -> jdkArch;
+ };
}
private static String getLibraryName() throws IOException {
@@ -98,15 +119,18 @@ private static String getLibraryName() throws IOException {
if (lib.length() != 0) {
return lib;
}
- lib = expand(LIB1);
- if (new File(lib).isFile()) {
- // if LIB1 exists, use that
- return lib;
- }
- lib = expand(LIB2);
- if (new File(lib).isFile()) {
- // if LIB2 exists, use that
- return lib;
+
+ for (String template : LIB_TEMPLATES) {
+ for (String suffix : LIB_SUFFIXES) {
+ lib = expand(template) + suffix;
+ if (debug != null) {
+ debug.println("Looking for " + lib);
+ }
+ if (new File(lib).isFile()) {
+ // if library exists, use that
+ return lib;
+ }
+ }
}
// As of macos 11, framework libraries have been removed from the file

View File

@ -1 +0,0 @@

View File

@ -1 +0,0 @@

1906
jdk8311630-s390_ffmapi.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +0,0 @@
name = NSS
nssLibraryDirectory = @NSS_LIBDIR@
nssDbMode = noDb
attributes = compatibility
handleStartupErrors = ignoreMultipleInitialisation

View File

@ -1,8 +0,0 @@
name = NSS-FIPS
nssLibraryDirectory = @NSS_LIBDIR@
nssSecmodDirectory = sql:/etc/pki/nssdb
nssDbMode = readOnly
nssModule = fips
attributes(*,CKO_SECRET_KEY,CKK_GENERIC_SECRET)={ CKA_SIGN=true }

View File

@ -18,8 +18,8 @@
OLD_RELEASE=$1
NEW_RELEASE=$2
SUBDIR=$3
REPO=$4
REPO=$3
SUBDIR=$4
SCRIPT_DIR=$(dirname ${0})
if test "x${SUBDIR}" = "x"; then

View File

@ -1,16 +0,0 @@
diff -r 618ad1237e73 src/java.desktop/share/classes/java/awt/Toolkit.java
--- a/src/java.desktop/share/classes/java/awt/Toolkit.java Thu Jun 13 19:37:49 2019 +0200
+++ b/src/java.desktop/share/classes/java/awt/Toolkit.java Thu Jul 04 10:35:42 2019 +0200
@@ -595,7 +595,11 @@
toolkit = new HeadlessToolkit(toolkit);
}
if (!GraphicsEnvironment.isHeadless()) {
- loadAssistiveTechnologies();
+ try {
+ loadAssistiveTechnologies();
+ } catch (AWTError error) {
+ // ignore silently
+ }
}
}
return toolkit;

View File

@ -1,12 +0,0 @@
diff --git openjdk.orig/src/java.base/share/conf/security/java.security openjdk/src/java.base/share/conf/security/java.security
index 68a9c1a2d08..7aa25eb2cb7 100644
--- openjdk.orig/src/java.base/share/conf/security/java.security
+++ openjdk/src/java.base/share/conf/security/java.security
@@ -78,6 +78,7 @@ security.provider.tbd=SunMSCAPI
security.provider.tbd=Apple
#endif
security.provider.tbd=SunPKCS11
+#security.provider.tbd=SunPKCS11 ${java.home}/lib/security/nss.cfg
#
# Security providers used when FIPS mode support is active

View File

@ -1,20 +0,0 @@
--- openjdk/src/java.base/share/conf/security/java.security
+++ openjdk/src/java.base/share/conf/security/java.security
@@ -304,6 +304,8 @@
#
package.access=sun.misc.,\
sun.reflect.,\
+ org.GNOME.Accessibility.,\
+ org.GNOME.Bonobo.,\
#
# List of comma-separated packages that start with or equal this string
@@ -316,6 +318,8 @@
#
package.definition=sun.misc.,\
sun.reflect.,\
+ org.GNOME.Accessibility.,\
+ org.GNOME.Bonobo.,\
#
# Determines whether this properties file can be appended to

View File

@ -1,15 +0,0 @@
diff --git a/openjdk/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java b/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java
index bacff32efbc..ff7b3dcc81c 100644
--- openjdk/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java
+++ openjdk/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java
@@ -46,8 +46,8 @@ class PlatformPCSC {
private static final String PROP_NAME = "sun.security.smartcardio.library";
- private static final String LIB1 = "/usr/$LIBISA/libpcsclite.so";
- private static final String LIB2 = "/usr/local/$LIBISA/libpcsclite.so";
+ private static final String LIB1 = "/usr/$LIBISA/libpcsclite.so.1";
+ private static final String LIB2 = "/usr/local/$LIBISA/libpcsclite.so.1";
private static final String PCSC_FRAMEWORK = "/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC";
PlatformPCSC() {

View File

@ -1,117 +0,0 @@
diff --git openjdk.orig/make/modules/java.base/Launcher.gmk openjdk/make/modules/java.base/Launcher.gmk
index 700ddefda49..2882de68eb2 100644
--- openjdk.orig/make/modules/java.base/Launcher.gmk
+++ openjdk/make/modules/java.base/Launcher.gmk
@@ -41,6 +41,14 @@ $(eval $(call SetupBuildLauncher, java, \
OPTIMIZATION := HIGH, \
))
+#Wno-error=cpp is present to allow commented warning in ifdef part of main.c
+$(eval $(call SetupBuildLauncher, alt-java, \
+ CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES -DREDHAT_ALT_JAVA -Wno-error=cpp, \
+ EXTRA_RCFLAGS := $(JAVA_RCFLAGS), \
+ VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \
+ OPTIMIZATION := HIGH, \
+))
+
ifeq ($(call isTargetOs, windows), true)
$(eval $(call SetupBuildLauncher, javaw, \
CFLAGS := -DJAVAW -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES, \
diff --git openjdk.orig/src/java.base/share/native/launcher/alt_main.h openjdk/src/java.base/share/native/launcher/alt_main.h
new file mode 100644
index 00000000000..697df2898ac
--- /dev/null
+++ openjdk/src/java.base/share/native/launcher/alt_main.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2019, Red Hat, Inc. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#ifdef REDHAT_ALT_JAVA
+
+#include <sys/prctl.h>
+
+
+/* Per task speculation control */
+#ifndef PR_GET_SPECULATION_CTRL
+# define PR_GET_SPECULATION_CTRL 52
+#endif
+#ifndef PR_SET_SPECULATION_CTRL
+# define PR_SET_SPECULATION_CTRL 53
+#endif
+/* Speculation control variants */
+#ifndef PR_SPEC_STORE_BYPASS
+# define PR_SPEC_STORE_BYPASS 0
+#endif
+/* Return and control values for PR_SET/GET_SPECULATION_CTRL */
+
+#ifndef PR_SPEC_NOT_AFFECTED
+# define PR_SPEC_NOT_AFFECTED 0
+#endif
+#ifndef PR_SPEC_PRCTL
+# define PR_SPEC_PRCTL (1UL << 0)
+#endif
+#ifndef PR_SPEC_ENABLE
+# define PR_SPEC_ENABLE (1UL << 1)
+#endif
+#ifndef PR_SPEC_DISABLE
+# define PR_SPEC_DISABLE (1UL << 2)
+#endif
+#ifndef PR_SPEC_FORCE_DISABLE
+# define PR_SPEC_FORCE_DISABLE (1UL << 3)
+#endif
+#ifndef PR_SPEC_DISABLE_NOEXEC
+# define PR_SPEC_DISABLE_NOEXEC (1UL << 4)
+#endif
+
+static void set_speculation() __attribute__((constructor));
+static void set_speculation() {
+ if ( prctl(PR_SET_SPECULATION_CTRL,
+ PR_SPEC_STORE_BYPASS,
+ PR_SPEC_DISABLE_NOEXEC, 0, 0) == 0 ) {
+ return;
+ }
+ prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0);
+}
+
+#endif // REDHAT_ALT_JAVA
diff --git openjdk.orig/src/java.base/share/native/launcher/main.c openjdk/src/java.base/share/native/launcher/main.c
index b734fe2ba78..79dc8307650 100644
--- openjdk.orig/src/java.base/share/native/launcher/main.c
+++ openjdk/src/java.base/share/native/launcher/main.c
@@ -34,6 +34,14 @@
#include "jli_util.h"
#include "jni.h"
+#ifdef REDHAT_ALT_JAVA
+#if defined(__linux__) && defined(__x86_64__)
+#include "alt_main.h"
+#else
+#warning alt-java requested but SSB mitigation not available on this platform.
+#endif
+#endif
+
/*
* Entry point.
*/

View File

@ -1,19 +0,0 @@
Remove uses of FAR in jpeg code
Upstream libjpeg-trubo removed the (empty) FAR macro:
http://sourceforge.net/p/libjpeg-turbo/code/1312/
Adjust our code to not use the undefined FAR macro anymore.
diff --git a/jdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c b/jdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c
--- openjdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c
+++ openjdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c
@@ -1385,7 +1385,7 @@
/* and fill it in */
dst_ptr = icc_data;
for (seq_no = first; seq_no < last; seq_no++) {
- JOCTET FAR *src_ptr = icc_markers[seq_no]->data + ICC_OVERHEAD_LEN;
+ JOCTET *src_ptr = icc_markers[seq_no]->data + ICC_OVERHEAD_LEN;
unsigned int length =
icc_markers[seq_no]->data_length - ICC_OVERHEAD_LEN;

View File

@ -1 +1 @@
SHA512 (openjdk-jdk20u-jdk-20.0.2+9.tar.xz) = ce5383228c42f612e79e65300c048e91ec3ae5941b6769c67c05aa4e98299f8044b2945e64cd38b2e60f3c7558e608a3baa20cf7af2b0108d48c865a71ee1979
SHA512 (openjdk-21.0.1+12.tar.xz) = 96513e1346dea623183ae68f88690aa7ea41d65f6a2499b7f9c08954643dd2a6f10d3f4f529fc34e00ff14e8c1bd3764ac78a5c669937a200c910ebcc74e782b