Bug 575368 - Exception when opening GCov coverage files on Cygwin GCC
- rename GCOV_TAG_OBJECT_SYMMARY to GCC_TAG_OBJECT_SUMMARY in
GcdaRecordsParser
- add support for the CWD and supports_has_unexecuted_blocks field
in header for gcc >= 8.1 and 9.1 respectively
Change-Id: I3df0cac7f158f31c55bc53ddb6d7765244bc76a4
Reviewed-on: https://git.eclipse.org/r/c/linuxtools/org.eclipse.linuxtools/+/184247
Tested-by: Linux Tools Bot <linuxtools-bot@eclipse.org>
Reviewed-by: Jeff Johnston <jjohnstn@redhat.com>
diff --git a/gcov/org.eclipse.linuxtools.gcov.core/src/org/eclipse/linuxtools/internal/gcov/parser/GcdaRecordsParser.java b/gcov/org.eclipse.linuxtools.gcov.core/src/org/eclipse/linuxtools/internal/gcov/parser/GcdaRecordsParser.java
index d4b1cea..a202391 100644
--- a/gcov/org.eclipse.linuxtools.gcov.core/src/org/eclipse/linuxtools/internal/gcov/parser/GcdaRecordsParser.java
+++ b/gcov/org.eclipse.linuxtools.gcov.core/src/org/eclipse/linuxtools/internal/gcov/parser/GcdaRecordsParser.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2019 STMicroelectronics and others.
+ * Copyright (c) 2009, 2021 STMicroelectronics and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -32,7 +32,7 @@
private static final int GCOV_DATA_MAGIC = 0x67636461; // en ASCII: 67=g 63=c 64=d 61=a
private static final int GCOV_TAG_FUNCTION = 0x01000000;
private static final int GCOV_COUNTER_ARCS = 0x01a10000;
- private static final int GCOV_TAG_OBJECT_SYMMARY = 0xa1000000;
+ private static final int GCOV_TAG_OBJECT_SUMMARY = 0xa1000000;
private static final int GCOV_TAG_PROGRAM_SUMMARY = 0xa3000000;
private static final int GCC_VER_900 = 1094266922; // GCC 9.0.0 ('A90*')
@@ -207,7 +207,7 @@
break;
}
- case GCOV_TAG_OBJECT_SYMMARY: {
+ case GCOV_TAG_OBJECT_SUMMARY: {
if (version >= GCC_VER_900) {
objSmryNbrPgmRuns = (stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK);
objSmrySumMax = (stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK);
diff --git a/gcov/org.eclipse.linuxtools.gcov.core/src/org/eclipse/linuxtools/internal/gcov/parser/GcnoRecordsParser.java b/gcov/org.eclipse.linuxtools.gcov.core/src/org/eclipse/linuxtools/internal/gcov/parser/GcnoRecordsParser.java
index e59557b..07d6f71 100644
--- a/gcov/org.eclipse.linuxtools.gcov.core/src/org/eclipse/linuxtools/internal/gcov/parser/GcnoRecordsParser.java
+++ b/gcov/org.eclipse.linuxtools.gcov.core/src/org/eclipse/linuxtools/internal/gcov/parser/GcnoRecordsParser.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2018 STMicroelectronics and others.
+ * Copyright (c) 2009, 2021 STMicroelectronics and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -90,6 +90,14 @@
// stamp = stream.readInt();
stream.readInt();
+ if (version >= GCC_VER_910) {
+ GcovStringReader.readString(stream); // cwd
+ }
+
+ if (version >= GCC_VER_810) {
+ stream.readInt(); // supports_has_unexecuted_blocks
+ }
+
/*------------------------------------------------------------------------------
System.out.println("Gcno LE, Magic "+magic+" version "+version+" stamp "+stamp);
*/