diff --git a/.gitignore b/.gitignore
index bd6fdff..b705f93 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
 SOURCES/shenandoah-jdk11-shenandoah-jdk-11.0.8+10-4curve.tar.xz
-SOURCES/systemtap_3.2_tapsets_hg-icedtea8-9d464368e06d.tar.xz
+SOURCES/tapsets-icedtea-3.15.0.tar.xz
diff --git a/.java-11-openjdk.metadata b/.java-11-openjdk.metadata
index 2e7ceca..6163a15 100644
--- a/.java-11-openjdk.metadata
+++ b/.java-11-openjdk.metadata
@@ -1,2 +1,2 @@
 96b0432148cbf9743ef57d6645600dbcc5c25bb0 SOURCES/shenandoah-jdk11-shenandoah-jdk-11.0.8+10-4curve.tar.xz
-cd8bf91753b9eb1401cfc529e78517105fc66011 SOURCES/systemtap_3.2_tapsets_hg-icedtea8-9d464368e06d.tar.xz
+7ae2cba67467825b2c2a5fec7aea041865023002 SOURCES/tapsets-icedtea-3.15.0.tar.xz
diff --git a/SOURCES/jconsole.desktop.in b/SOURCES/jconsole.desktop.in
index a8917c1..8a3b04d 100644
--- a/SOURCES/jconsole.desktop.in
+++ b/SOURCES/jconsole.desktop.in
@@ -1,8 +1,8 @@
 [Desktop Entry]
