Bug 427401 - Failure to Parse addr2line binutil output
Fixed Addr2line.java
Change-Id: I9b42e8925c86e238ce6dc610d9e0617b11981f42
Signed-off-by: Brad Chiu <brad@andestech.com>
Reviewed-on: https://git.eclipse.org/r/24935
Tested-by: Hudson CI
Reviewed-by: Jonathan Williams <jonwilliams@qnx.com>
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr2line.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr2line.java
index 8a370d0..9f68764 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr2line.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr2line.java
@@ -15,6 +15,8 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.utils.spawner.ProcessFactory;
@@ -25,6 +27,7 @@
private BufferedReader stdout;
private BufferedWriter stdin;
private String lastaddr, lastsymbol, lastline;
+ private static final Pattern OUTPUT_PATTERN = Pattern.compile("(.*)( \\(discriminator.*\\))"); //$NON-NLS-1$
//private boolean isDisposed = false;
public Addr2line(String command, String[] params, String file) throws IOException {
@@ -113,6 +116,7 @@
//IPF_TODO: check
for (int i = 0; i <= 20; i += 4, address = address.add(i)) {
String line = getLine(address);
+ line = parserOutput(line);
if (line != null) {
int colon = line.lastIndexOf(':');
String number = line.substring(colon + 1);
@@ -138,6 +142,14 @@
addr2line.destroy();
//isDisposed = true;
}
+
+ private String parserOutput(String line) {
+ Matcher matcher = OUTPUT_PATTERN.matcher(line);
+ if (matcher.matches() && matcher.groupCount() > 1) {
+ line = matcher.group(1);
+ }
+ return line;
+ }
}