# HG changeset patch # User Andrew John Hughes # Date 1603334674 -3600 # Node ID 9c238b325a8f9e49744a8b07c0a9b7c0bda78437 # Parent 7e0780d57319c52ee1b28a6b91f4c2ea3cdde56d Bump aarch32 to jdk8u272-b04-aarch32-20200821. Upstream changes: - JDK-8006205: [TESTBUG] NEED_TEST: please JTREGIFY test/compiler/7177917/Test7177917.java - JDK-8023697: failed class resolution reports different class name in detail message for the first and subsequent times - JDK-8035493: JVMTI PopFrame capability must instruct compilers not to prune locals - JDK-8046274: Removing dependency on jakarta-regexp - JDK-8048933: -XX:+TraceExceptions output should include the message - JDK-8061616: HotspotDiagnosticMXBean.getVMOption() throws IllegalArgumentException for flags of type double - JDK-8076475: Misuses of strncpy/strncat - JDK-8146612: C2: Precedence edges specification violated - JDK-8148754: C2 loop unrolling fails due to unexpected graph shape - JDK-8148854: Class names "SomeClass" and "LSomeClass;" treated by JVM as an equivalent - JDK-8150986: serviceability/sa/jmap-hprof/JMapHProfLargeHeapTest.java failing because expects HPROF JAVA PROFILE 1.0.1 file format - JDK-8153583: Make OutputAnalyzer.reportDiagnosticSummary public - JDK-8167300: Scheduling failures during gcm should be fatal - JDK-8173300: [TESTBUG]compiler/tiered/NonTieredLevelsTest.java fails with compiler.whitebox.SimpleTestCaseHelper(int) must be compiled - JDK-8177334: Update xmldsig implementation to Apache Santuario 2.1.1 - JDK-8196969: JTreg Failure: serviceability/sa/ClhsdbJstack.java causes NPE - JDK-8211714: Need to update vm_version.cpp to recognise VS2017 minor versions - JDK-8214862: assert(proj != __null) at compile.cpp:3251 - JDK-8216283: Allow shorter method sampling interval than 10 ms - JDK-8217647: JFR: recordings on 32-bit systems unreadable - JDK-8219566: JFR did not collect call stacks when MaxJavaStackTraceDepth is set to zero - JDK-8220293: Deadlock in JFR string pool - JDK-8230303: JDB hangs when running monitor command - JDK-8230597: Update GIFlib library to the 5.2.1 - JDK-8230711: ConnectionGraph::unique_java_object(Node* N) return NULL if n is not in the CG - JDK-8231779: crash HeapWord*ParallelScavengeHeap::failed_mem_allocate - JDK-8233197: Invert JvmtiExport::post_vm_initialized() and Jfr:on_vm_start() start-up order for correct option parsing - JDK-8234617: C1: Incorrect result of field load due to missing narrowing conversion - JDK-8235243: handle VS2017 15.9 and VS2019 in abstract_vm_version - JDK-8235325: build failure on Linux after 8235243 - JDK-8237951: CTW: C2 compilation fails with "malformed control flow" - JDK-8239852: java/util/concurrent tests fail with -XX:+VerifyGraphEdges: assert(!VerifyGraphEdges) failed: verification should have failed - JDK-8240295: hs_err elapsed time in seconds is not accurate enough - JDK-8240576: JVM crashes after transformation in C2 IdealLoopTree::merge_many_backedges - JDK-8243489: Thread CPU Load event may contain wrong data for CPU time under certain conditions - JDK-8244407: JVM crashes after transformation in C2 IdealLoopTree::split_fall_in - JDK-8244548: JDK 8u: sun.misc.Version.jdkUpdateVersion() returns wrong result - JDK-8244777: ClassLoaderStats VM Op uses constant hash value - JDK-8245167: Top package in method profiling shows null in JMC - JDK-8246310: Clean commented-out code about ModuleEntry andPackageEntry in JFR - JDK-8246703: [TESTBUG] Add test for JDK-8233197 - JDK-8248643: Remove extra leading space in JDK-8240295 8u backport - JDK-8248851: CMS: Missing memory fences between free chunk check and klass read - JDK-8250875: Incorrect parameter type for update_number in JDK_Version::jdk_update ChangeLog: 2020-10-21 Andrew John Hughes Bump aarch32 to jdk8u272-b04-aarch32-20200821. * NEWS: Updated. * hotspot.map.in: Bump aarch32 to jdk8u272-b04-aarch32-20200821. * patches/hotspot/aarch32/8076475-pr3696.patch: Replace with symlinks to Shenandoah versions now both are again based on the same upstream 8u version. diff -r 7e0780d57319 -r 9c238b325a8f ChangeLog --- a/ChangeLog Wed Oct 21 19:16:00 2020 +0100 +++ b/ChangeLog Thu Oct 22 03:44:34 2020 +0100 @@ -1,3 +1,13 @@ +2020-10-21 Andrew John Hughes + + Bump aarch32 to jdk8u272-b04-aarch32-20200821. + * NEWS: Updated. + * hotspot.map.in: Bump aarch32 to + jdk8u272-b04-aarch32-20200821. + * patches/hotspot/aarch32/8076475-pr3696.patch: + Replace with symlinks to Shenandoah versions now + both are again based on the same upstream 8u version. + 2020-10-20 Andrew John Hughes Bump shenandoah to aarch64-shenandoah-jdk8u272-b04. diff -r 7e0780d57319 -r 9c238b325a8f NEWS --- a/NEWS Wed Oct 21 19:16:00 2020 +0100 +++ b/NEWS Thu Oct 22 03:44:34 2020 +0100 @@ -312,7 +312,51 @@ - JDK-8199712, PR3797: [AArch64] Flight Recorder - JDK-8215961, PR3797: jdk/jfr/event/os/TestCPUInformation.java fails on AArch64 * AArch32 port + - JDK-8006205: [TESTBUG] NEED_TEST: please JTREGIFY test/compiler/7177917/Test7177917.java + - JDK-8023697: failed class resolution reports different class name in detail message for the first and subsequent times + - JDK-8035493: JVMTI PopFrame capability must instruct compilers not to prune locals + - JDK-8046274: Removing dependency on jakarta-regexp + - JDK-8048933: -XX:+TraceExceptions output should include the message + - JDK-8061616: HotspotDiagnosticMXBean.getVMOption() throws IllegalArgumentException for flags of type double + - JDK-8076475: Misuses of strncpy/strncat + - JDK-8146612: C2: Precedence edges specification violated + - JDK-8148754: C2 loop unrolling fails due to unexpected graph shape + - JDK-8148854: Class names "SomeClass" and "LSomeClass;" treated by JVM as an equivalent + - JDK-8150986: serviceability/sa/jmap-hprof/JMapHProfLargeHeapTest.java failing because expects HPROF JAVA PROFILE 1.0.1 file format - JDK-8152358, PR3800: code and comment cleanups found during the hunt for 8077392 + - JDK-8153583: Make OutputAnalyzer.reportDiagnosticSummary public + - JDK-8167300: Scheduling failures during gcm should be fatal + - JDK-8173300: [TESTBUG]compiler/tiered/NonTieredLevelsTest.java fails with compiler.whitebox.SimpleTestCaseHelper(int) must be compiled + - JDK-8177334: Update xmldsig implementation to Apache Santuario 2.1.1 + - JDK-8196969: JTreg Failure: serviceability/sa/ClhsdbJstack.java causes NPE + - JDK-8211714: Need to update vm_version.cpp to recognise VS2017 minor versions + - JDK-8214862: assert(proj != __null) at compile.cpp:3251 + - JDK-8216283: Allow shorter method sampling interval than 10 ms + - JDK-8217647: JFR: recordings on 32-bit systems unreadable + - JDK-8219566: JFR did not collect call stacks when MaxJavaStackTraceDepth is set to zero + - JDK-8220293: Deadlock in JFR string pool + - JDK-8230303: JDB hangs when running monitor command + - JDK-8230597: Update GIFlib library to the 5.2.1 + - JDK-8230711: ConnectionGraph::unique_java_object(Node* N) return NULL if n is not in the CG + - JDK-8231779: crash HeapWord*ParallelScavengeHeap::failed_mem_allocate + - JDK-8233197: Invert JvmtiExport::post_vm_initialized() and Jfr:on_vm_start() start-up order for correct option parsing + - JDK-8234617: C1: Incorrect result of field load due to missing narrowing conversion + - JDK-8235243: handle VS2017 15.9 and VS2019 in abstract_vm_version + - JDK-8235325: build failure on Linux after 8235243 + - JDK-8237951: CTW: C2 compilation fails with "malformed control flow" + - JDK-8239852: java/util/concurrent tests fail with -XX:+VerifyGraphEdges: assert(!VerifyGraphEdges) failed: verification should have failed + - JDK-8240295: hs_err elapsed time in seconds is not accurate enough + - JDK-8240576: JVM crashes after transformation in C2 IdealLoopTree::merge_many_backedges + - JDK-8243489: Thread CPU Load event may contain wrong data for CPU time under certain conditions + - JDK-8244407: JVM crashes after transformation in C2 IdealLoopTree::split_fall_in + - JDK-8244548: JDK 8u: sun.misc.Version.jdkUpdateVersion() returns wrong result + - JDK-8244777: ClassLoaderStats VM Op uses constant hash value + - JDK-8245167: Top package in method profiling shows null in JMC + - JDK-8246310: Clean commented-out code about ModuleEntry andPackageEntry in JFR + - JDK-8246703: [TESTBUG] Add test for JDK-8233197 + - JDK-8248643: Remove extra leading space in JDK-8240295 8u backport + - JDK-8248851: CMS: Missing memory fences between free chunk check and klass read + - JDK-8250875: Incorrect parameter type for update_number in JDK_Version::jdk_update - PR3798: Fix format-overflow error on GCC 10, caused by passing NULL to a '%s' directive New in release 3.16.0 (2020-05-02): diff -r 7e0780d57319 -r 9c238b325a8f hotspot.map.in --- a/hotspot.map.in Wed Oct 21 19:16:00 2020 +0100 +++ b/hotspot.map.in Thu Oct 22 03:44:34 2020 +0100 @@ -1,4 +1,4 @@ # version type(drop/hg) url changeset sha256sum default drop https://icedtea.classpath.org/download/drops/icedtea8/@ICEDTEA_RELEASE@ 88961de57e43 5aa5045f0489e67e525b0ea88debee9e2a7db89291c2dfb0a52b7d23492b1b99 shenandoah drop https://icedtea.classpath.org/download/drops/icedtea8/@ICEDTEA_RELEASE@ f9a4ff26a4bd 12a4c7c306d6ba24cc9a197b3625b25661214d5ac167ec0dba972823d5035fd2 -aarch32 drop https://icedtea.classpath.org/download/drops/icedtea8/@ICEDTEA_RELEASE@ 104a5c7f735e 642ece375346300cf11dce79dfb9ac3d5ac470bc68246ccf6fdcde7a495dc73b +aarch32 drop https://icedtea.classpath.org/download/drops/icedtea8/@ICEDTEA_RELEASE@ f700065950de 4f24a61e3422be5cb406bdcf3391a89f50f3f097f444bebf79b2057f80f14e6d diff -r 7e0780d57319 -r 9c238b325a8f patches/hotspot/aarch32/8076475-pr3696.patch --- a/patches/hotspot/aarch32/8076475-pr3696.patch Wed Oct 21 19:16:00 2020 +0100 +++ b/patches/hotspot/aarch32/8076475-pr3696.patch Thu Oct 22 03:44:34 2020 +0100 @@ -1,261 +1,1 @@ -# HG changeset patch -# User stuefe -# Date 1549941248 0 -# Tue Feb 12 03:14:08 2019 +0000 -# Node ID 9bbf02572dc114e85829673a7cdaffa482115f42 -# Parent cfb34db6589e222d34e5b736b99ed4f69c261c4f -8076475, PR3696: Misuses of strncpy/strncat -Summary: Various small fixes around strncpy and strncat -Reviewed-by: dsamersoff, coleenp - -diff -Nru openjdk.orig/hotspot/agent/src/os/bsd/libproc_impl.c openjdk/hotspot/agent/src/os/bsd/libproc_impl.c ---- openjdk.orig/hotspot/agent/src/os/bsd/libproc_impl.c 2019-04-05 19:21:24.000000000 +0100 -+++ openjdk/hotspot/agent/src/os/bsd/libproc_impl.c 2019-04-16 16:05:31.441511929 +0100 -@@ -215,7 +215,12 @@ - return NULL; - } - -- strncpy(newlib->name, libname, sizeof(newlib->name)); -+ if (strlen(libname) >= sizeof(newlib->name)) { -+ print_debug("libname %s too long\n", libname); -+ return NULL; -+ } -+ strcpy(newlib->name, libname); -+ - newlib->base = base; - - if (fd == -1) { -diff -Nru openjdk.orig/hotspot/agent/src/os/linux/libproc_impl.c openjdk/hotspot/agent/src/os/linux/libproc_impl.c ---- openjdk.orig/hotspot/agent/src/os/linux/libproc_impl.c 2019-04-05 19:21:24.000000000 +0100 -+++ openjdk/hotspot/agent/src/os/linux/libproc_impl.c 2019-04-16 16:05:31.441511929 +0100 -@@ -162,7 +162,12 @@ - return NULL; - } - -- strncpy(newlib->name, libname, sizeof(newlib->name)); -+ if (strlen(libname) >= sizeof(newlib->name)) { -+ print_debug("libname %s too long\n", libname); -+ return NULL; -+ } -+ strcpy(newlib->name, libname); -+ - newlib->base = base; - - if (fd == -1) { -diff -Nru openjdk.orig/hotspot/src/os/bsd/dtrace/libjvm_db.c openjdk/hotspot/src/os/bsd/dtrace/libjvm_db.c ---- openjdk.orig/hotspot/src/os/bsd/dtrace/libjvm_db.c 2019-04-05 19:21:24.000000000 +0100 -+++ openjdk/hotspot/src/os/bsd/dtrace/libjvm_db.c 2019-04-16 16:05:31.441511929 +0100 -@@ -543,13 +543,14 @@ - CHECK_FAIL(err); - - result[0] = '\0'; -- strncat(result, klassString, size); -- size -= strlen(klassString); -- strncat(result, ".", size); -- size -= 1; -- strncat(result, nameString, size); -- size -= strlen(nameString); -- strncat(result, signatureString, size); -+ if (snprintf(result, size, -+ "%s.%s%s", -+ klassString, -+ nameString, -+ signatureString) >= size) { -+ // truncation -+ goto fail; -+ } - - if (nameString != NULL) free(nameString); - if (klassString != NULL) free(klassString); -@@ -1056,9 +1057,9 @@ - CHECK_FAIL(err); - } - if (deoptimized) { -- strncat(result + 1, " [deoptimized frame]; ", size-1); -+ strncat(result, " [deoptimized frame]; ", size - strlen(result) - 1); - } else { -- strncat(result + 1, " [compiled] ", size-1); -+ strncat(result, " [compiled] ", size - strlen(result) - 1); - } - if (debug) - fprintf(stderr, "name_for_nmethod: END: method name: %s, vf_cnt: %d\n\n", -diff -Nru openjdk.orig/hotspot/src/os/bsd/vm/decoder_machO.cpp openjdk/hotspot/src/os/bsd/vm/decoder_machO.cpp ---- openjdk.orig/hotspot/src/os/bsd/vm/decoder_machO.cpp 2019-04-05 19:21:24.000000000 +0100 -+++ openjdk/hotspot/src/os/bsd/vm/decoder_machO.cpp 2019-04-16 16:05:31.441511929 +0100 -@@ -97,6 +97,7 @@ - char * symname = mach_find_in_stringtable((char*) ((uintptr_t)mach_base + stroff), strsize, found_strx); - if (symname) { - strncpy(buf, symname, buflen); -+ buf[buflen - 1] = '\0'; - return true; - } - DEBUG_ONLY(tty->print_cr("no string or null string found.")); -diff -Nru openjdk.orig/hotspot/src/os/solaris/dtrace/libjvm_db.c openjdk/hotspot/src/os/solaris/dtrace/libjvm_db.c ---- openjdk.orig/hotspot/src/os/solaris/dtrace/libjvm_db.c 2019-04-05 19:21:24.000000000 +0100 -+++ openjdk/hotspot/src/os/solaris/dtrace/libjvm_db.c 2019-04-16 16:05:31.441511929 +0100 -@@ -543,13 +543,14 @@ - CHECK_FAIL(err); - - result[0] = '\0'; -- strncat(result, klassString, size); -- size -= strlen(klassString); -- strncat(result, ".", size); -- size -= 1; -- strncat(result, nameString, size); -- size -= strlen(nameString); -- strncat(result, signatureString, size); -+ if (snprintf(result, size, -+ "%s.%s%s", -+ klassString, -+ nameString, -+ signatureString) >= size) { -+ // truncation -+ goto fail; -+ } - - if (nameString != NULL) free(nameString); - if (klassString != NULL) free(klassString); -@@ -1056,9 +1057,9 @@ - CHECK_FAIL(err); - } - if (deoptimized) { -- strncat(result + 1, " [deoptimized frame]; ", size-1); -+ strncat(result, " [deoptimized frame]; ", size - strlen(result) - 1); - } else { -- strncat(result + 1, " [compiled] ", size-1); -+ strncat(result, " [compiled] ", size - strlen(result) - 1); - } - if (debug) - fprintf(stderr, "name_for_nmethod: END: method name: %s, vf_cnt: %d\n\n", -diff -Nru openjdk.orig/hotspot/src/share/tools/hsdis/hsdis.c openjdk/hotspot/src/share/tools/hsdis/hsdis.c ---- openjdk.orig/hotspot/src/share/tools/hsdis/hsdis.c 2019-04-05 19:21:24.000000000 +0100 -+++ openjdk/hotspot/src/share/tools/hsdis/hsdis.c 2019-04-16 16:05:31.445511866 +0100 -@@ -438,6 +438,7 @@ - } - p = q; - } -+ *iop = '\0'; - } - - static void print_help(struct hsdis_app_data* app_data, -diff -Nru openjdk.orig/hotspot/src/share/vm/compiler/compileBroker.hpp openjdk/hotspot/src/share/vm/compiler/compileBroker.hpp ---- openjdk.orig/hotspot/src/share/vm/compiler/compileBroker.hpp 2019-04-05 19:21:24.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/compiler/compileBroker.hpp 2019-04-16 16:05:31.445511866 +0100 -@@ -173,7 +173,8 @@ - // these methods should be called in a thread safe context - - void set_current_method(const char* method) { -- strncpy(_current_method, method, (size_t)cmname_buffer_length); -+ strncpy(_current_method, method, (size_t)cmname_buffer_length-1); -+ _current_method[cmname_buffer_length-1] = '\0'; - if (UsePerfData) _perf_current_method->set_value(method); - } - -diff -Nru openjdk.orig/hotspot/src/share/vm/compiler/compilerOracle.cpp openjdk/hotspot/src/share/vm/compiler/compilerOracle.cpp ---- openjdk.orig/hotspot/src/share/vm/compiler/compilerOracle.cpp 2019-04-16 16:03:42.787215846 +0100 -+++ openjdk/hotspot/src/share/vm/compiler/compilerOracle.cpp 2019-04-16 16:05:31.445511866 +0100 -@@ -647,9 +647,7 @@ - // so read integer and fraction part of double value separately. - if (sscanf(line, "%*[ \t]%255[0-9]%*[ /\t]%255[0-9]%n", buffer[0], buffer[1], &bytes_read) == 2) { - char value[512] = ""; -- strncat(value, buffer[0], 255); -- strcat(value, "."); -- strncat(value, buffer[1], 255); -+ jio_snprintf(value, sizeof(value), "%s.%s", buffer[0], buffer[1]); - total_bytes_read += bytes_read; - return add_option_string(c_name, c_match, m_name, m_match, signature, flag, atof(value)); - } else { -diff -Nru openjdk.orig/hotspot/src/share/vm/compiler/disassembler.cpp openjdk/hotspot/src/share/vm/compiler/disassembler.cpp ---- openjdk.orig/hotspot/src/share/vm/compiler/disassembler.cpp 2019-04-05 19:21:24.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/compiler/disassembler.cpp 2019-04-16 16:05:31.445511866 +0100 -@@ -298,6 +298,7 @@ - strlen((const char*)arg) > sizeof(buffer) - 1) { - // Only print this when the mach changes - strncpy(buffer, (const char*)arg, sizeof(buffer) - 1); -+ buffer[sizeof(buffer) - 1] = '\0'; - output()->print_cr("[Disassembling for mach='%s']", arg); - } - } else if (match(event, "format bytes-per-line")) { -diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2019-04-16 16:03:42.763216221 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2019-04-16 16:05:31.445511866 +0100 -@@ -3629,8 +3629,7 @@ - src ++; - } - -- char* copy = AllocateHeap(strlen(src) + 1, mtInternal); -- strncpy(copy, src, strlen(src) + 1); -+ char* copy = os::strdup_check_oom(src, mtInternal); - - // trim all trailing empty paths - for (char* tail = copy + strlen(copy) - 1; tail >= copy && *tail == separator; tail--) { -@@ -4013,18 +4012,14 @@ - if (end != NULL) *end = '\0'; - size_t jvm_path_len = strlen(jvm_path); - size_t file_sep_len = strlen(os::file_separator()); -- shared_archive_path = NEW_C_HEAP_ARRAY(char, jvm_path_len + -- file_sep_len + 20, mtInternal); -+ const size_t len = jvm_path_len + file_sep_len + 20; -+ shared_archive_path = NEW_C_HEAP_ARRAY(char, len, mtInternal); - if (shared_archive_path != NULL) { -- strncpy(shared_archive_path, jvm_path, jvm_path_len + 1); -- strncat(shared_archive_path, os::file_separator(), file_sep_len); -- strncat(shared_archive_path, "classes.jsa", 11); -+ jio_snprintf(shared_archive_path, len, "%s%sclasses.jsa", -+ jvm_path, os::file_separator()); - } - } else { -- shared_archive_path = NEW_C_HEAP_ARRAY(char, strlen(SharedArchiveFile) + 1, mtInternal); -- if (shared_archive_path != NULL) { -- strncpy(shared_archive_path, SharedArchiveFile, strlen(SharedArchiveFile) + 1); -- } -+ shared_archive_path = os::strdup_check_oom(SharedArchiveFile, mtInternal); - } - return shared_archive_path; - } -diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/ostream.cpp openjdk/hotspot/src/share/vm/utilities/ostream.cpp ---- openjdk.orig/hotspot/src/share/vm/utilities/ostream.cpp 2019-04-05 19:21:24.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/utilities/ostream.cpp 2019-04-16 16:06:46.896328647 +0100 -@@ -342,15 +342,19 @@ - assert(rm == NULL || Thread::current()->current_resource_mark() == rm, - "stringStream is re-allocated with a different ResourceMark"); - buffer = NEW_RESOURCE_ARRAY(char, end); -- strncpy(buffer, oldbuf, buffer_pos); -+ if (buffer_pos > 0) { -+ memcpy(buffer, oldbuf, buffer_pos); -+ } - buffer_length = end; - } - } - // invariant: buffer is always null-terminated - guarantee(buffer_pos + write_len + 1 <= buffer_length, "stringStream oob"); -- buffer[buffer_pos + write_len] = 0; -- strncpy(buffer + buffer_pos, s, write_len); -- buffer_pos += write_len; -+ if (write_len > 0) { -+ buffer[buffer_pos + write_len] = 0; -+ memcpy(buffer + buffer_pos, s, write_len); -+ buffer_pos += write_len; -+ } - - // Note that the following does not depend on write_len. - // This means that position and count get updated -diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp openjdk/hotspot/src/share/vm/utilities/vmError.cpp ---- openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp 2019-04-16 16:03:40.295254924 +0100 -+++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp 2019-04-16 16:05:31.445511866 +0100 -@@ -451,14 +451,7 @@ - #else - const char *file = _filename; - #endif -- size_t len = strlen(file); -- size_t buflen = sizeof(buf); -- -- strncpy(buf, file, buflen); -- if (len + 10 < buflen) { -- sprintf(buf + len, ":%d", _lineno); -- } -- st->print(" (%s)", buf); -+ st->print(" (%s:%d)", file, _lineno); - } else { - st->print(" (0x%x)", _id); - } +../shenandoah/8076475-pr3696.patch \ No newline at end of file