-Name=OpenJDK @JAVA_MAJOR_VERSION@ Monitoring & Management Console @ARCH@
-Comment=Monitor and manage OpenJDK @JAVA_MAJOR_VERSION@ applications for @ARCH@
-Exec=@JAVA_HOME@/jconsole
-Icon=java-@JAVA_MAJOR_VERSION@-@JAVA_VENDOR@
+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
diff --git a/SOURCES/jdk8227269-rh1826915-slow_class_loading_with_jdwp.patch b/SOURCES/jdk8227269-rh1826915-slow_class_loading_with_jdwp.patch
new file mode 100644
index 0000000..8c33e40
--- /dev/null
+++ b/SOURCES/jdk8227269-rh1826915-slow_class_loading_with_jdwp.patch
@@ -0,0 +1,481 @@
+# HG changeset patch
+# User rkennke
+# Date 1579704902 -3600
+#      Wed Jan 22 15:55:02 2020 +0100
+# Node ID 63a288f3f25a5785460fa25756bd7d1e532cd874
+# Parent  ca116bb90caf334f8a78c6c763321f7c76452540
+8227269: Slow class loading when running with JDWP
+Reviewed-by: sspitsyn, cjplummer
+
+diff --git a/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.c b/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.c
+--- a/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.c
++++ b/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.c
+@@ -22,273 +22,204 @@
+  * or visit www.oracle.com if you need additional information or have any
+  * questions.
+  */
++
+ /*
+  * This module tracks classes that have been prepared, so as to
+- * be able to compute which have been unloaded.  On VM start-up
+- * all prepared classes are put in a table.  As class prepare
+- * events come in they are added to the table.  After an unload
+- * event or series of them, the VM can be asked for the list
+- * of classes; this list is compared against the table keep by
+- * this module, any classes no longer present are known to
+- * have been unloaded.
+- *
+- * For efficient access, classes are keep in a hash table.
+- * Each slot in the hash table has a linked list of KlassNode.
+- *
+- * Comparing current set of classes is compared with previous
+- * set by transferring all classes in the current set into
+- * a new table, any that remain in the old table have been
+- * unloaded.
++ * be able to report which have been unloaded. On VM start-up
++ * and whenever new classes are loaded, all prepared classes'
++ * signatures are attached as JVMTI tag to the class object.
++ * Class unloading is tracked by registering
++ * ObjectFree callback on class objects. When this happens, we find
++ * the signature of the unloaded class(es) and report them back
++ * to the event handler to synthesize class-unload-events.
+  */
+ 
+ #include "util.h"
+ #include "bag.h"
+ #include "classTrack.h"
+ 
+-/* ClassTrack hash table slot count */
+-#define CT_HASH_SLOT_COUNT 263    /* Prime which eauals 4k+3 for some k */
++#define NOT_TAGGED 0
+ 
+-typedef struct KlassNode {
+-    jclass klass;            /* weak global reference */
+-    char *signature;         /* class signature */
+-    struct KlassNode *next;  /* next node in this slot */
+-} KlassNode;
++/*
++ * The JVMTI tracking env to keep track of klass tags for class-unloads
++ */
++static jvmtiEnv* trackingEnv;
++
++/*
++ * A bag containing all the deleted classes' signatures. Must be accessed under
++ * classTrackLock.
++ */
++struct bag* deletedSignatures;
+ 
+ /*
+- * Hash table of prepared classes.  Each entry is a pointer
+- * to a linked list of KlassNode.
++ * Lock to keep integrity of deletedSignatures.
+  */
+-static KlassNode **table;
++static jrawMonitorID classTrackLock;
+ 
+ /*
+- * Return slot in hash table to use for this class.
++ * Invoke the callback when classes are freed, find and record the signature
++ * in deletedSignatures. Those are only used in addPreparedClass() by the
++ * same thread.
+  */
+-static jint
+-hashKlass(jclass klass)
++static void JNICALL
++cbTrackingObjectFree(jvmtiEnv* jvmti_env, jlong tag)
+ {
+-    jint hashCode = objectHashCode(klass);
+-    return abs(hashCode) % CT_HASH_SLOT_COUNT;
++    debugMonitorEnter(classTrackLock);
++    if (deletedSignatures == NULL) {
++      debugMonitorExit(classTrackLock);
++      return;
++    }
++    *(char**)bagAdd(deletedSignatures) = (char*)tag;
++
++    debugMonitorExit(classTrackLock);
+ }
+ 
+ /*
+- * Transfer a node (which represents klass) from the current
+- * table to the new table.
+- */
+-static void
+-transferClass(JNIEnv *env, jclass klass, KlassNode **newTable) {
+-    jint slot = hashKlass(klass);
+-    KlassNode **head = &table[slot];
+-    KlassNode **newHead = &newTable[slot];
+-    KlassNode **nodePtr;
+-    KlassNode *node;
+-
+-    /* Search the node list of the current table for klass */
+-    for (nodePtr = head; node = *nodePtr, node != NULL; nodePtr = &(node->next)) {
+-        if (isSameObject(env, klass, node->klass)) {
+-            /* Match found transfer node */
+-
+-            /* unlink from old list */
+-            *nodePtr = node->next;
+-
+-            /* insert in new list */
+-            node->next = *newHead;
+-            *newHead = node;
+-
+-            return;
+-        }
+-    }
+-
+-    /* we haven't found the class, only unloads should have happenned,
+-     * so the only reason a class should not have been found is
+-     * that it is not prepared yet, in which case we don't want it.
+-     * Asset that the above is true.
+-     */
+-/**** the HotSpot VM doesn't create prepare events for some internal classes ***
+-    JDI_ASSERT_MSG((classStatus(klass) &
+-                (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY))==0,
+-               classSignature(klass));
+-***/
+-}
+-
+-/*
+- * Delete a hash table of classes.
+- * The signatures of classes in the table are returned.
+- */
+-static struct bag *
+-deleteTable(JNIEnv *env, KlassNode *oldTable[])
+-{
+-    struct bag *signatures = bagCreateBag(sizeof(char*), 10);
+-    jint slot;
+-
+-    if (signatures == NULL) {
+-        EXIT_ERROR(AGENT_ERROR_OUT_OF_MEMORY,"signatures");
+-    }
+-
+-    for (slot = 0; slot < CT_HASH_SLOT_COUNT; slot++) {
+-        KlassNode *node = oldTable[slot];
+-
+-        while (node != NULL) {
+-            KlassNode *next;
+-            char **sigSpot;
+-
+-            /* Add signature to the signature bag */
+-            sigSpot = bagAdd(signatures);
+-            if (sigSpot == NULL) {
+-                EXIT_ERROR(AGENT_ERROR_OUT_OF_MEMORY,"signature bag");
+-            }
+-            *sigSpot = node->signature;
+-
+-            /* Free weak ref and the node itself */
+-            JNI_FUNC_PTR(env,DeleteWeakGlobalRef)(env, node->klass);
+-            next = node->next;
+-            jvmtiDeallocate(node);
+-
+-            node = next;
+-        }
+-    }
+-    jvmtiDeallocate(oldTable);
+-
+-    return signatures;
+-}
+-
+-/*
+- * Called after class unloads have occurred.  Creates a new hash table
+- * of currently loaded prepared classes.
+- * The signatures of classes which were unloaded (not present in the
+- * new table) are returned.
++ * Called after class unloads have occurred.
++ * The signatures of classes which were unloaded are returned.
+  */
+ struct bag *
+ classTrack_processUnloads(JNIEnv *env)
+ {
+-    KlassNode **newTable;
+-    struct bag *unloadedSignatures;
+-
+-    unloadedSignatures = NULL;
+-    newTable = jvmtiAllocate(CT_HASH_SLOT_COUNT * sizeof(KlassNode *));
+-    if (newTable == NULL) {
+-        EXIT_ERROR(AGENT_ERROR_OUT_OF_MEMORY, "classTrack table");
+-    } else {
+-
+-        (void)memset(newTable, 0, CT_HASH_SLOT_COUNT * sizeof(KlassNode *));
+-
+-        WITH_LOCAL_REFS(env, 1) {
+-
+-            jint classCount;
+-            jclass *classes;
+-            jvmtiError error;
+-            int i;
+-
+-            error = allLoadedClasses(&classes, &classCount);
+-            if ( error != JVMTI_ERROR_NONE ) {
+-                jvmtiDeallocate(newTable);
+-                EXIT_ERROR(error,"loaded classes");
+-            } else {
+-
+-                /* Transfer each current class into the new table */
+-                for (i=0; i<classCount; i++) {
+-                    jclass klass = classes[i];
+-                    transferClass(env, klass, newTable);
+-                }
+-                jvmtiDeallocate(classes);
+-
+-                /* Delete old table, install new one */
+-                unloadedSignatures = deleteTable(env, table);
+-                table = newTable;
+-            }
+-
+-        } END_WITH_LOCAL_REFS(env)
+-
++    debugMonitorEnter(classTrackLock);
++    if (deletedSignatures == NULL) {
++        // Class tracking not initialized, nobody's interested.
++        debugMonitorExit(classTrackLock);
++        return NULL;
+     }
+-
+-    return unloadedSignatures;
++    struct bag* deleted = deletedSignatures;
++    deletedSignatures = bagCreateBag(sizeof(char*), 10);
++    debugMonitorExit(classTrackLock);
++    return deleted;
+ }
+ 
+ /*
+- * Add a class to the prepared class hash table.
+- * Assumes no duplicates.
++ * Add a class to the prepared class table.
+  */
+ void
+-classTrack_addPreparedClass(JNIEnv *env, jclass klass)
++classTrack_addPreparedClass(JNIEnv *env_unused, jclass klass)
+ {
+-    jint slot = hashKlass(klass);
+-    KlassNode **head = &table[slot];
+-    KlassNode *node;
+     jvmtiError error;
++    jvmtiEnv* env = trackingEnv;
+ 
+-    if (gdata->assertOn) {
+-        /* Check this is not a duplicate */
+-        for (node = *head; node != NULL; node = node->next) {
+-            if (isSameObject(env, klass, node->klass)) {
+-                JDI_ASSERT_FAILED("Attempting to insert duplicate class");
+-                break;
+-            }
++    if (gdata && gdata->assertOn) {
++        // Check this is not already tagged.
++        jlong tag;
++        error = JVMTI_FUNC_PTR(trackingEnv, GetTag)(env, klass, &tag);
++        if (error != JVMTI_ERROR_NONE) {
++            EXIT_ERROR(error, "Unable to GetTag with class trackingEnv");
+         }
++        JDI_ASSERT(tag == NOT_TAGGED);
+     }
+ 
+-    node = jvmtiAllocate(sizeof(KlassNode));
+-    if (node == NULL) {
+-        EXIT_ERROR(AGENT_ERROR_OUT_OF_MEMORY,"KlassNode");
+-    }
+-    error = classSignature(klass, &(node->signature), NULL);
++    char* signature;
++    error = classSignature(klass, &signature, NULL);
+     if (error != JVMTI_ERROR_NONE) {
+-        jvmtiDeallocate(node);
+         EXIT_ERROR(error,"signature");
+     }
+-    if ((node->klass = JNI_FUNC_PTR(env,NewWeakGlobalRef)(env, klass)) == NULL) {
+-        jvmtiDeallocate(node->signature);
+-        jvmtiDeallocate(node);
+-        EXIT_ERROR(AGENT_ERROR_NULL_POINTER,"NewWeakGlobalRef");
++    error = JVMTI_FUNC_PTR(trackingEnv, SetTag)(env, klass, (jlong)signature);
++    if (error != JVMTI_ERROR_NONE) {
++        jvmtiDeallocate(signature);
++        EXIT_ERROR(error,"SetTag");
+     }
++}
+ 
+-    /* Insert the new node */
+-    node->next = *head;
+-    *head = node;
++static jboolean
++setupEvents()
++{
++    jvmtiCapabilities caps;
++    memset(&caps, 0, sizeof(caps));
++    caps.can_generate_object_free_events = 1;
++    jvmtiError error = JVMTI_FUNC_PTR(trackingEnv, AddCapabilities)(trackingEnv, &caps);
++    if (error != JVMTI_ERROR_NONE) {
++        return JNI_FALSE;
++    }
++    jvmtiEventCallbacks cb;
++    memset(&cb, 0, sizeof(cb));
++    cb.ObjectFree = cbTrackingObjectFree;
++    error = JVMTI_FUNC_PTR(trackingEnv, SetEventCallbacks)(trackingEnv, &cb, sizeof(cb));
++    if (error != JVMTI_ERROR_NONE) {
++        return JNI_FALSE;
++    }
++    error = JVMTI_FUNC_PTR(trackingEnv, SetEventNotificationMode)(trackingEnv, JVMTI_ENABLE, JVMTI_EVENT_OBJECT_FREE, NULL);
++    if (error != JVMTI_ERROR_NONE) {
++        return JNI_FALSE;
++    }
++    return JNI_TRUE;
+ }
+ 
+ /*
+- * Called once to build the initial prepared class hash table.
++ * Called once to initialize class-tracking.
+  */
+ void
+ classTrack_initialize(JNIEnv *env)
+ {
+-    WITH_LOCAL_REFS(env, 1) {
+-
+-        jint classCount;
+-        jclass *classes;
+-        jvmtiError error;
+-        jint i;
++    deletedSignatures = NULL;
++    classTrackLock = debugMonitorCreate("Deleted class tag lock");
++    trackingEnv = getSpecialJvmti();
++    if (trackingEnv == NULL) {
++        EXIT_ERROR(AGENT_ERROR_INTERNAL, "Failed to allocate tag-tracking jvmtiEnv");
++    }
+ 
+-        error = allLoadedClasses(&classes, &classCount);
+-        if ( error == JVMTI_ERROR_NONE ) {
+-            table = jvmtiAllocate(CT_HASH_SLOT_COUNT * sizeof(KlassNode *));
+-            if (table != NULL) {
+-                (void)memset(table, 0, CT_HASH_SLOT_COUNT * sizeof(KlassNode *));
+-                for (i=0; i<classCount; i++) {
+-                    jclass klass = classes[i];
+-                    jint status;
+-                    jint wanted =
+-                        (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY);
++
++    if (!setupEvents()) {
++        EXIT_ERROR(AGENT_ERROR_INTERNAL, "Unable to setup ObjectFree tracking");
++    }
+ 
+-                    /* We only want prepared classes and arrays */
+-                    status = classStatus(klass);
+-                    if ( (status & wanted) != 0 ) {
+-                        classTrack_addPreparedClass(env, klass);
+-                    }
+-                }
+-            } else {
+-                jvmtiDeallocate(classes);
+-                EXIT_ERROR(AGENT_ERROR_OUT_OF_MEMORY,"KlassNode");
++    jint classCount;
++    jclass *classes;
++    jvmtiError error;
++    jint i;
++
++    error = allLoadedClasses(&classes, &classCount);
++    if ( error == JVMTI_ERROR_NONE ) {
++        for (i = 0; i < classCount; i++) {
++            jclass klass = classes[i];
++            jint status;
++            jint wanted = JVMTI_CLASS_STATUS_PREPARED | JVMTI_CLASS_STATUS_ARRAY;
++            status = classStatus(klass);
++            if ((status & wanted) != 0) {
++                classTrack_addPreparedClass(env, klass);
+             }
+-            jvmtiDeallocate(classes);
+-        } else {
+-            EXIT_ERROR(error,"loaded classes array");
+         }
+-
+-    } END_WITH_LOCAL_REFS(env)
+-
++        jvmtiDeallocate(classes);
++    } else {
++        EXIT_ERROR(error,"loaded classes array");
++    }
+ }
+ 
++/*
++ * Called to activate class-tracking when a listener registers for EI_GC_FINISH.
++ */
++void
++classTrack_activate(JNIEnv *env)
++{
++    debugMonitorEnter(classTrackLock);
++    deletedSignatures = bagCreateBag(sizeof(char*), 1000);
++    debugMonitorExit(classTrackLock);
++}
++
++static jboolean
++cleanDeleted(void *signatureVoid, void *arg)
++{
++    char* sig = *(char**)signatureVoid;
++    jvmtiDeallocate(sig);
++    return JNI_TRUE;
++}
++
++/*
++ * Called when agent detaches.
++ */
+ void
+ classTrack_reset(void)
+ {
++    debugMonitorEnter(classTrackLock);
++
++    if (deletedSignatures != NULL) {
++        bagEnumerateOver(deletedSignatures, cleanDeleted, NULL);
++        bagDestroyBag(deletedSignatures);
++        deletedSignatures = NULL;
++    }
++
++    debugMonitorExit(classTrackLock);
+ }
+diff --git a/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.h b/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.h
+--- a/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.h
++++ b/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.h
+@@ -46,6 +46,12 @@
+ classTrack_initialize(JNIEnv *env);
+ 
+ /*
++ * Activates class tracking.
++ */
++void
++classTrack_activate(JNIEnv *env);
++
++/*
+  * Reset class tracking.
+  */
+ void
+diff --git a/src/jdk.jdwp.agent/share/native/libjdwp/eventHandler.c b/src/jdk.jdwp.agent/share/native/libjdwp/eventHandler.c
+--- a/src/jdk.jdwp.agent/share/native/libjdwp/eventHandler.c
++++ b/src/jdk.jdwp.agent/share/native/libjdwp/eventHandler.c
+@@ -1625,6 +1625,9 @@
+ 
+     node->handlerID = external? ++requestIdCounter : 0;
+     error = eventFilterRestricted_install(node);
++    if (node->ei == EI_GC_FINISH) {
++        classTrack_activate(getEnv());
++    }
+     if (error == JVMTI_ERROR_NONE) {
+         insert(getHandlerChain(node->ei), node);
+     }
+diff --git a/src/jdk.jdwp.agent/share/native/libjdwp/util.c b/src/jdk.jdwp.agent/share/native/libjdwp/util.c
+--- a/src/jdk.jdwp.agent/share/native/libjdwp/util.c
++++ b/src/jdk.jdwp.agent/share/native/libjdwp/util.c
+@@ -1742,7 +1742,7 @@
+ }
+ 
+ /* Get the jvmti environment to be used with tags */
+-static jvmtiEnv *
++jvmtiEnv *
+ getSpecialJvmti(void)
+ {
+     jvmtiEnv  *jvmti;
+diff --git a/src/jdk.jdwp.agent/share/native/libjdwp/util.h b/src/jdk.jdwp.agent/share/native/libjdwp/util.h
+--- a/src/jdk.jdwp.agent/share/native/libjdwp/util.h
++++ b/src/jdk.jdwp.agent/share/native/libjdwp/util.h
+@@ -414,4 +414,6 @@
+ void saveGlobalRef(JNIEnv *env, jobject obj, jobject *pobj);
+ void tossGlobalRef(JNIEnv *env, jobject *pobj);
+ 
++jvmtiEnv* getSpecialJvmti(void);
++
+ #endif
diff --git a/SOURCES/jdk8241750-rh1826915-x86-32_8227269_fix.patch b/SOURCES/jdk8241750-rh1826915-x86-32_8227269_fix.patch
new file mode 100644
index 0000000..19e3d18
--- /dev/null
+++ b/SOURCES/jdk8241750-rh1826915-x86-32_8227269_fix.patch
@@ -0,0 +1,30 @@
+# HG changeset patch
+# User shade
+# Date 1585332307 -3600
+#      Fri Mar 27 19:05:07 2020 +0100
+# Node ID af6e51a97af59304b5e5ad41cd3ee344dcc54f0a
+# Parent  a51657b8d38904b7d8d6820c8826a65a62959f06
+8241750: x86_32 build failure after JDK-8227269
+Reviewed-by: rkennke, cjplummer
+
+diff --git a/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.c b/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.c
+--- a/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.c
++++ b/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.c
+@@ -69,7 +69,7 @@
+       debugMonitorExit(classTrackLock);
+       return;
+     }
+-    *(char**)bagAdd(deletedSignatures) = (char*)tag;
++    *(char**)bagAdd(deletedSignatures) = (char*)jlong_to_ptr(tag);
+ 
+     debugMonitorExit(classTrackLock);
+ }
+@@ -117,7 +117,7 @@
+     if (error != JVMTI_ERROR_NONE) {
+         EXIT_ERROR(error,"signature");
+     }
+-    error = JVMTI_FUNC_PTR(trackingEnv, SetTag)(env, klass, (jlong)signature);
++    error = JVMTI_FUNC_PTR(trackingEnv, SetTag)(env, klass, ptr_to_jlong(signature));
+     if (error != JVMTI_ERROR_NONE) {
+         jvmtiDeallocate(signature);
+         EXIT_ERROR(error,"SetTag");
diff --git a/SOURCES/jdk8245714-rh1828845-build_loop_late_crash.patch b/SOURCES/jdk8245714-rh1828845-build_loop_late_crash.patch
new file mode 100644
index 0000000..3ebce49
--- /dev/null
+++ b/SOURCES/jdk8245714-rh1828845-build_loop_late_crash.patch
@@ -0,0 +1,129 @@
+# HG changeset patch
+# User roland
+# Date 1590664914 -7200
+#      Thu May 28 13:21:54 2020 +0200
+# Node ID 516c889e7582598020e49ed62bcf77871fe315d8
+# Parent  b2e6516f67ff98224f14e65beb944ddb04b24548
+8245714: "Bad graph detected in build_loop_late" when loads are pinned on loop limit check uncommon branch
+Reviewed-by: thartmann
+
+diff --git a/src/hotspot/share/opto/loopPredicate.cpp b/src/hotspot/share/opto/loopPredicate.cpp
+--- a/src/hotspot/share/opto/loopPredicate.cpp
++++ b/src/hotspot/share/opto/loopPredicate.cpp
+@@ -111,6 +111,9 @@
+     CallNode* call = rgn->as_Call();
+     IdealLoopTree* loop = get_loop(call);
+     rgn = new RegionNode(1);
++    Node* uncommon_proj_orig = uncommon_proj;
++    uncommon_proj = uncommon_proj->clone()->as_Proj();
++    register_control(uncommon_proj, loop, iff);
+     rgn->add_req(uncommon_proj);
+     register_control(rgn, loop, uncommon_proj);
+     _igvn.replace_input_of(call, 0, rgn);
+@@ -118,13 +121,9 @@
+     if (_idom != NULL) {
+       set_idom(call, rgn, dom_depth(rgn));
+     }
+-    for (DUIterator_Fast imax, i = uncommon_proj->fast_outs(imax); i < imax; i++) {
+-      Node* n = uncommon_proj->fast_out(i);
+-      if (n->is_Load() || n->is_Store()) {
+-        _igvn.replace_input_of(n, 0, rgn);
+-        --i; --imax;
+-      }
+-    }
++    // Move nodes pinned on the projection or whose control is set to
++    // the projection to the region.
++    lazy_replace(uncommon_proj_orig, rgn);
+   } else {
+     // Find region's edge corresponding to uncommon_proj
+     for (; proj_index < rgn->req(); proj_index++)
+diff --git a/test/hotspot/jtreg/compiler/loopopts/TestBadControlLoopLimitCheck.java b/test/hotspot/jtreg/compiler/loopopts/TestBadControlLoopLimitCheck.java
+new file mode 100644
+--- /dev/null
++++ b/test/hotspot/jtreg/compiler/loopopts/TestBadControlLoopLimitCheck.java
+@@ -0,0 +1,85 @@
++/*
++ * Copyright (c) 2020, 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.
++ *
++ * 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.
++ */
++
++/*
++ * @test
++ * @bug 8245714
++ * @requires vm.compiler2.enabled
++ * @summary "Bad graph detected in build_loop_late" when loads are pinned on loop limit check uncommon branch
++ *
++ * @run main/othervm -XX:-BackgroundCompilation -XX:ArrayCopyLoadStoreMaxElem=0 TestBadControlLoopLimitCheck
++ */
++
++public class TestBadControlLoopLimitCheck {
++    public static void main(String[] args) {
++        int[] int_array = {0, 0};
++        A[] obj_array = {new A(), new A()};
++        for (int i = 0; i < 20_000; i++) {
++            test1(int_array, 0, 10, false);
++            test_helper(42);
++            test2(obj_array, 0, 10, false);
++        }
++    }
++
++    private static int test1(int[] a, int start, int stop, boolean flag) {
++        int[] b = new int[2]; // non escaping allocation
++        System.arraycopy(a, 0, b, 0, 2); // optimized out
++        int v = 1;
++        int j = 0;
++        for (; j < 10; j++);
++        int inc = test_helper(j); // delay transformation to counted loop
++        // loop limit check here has loads pinned on unc branch
++        for (int i = start; i < stop; i += inc) {
++            v *= 2;
++        }
++        if (flag) {
++            v += b[0] + b[1];
++        }
++        return v;
++    }
++
++    private static int test2(A[] a, int start, int stop, boolean flag) {
++        A[] b = new A[2]; // non escaping allocation
++        System.arraycopy(a, 0, b, 0, 2); // optimized out
++        int v = 1;
++        int j = 0;
++        for (; j < 10; j++);
++        int inc = test_helper(j); // delay transformation to counted loop
++        // loop limit check here has loads pinned on unc branch
++        for (int i = start; i < stop; i += inc) {
++            v *= 2;
++        }
++        if (flag) {
++            v += b[0].f + b[1].f;
++        }
++        return v;
++    }
++
++    static class A {
++        int f;
++    }
++
++    static int test_helper(int j) {
++        return j == 10 ? 10 : 1;
++    }
++}
diff --git a/SPECS/java-11-openjdk.spec b/SPECS/java-11-openjdk.spec
index cf3a09f..5375ead 100644
--- a/SPECS/java-11-openjdk.spec
+++ b/SPECS/java-11-openjdk.spec
@@ -21,6 +21,18 @@
 # Enable release builds by default on relevant arches.
 %bcond_without release
 
+# Workaround for stripping of debug symbols from static libraries
+# RHEL 7 doesn't have __brp_strip_static_archive so need to redefine
+# the entire os_install_post macro
+%define __os_install_post    \
+    /usr/lib/rpm/redhat/brp-compress \
+    %{!?__debug_package:\
+    /usr/lib/rpm/redhat/brp-strip %{__strip} \
+    /usr/lib/rpm/redhat/brp-strip-comment-note %{__strip} %{__objdump} \
+    } \
+    %{!?__jar_repack:/usr/lib/rpm/redhat/brp-java-repack-jars} \
+%{nil}
+
 # The -g flag says to use strip -g instead of full strip on DSOs or EXEs.
 # This fixes detailed NMT and other tools which need minimal debug info.
 # See: https://bugzilla.redhat.com/show_bug.cgi?id=1520879
@@ -103,12 +115,12 @@
 %endif
 
 %if %{bootstrap_build}
-%global release_targets bootcycle-images docs-zip
+%global release_targets bootcycle-images static-libs-image docs-zip
 %else
-%global release_targets images docs-zip
+%global release_targets images docs-zip static-libs-image
 %endif
 # No docs nor bootcycle for debug builds
-%global debug_targets images
+%global debug_targets images static-libs-image
 
 
 # Filter out flags from the optflags macro that cause problems with the OpenJDK build
@@ -135,51 +147,63 @@
 # In some cases, the arch used by the JDK does
 # not match _arch.
 # Also, in some cases, the machine name used by SystemTap
-# does not match that given by _build_cpu
+# does not match that given by _target_cpu
 %ifarch x86_64
 %global archinstall amd64
+%global stapinstall x86_64
 %endif
 %ifarch ppc
 %global archinstall ppc
+%global stapinstall powerpc
 %endif
 %ifarch %{ppc64be}
 %global archinstall ppc64
+%global stapinstall powerpc
 %endif
 %ifarch %{ppc64le}
 %global archinstall ppc64le
+%global stapinstall powerpc
 %endif
 %ifarch %{ix86}
 %global archinstall i686
+%global stapinstall i386
 %endif
 %ifarch ia64
 %global archinstall ia64
+%global stapinstall ia64
 %endif
 %ifarch s390
 %global archinstall s390
+%global stapinstall s390
 %endif
 %ifarch s390x
 %global archinstall s390x
+%global stapinstall s390
 %endif
 %ifarch %{arm}
 %global archinstall arm
+%global stapinstall arm
 %endif
 %ifarch %{aarch64}
 %global archinstall aarch64
+%global stapinstall arm64
 %endif
 # 32 bit sparc, optimized for v9
 %ifarch sparcv9
 %global archinstall sparc
+%global stapinstall %{_target_cpu}
 %endif
 # 64 bit sparc
 %ifarch sparc64
 %global archinstall sparcv9
+%global stapinstall %{_target_cpu}
 %endif
-%ifnarch %{jit_arches}
-%global archinstall %{_arch}
+# Need to support noarch for srpm build
+%ifarch noarch
+%global archinstall %{nil}
+%global stapinstall %{nil}
 %endif
 
-
-
 %ifarch %{jit_arches}
 %global with_systemtap 1
 %else
@@ -205,14 +229,17 @@
   %global lts_designator_zip ""
 %endif
 
+# Define IcedTea version used for SystemTap tapsets and desktop file
+%global icedteaver      3.15.0
+
 # Standard JPackage naming and versioning defines
 %global origin          openjdk
 %global origin_nice     OpenJDK
 %global top_level_dir_name   %{origin}
 %global minorver        0
 %global buildver        10
-%global rpmrelease      0
-#%%global tagsuffix     %%{nil}
+%global rpmrelease      1
+#%%global tagsuffix      %%{nil}
 # priority must be 7 digits in total
 # setting to 1, so debug ones can have 0
 %global priority        00000%{minorver}1
@@ -240,8 +267,9 @@
 # parametrized macros are order-sensitive
 %global compatiblename  java-%{majorver}-%{origin}
 %global fullversion     %{compatiblename}-%{version}-%{release}
-# images stub
-%global jdkimage       jdk
+# images directories from upstream build
+%global jdkimage                jdk
+%global static_libs_image       static-libs
 # output dir stub
 %global buildoutputdir() %{expand:openjdk/build%1}
 # we can copy the javadoc to not arched dir, or make it not noarch
@@ -269,10 +297,10 @@
 # and 32 bit architectures we place the tapsets under the arch
 # specific dir (note that systemtap will only pickup the tapset
 # for the primary arch for now). Systemtap uses the machine name
-# aka build_cpu as architecture specific directory name.
+# aka target_cpu as architecture specific directory name.
 %global tapsetroot /usr/share/systemtap
 %global tapsetdirttapset %{tapsetroot}/tapset/
-%global tapsetdir %{tapsetdirttapset}/%{_build_cpu}
+%global tapsetdir %{tapsetdirttapset}/%{stapinstall}
 %endif
 
 # not-duplicated scriptlets for normal/debug packages
@@ -723,6 +751,25 @@ exit 0
 %{_jvmdir}/%{sdkdir %%1}/lib/src.zip
 }
 
+%define files_static_libs() %{expand:
+%{_jvmdir}/%{sdkdir %%1}/lib/libj2pkcs11.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libj2pcsc.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libnio.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libprefs.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libjava.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libjli.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libnet.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libjimage.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libjaas.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libfdlibm.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libj2gss.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libsunec.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libjsig.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libextnet.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libverify.a
+%{_jvmdir}/%{sdkdir %%1}/lib/libzip.a
+}
+
 %define files_javadoc() %{expand:
 %doc %{_javadocdir}/%{uniquejavadocdir %%1}
 %license %{buildoutputdir %%1}/images/%{jdkimage}/legal
@@ -829,6 +876,11 @@ Provides: java-%{javaver}-%{origin}-devel%1 = %{epoch}:%{version}
 
 }
 
+%define java_static_libs_rpo() %{expand:
+Requires:         %{name}-devel%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
+OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release}
+}
+
 %define java_jmods_rpo() %{expand:
 # Requires devel package
 # as jmods are bytecode, they should be OK without any _isa
@@ -915,10 +967,14 @@ License:  ASL 1.1 and ASL 2.0 and BSD and BSD with advertising and GPL+ and GPLv
 URL:      http://openjdk.java.net/
 
 
-# to regenerate source0 (jdk) and source8 (jdk's taspets) run update_package.sh
+# to regenerate source0 (jdk) run update_package.sh
 # update_package.sh contains hard-coded repos, revisions, tags, and projects to regenerate the source archives
 Source0: shenandoah-jdk%{majorver}-shenandoah-jdk-%{newjavaver}+%{buildver}%{?tagsuffix:-%{tagsuffix}}-4curve.tar.xz
-Source8: systemtap_3.2_tapsets_hg-icedtea8-9d464368e06d.tar.xz
+
+# Use 'icedtea_sync.sh' to update the following
+# They are based on code contained in the IcedTea project (3.x).
+# Systemtap tapsets. Zipped up to keep it small.
+Source8: tapsets-icedtea-%{icedteaver}.tar.xz
 
 # Desktop files. Adapted from IcedTea
 Source9: jconsole.desktop.in
@@ -981,6 +1037,22 @@ Patch8: s390-8214206_fix.patch
 #
 #############################################
 
+#############################################
+#
+# Patches appearing in 11.0.9
+#
+# This section includes patches which are present
+# in the listed OpenJDK 8u release and should be
+# able to be removed once that release is out
+# and used by this RPM.
+#############################################
+# JDK-8227269, RH1826915: Slow class loading when running with JDWP
+Patch11: jdk8227269-rh1826915-slow_class_loading_with_jdwp.patch
+# JDK-8241750, RH1826915: x86_32 build failure after JDK-8227269
+Patch12: jdk8241750-rh1826915-x86-32_8227269_fix.patch
+# JDK-8245714, RH1828845: "Bad graph detected in build_loop_late" when loads are pinned on loop limit check uncommon branch
+Patch13: jdk8245714-rh1828845-build_loop_late_crash.patch
+
 BuildRequires: autoconf
 BuildRequires: automake
 BuildRequires: alsa-lib-devel
@@ -994,13 +1066,6 @@ BuildRequires: freetype-devel
 BuildRequires: giflib-devel
 BuildRequires: gcc-c++
 BuildRequires: gdb
-%ifarch %{arm}
-BuildRequires: devtoolset-7-build
-BuildRequires: devtoolset-7-binutils
-BuildRequires: devtoolset-7-gcc
-BuildRequires: devtoolset-7-gcc-c++
-BuildRequires: devtoolset-7-gdb
-%endif
 BuildRequires: gtk2-devel
 # LCMS on rhel7 is older then LCMS in intree JDK
 BuildRequires: lcms2-devel
@@ -1097,6 +1162,27 @@ The %{origin_nice} development tools %{majorver}.
 %endif
 
 %if %{include_normal_build}
+%package static-libs
+Summary: %{origin_nice} libraries for static linking %{majorver}
+
+%{java_static_libs_rpo %{nil}}
+
+%description static-libs
+The %{origin_nice} libraries for static linking %{majorver}.
+%endif
+
+%if %{include_debug_build}
+%package static-libs-debug
+Summary: %{origin_nice} libraries for static linking %{majorver} %{debug_on}
+
+%{java_static_libs_rpo -- %{debug_suffix_unquoted}}
+
+%description static-libs-debug
+The %{origin_nice} libraries for static linking %{majorver}.
+%{debug_warning}
+%endif
+
+%if %{include_normal_build}
 %package jmods
 Summary: JMods for %{origin_nice} %{majorver}
 Group:   Development/Tools
@@ -1162,7 +1248,7 @@ Group:   Development/Languages
 %{java_src_rpo -- %{debug_suffix_unquoted}}
 
 %description src-debug
-The java-%{origin}-src-slowdebug sub-package contains the complete %{origin_nice} %{majorver}
+The java-%{origin}-src-debug sub-package contains the complete %{origin_nice} %{majorver}
  class library source code for use by IDE indexers and debuggers. Debugging %{for_debug}.
 %endif
 
@@ -1215,6 +1301,14 @@ The %{origin_nice} %{majorver} API documentation compressed in a single archive 
 %endif
 
 %prep
+
+# Using the echo macro breaks rpmdev-bumpspec, as it parses the first line of stdout :-(
+%if 0%{?stapinstall:1}
+  echo "CPU: %{_target_cpu}, arch install directory: %{archinstall}, SystemTap install directory: %{stapinstall}"
+%else
+  %{error:Unrecognised architecture %{_target_cpu}}
+%endif
+
 if [ %{include_normal_build} -eq 0 -o  %{include_normal_build} -eq 1 ] ; then
   echo "include_normal_build is %{include_normal_build}"
 else
@@ -1255,6 +1349,9 @@ pushd %{top_level_dir_name}
 %patch6 -p1
 %patch7 -p1
 %patch8 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
 popd # openjdk
 
 %patch1000
@@ -1269,7 +1366,7 @@ cp -r tapset tapset%{debug_suffix}
 
 for suffix in %{build_loop} ; do
   for file in "tapset"$suffix/*.in; do
-    OUTPUT_FILE=`echo $file | sed -e "s:\.stp\.in$:%{version}-%{release}.%{_arch}.stp:g"`
+    OUTPUT_FILE=`echo $file | sed -e "s:\.stp\.in$:-%{version}-%{release}.%{_arch}.stp:g"`
     sed -e "s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir $suffix}/lib/server/libjvm.so:g" $file > $file.1
 # TODO find out which architectures other than i686 have a client vm
 %ifarch %{ix86}
@@ -1286,16 +1383,18 @@ done
 %endif
 
 # Prepare desktop files
+# The _X_ syntax indicates variables that are replaced by make upstream
+# The @X@ syntax indicates variables that are replaced by configure upstream
 for suffix in %{build_loop} ; do
 for file in %{SOURCE9}; do
     FILE=`basename $file | sed -e s:\.in$::g`
     EXT="${FILE##*.}"
     NAME="${FILE%.*}"
     OUTPUT_FILE=$NAME$suffix.$EXT
-    sed    -e  "s:@JAVA_HOME@:%{sdkbindir $suffix}:g" $file > $OUTPUT_FILE
-    sed -i -e  "s:@JRE_HOME@:%{jrebindir $suffix}:g" $OUTPUT_FILE
-    sed -i -e  "s:@ARCH@:%{version}-%{release}.%{_arch}$suffix:g" $OUTPUT_FILE
-    sed -i -e  "s:@JAVA_MAJOR_VERSION@:%{majorver}:g" $OUTPUT_FILE
+    sed    -e  "s:_SDKBINDIR_:%{sdkbindir $suffix}:g" $file > $OUTPUT_FILE
+    sed -i -e  "s:@target_cpu@:%{_arch}:g" $OUTPUT_FILE
+    sed -i -e  "s:@OPENJDK_VER@:%{version}-%{release}.%{_arch}$suffix:g" $OUTPUT_FILE
+    sed -i -e  "s:@JAVA_VER@:%{javaver}:g" $OUTPUT_FILE
     sed -i -e  "s:@JAVA_VENDOR@:%{origin}:g" $OUTPUT_FILE
 done
 done
@@ -1305,10 +1404,6 @@ sed -e "s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g" %{SOURCE11} > nss.cfg
 
 
 %build
-%ifarch %{arm}
-%{?enable_devtoolset7:%{enable_devtoolset7}}
-%endif
-
 # How many CPU's do we have?
 export NUM_PROC=%(/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :)
 export NUM_PROC=${NUM_PROC:-1}
@@ -1453,6 +1548,11 @@ $JAVA_HOME/bin/java --add-opens java.base/javax.crypto=ALL-UNNAMED TestCryptoLev
 $JAVA_HOME/bin/javac -d . %{SOURCE14}
 $JAVA_HOME/bin/java $(echo $(basename %{SOURCE14})|sed "s|\.java||")
 
+# Check debug symbols in static libraries (smoke test)
+export STATIC_LIBS_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{static_libs_image}
+readelf --debug-dump $STATIC_LIBS_HOME/lib/libfdlibm.a | grep w_remainder.c
+readelf --debug-dump $STATIC_LIBS_HOME/lib/libfdlibm.a | grep e_remainder.c
+
 # Check debug symbols are present and can identify code
 find "$JAVA_HOME" -iname '*.so' -print0 | while read -d $'\0' lib
 do
@@ -1593,6 +1693,9 @@ pushd %{buildoutputdir $suffix}/images/%{jdkimage}
   rm -rf $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir $suffix}/man
 
 popd
+# Install static libs artefacts
+cp -a %{buildoutputdir -- $suffix}/images/%{static_libs_image}/lib/*.a \
+  $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/lib
 
 
 # Install Javadoc documentation
@@ -1774,6 +1877,9 @@ require "copy_jdk_configs.lua"
 %files devel
 %{files_devel %{nil}}
 
+%files static-libs
+%{files_static_libs %{nil}}
+
 %files jmods
 %{files_jmods %{nil}}
 
@@ -1804,6 +1910,9 @@ require "copy_jdk_configs.lua"
 %files devel-debug
 %{files_devel -- %{debug_suffix_unquoted}}
 
+%files static-libs-debug
+%{files_static_libs -- %{debug_suffix_unquoted}}
+
 %files jmods-debug
 %{files_jmods -- %{debug_suffix_unquoted}}
 
@@ -1821,115 +1930,154 @@ require "copy_jdk_configs.lua"
 %endif
 
 %changelog
-* Sat Jul 11 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.10-0
+* Sat Jul 11 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.10-1
 - Update to shenandoah-jdk-11.0.8+10 (GA)
 - Switch to GA mode for final release.
 - Update release notes with last minute fix (JDK-8248505).
 - This tarball is embargoed until 2020-07-14 @ 1pm PT.
 - Resolves: rhbz#1838811
 
-* Fri Jul 10 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.9-0.0.ea
+* Fri Jul 10 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.9-0.1.ea
 - Update to shenandoah-jdk-11.0.8+9 (EA)
 - Update release notes for 11.0.8 release.
 - This tarball is embargoed until 2020-07-14 @ 1pm PT.
 - Resolves: rhbz#1838811
 
-* Sun Jul 05 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.8-0.0.ea
+* Sun Jul 05 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.8-0.1.ea
 - Update to shenandoah-jdk-11.0.8+8 (EA)
 - Resolves: rhbz#1838811
 
-* Sat Jul 04 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.7-0.1.ea
+* Sat Jul 04 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.7-0.2.ea
 - java-11-openjdk doesn't have a JRE tree, so don't try and copy alt-java there...
 - Resolves: rhbz#1838811
 
-* Sat Jul 04 2020 Jiri Vanek <jvanek@redhat.com> - 1:11.0.8.7-0.1.ea
+* Sat Jul 04 2020 Jiri Vanek <jvanek@redhat.com> - 1:11.0.8.7-0.2.ea
 - Create a copy of java as alt-java with alternatives and man pages
 - Resolves: rhbz#1838811
 
-* Fri Jul 03 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.7-0.0.ea
+* Fri Jul 03 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.7-0.1.ea
 - Update to shenandoah-jdk-11.0.8+7 (EA)
 - Resolves: rhbz#1838811
 
-* Thu Jul 02 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.6-0.0.ea
+* Thu Jul 02 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.6-0.1.ea
 - Update to shenandoah-jdk-11.0.8+6 (EA)
 - Resolves: rhbz#1838811
 
-* Thu Jun 25 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.5-0.0.ea
+* Tue Jun 30 2020 Severin Gehwolf <sgehwolf@redhat.com> - 1:11.0.8.5-0.2.ea
+- Disable stripping of debug symbols for static libraries part of
+  the -static-libs sub-package.
+- Resolves: rhbz#1838811
+
+* Thu Jun 25 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.5-0.1.ea
 - Update to shenandoah-jdk-11.0.8+5 (EA)
 - Resolves: rhbz#1838811
 
-* Mon May 25 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.4-0.0.ea
+* Tue Jun 23 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.4-0.1.ea
 - Update to shenandoah-jdk-11.0.8+4 (EA)
 - Require tzdata 2020a due to resource changes in JDK-8243541
 - Resolves: rhbz#1838811
 
-* Tue May 19 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.3-0.0.ea
+* Fri Jun 19 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.3-0.1.ea
 - Update to shenandoah-jdk-11.0.8+3 (EA)
 - Resolves: rhbz#1838811
 
-* Mon May 18 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.2-0.0.ea
+* Mon Jun 08 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.2-0.3.ea
+- Add backport of JDK-8245714 to fix crash in build_loop_late_post(Node*)
+- Resolves: rhbz#1828845
+
+* Thu Jun 04 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.2-0.2.ea
+- Use RHEL 7 format for handling the debug argument to the files_static_libs macro.
+- Fix warning about macro in comment.
+- Resolves: rhbz#1839091
+
+* Wed Jun 03 2020 Severin Gehwolf <sgehwolf@redhat.com> - 1:11.0.8.2-0.2.ea
+- Build static-libs-image and add resulting files via -static-libs sub-package.
+- Resolves: rhbz#1839091
+
+* Tue Jun 02 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.2-0.1.ea
 - Update to shenandoah-jdk-11.0.8+2 (EA)
 - Resolves: rhbz#1838811
 
-* Sun May 10 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.1-0.0.ea
+* Mon May 25 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.8.1-0.1.ea
 - Update to shenandoah-jdk-11.0.8+1 (EA)
 - Switch to EA mode for 11.0.8 pre-release builds.
 - Drop JDK-8237396 & JDK-8228407 backports now applied upstream.
 - Resolves: rhbz#1838811
 
-* Wed Apr 15 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-4
+* Sat May 23 2020 Andrew John Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-7
+- Add backports of JDK-8227269 & JDK-8241750 to resolve slow class loading with JDWP enabled.
+- Resolves: rhbz#1826915
+
+* Mon Apr 20 2020 Andrew John Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-6
+- Introduce stapinstall variable to set SystemTap arch directory correctly (e.g. arm64 on aarch64)
+- Need to support noarch for creating source RPMs for non-scratch builds.
+- Resolves: rhbz#1737114
+
+* Mon Apr 20 2020 Andrew John Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-6
+- Sync SystemTap & desktop files with upstream IcedTea release 3.15.0
+- Resolves: rhbz#1737114
+
+* Mon Apr 20 2020 Andrew John Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-6
+- Sync SystemTap & desktop files with upstream IcedTea release 3.11.0 using new script
+- Resolves: rhbz#1737114
+
+* Thu Apr 16 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-5
 - Add JDK-8228407 backport to resolve crashes during verification.
 - Resolves: rhbz#1810557
 
-* Tue Apr 14 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-3
+* Thu Apr 16 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-5
 - Amend release notes, removing issue actually fixed in 11.0.6.
 - Resolves: rhbz#1810557
 
-* Mon Apr 13 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-2
+* Thu Apr 16 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-5
 - Add release notes.
 - Resolves: rhbz#1810557
 
-* Mon Apr 13 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-1
-- Make use of --with-extra-asflags introduced in jdk-11.0.6+1.
-- Resolves: rhbz#1810557
-
-* Tue Mar 31 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-0
+* Thu Apr 16 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.10-5
 - Update to shenandoah-jdk-11.0.7+10 (GA)
 - Switch to GA mode for final release.
 - Resolves: rhbz#1810557
 
-* Sat Mar 28 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.9-0.0.ea
+* Mon Apr 13 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.9-0.2.ea
+- Make use of --with-extra-asflags introduced in jdk-11.0.6+1.
+- Resolves: rhbz#1810557
+
+* Sat Mar 28 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.9-0.1.ea
 - Update to shenandoah-jdk-11.0.7+9 (EA)
 - Resolves: rhbz#1810557
 
-* Sat Mar 28 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.8-0.0.ea
+* Sat Mar 28 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.8-0.1.ea
 - Update to shenandoah-jdk-11.0.7+8 (EA)
 - Resolves: rhbz#1810557
 
-* Sat Mar 28 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.7-0.0.ea
+* Sat Mar 28 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.7-0.1.ea
 - Update to shenandoah-jdk-11.0.7+7 (EA)
 - Resolves: rhbz#1810557
 
-* Mon Mar 16 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.6-0.0.ea
+* Thu Mar 19 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.6-0.1.ea
 - Update to shenandoah-jdk-11.0.7+6 (EA)
 - Resolves: rhbz#1810557
 
-* Sun Mar 15 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.5-0.0.ea
+* Thu Mar 19 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.5-0.1.ea
 - Update to shenandoah-jdk-11.0.7+5 (EA)
 - Resolves: rhbz#1810557
 
-* Fri Feb 28 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.4-0.0.ea
+* Thu Mar 19 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.4-0.1.ea
 - Update to shenandoah-jdk-11.0.7+4 (EA)
 - Resolves: rhbz#1810557
 
-* Tue Feb 18 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.3-0.0.ea
+* Thu Mar 19 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.3-0.1.ea
 - Update to shenandoah-jdk-11.0.7+3 (EA)
 - Resolves: rhbz#1810557
 
-* Sun Feb 16 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.2-0.0.ea
+* Thu Mar 19 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.2-0.1.ea
 - Update to shenandoah-jdk-11.0.7+2 (EA)
 - Resolves: rhbz#1810557
 
+* Thu Mar 19 2020 Andrew John Hughes <gnu.andrew@redhat.com> - 1:11.0.7.1-0.1.ea
+- Bump release for y-stream branch.
+- Resolves: rhbz#1810557
+
 * Sun Feb 16 2020 Andrew Hughes <gnu.andrew@redhat.com> - 1:11.0.7.1-0.0.ea
 - Update to shenandoah-jdk-11.0.7+1 (EA)
 - Switch to EA mode for 11.0.7 pre-release builds.