summaryrefslogtreecommitdiffstats
path: root/libjava
diff options
context:
space:
mode:
authorbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2006-05-11 20:53:04 +0000
committerbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2006-05-11 20:53:04 +0000
commitaf2b21637931567dec52f37c2a8397b26936d8d1 (patch)
tree2ebddb0c7876525f8fd0157cba925718c4cc7d8e /libjava
parent92fcf68fbe7b4cb5dd8dc59a4a414642b87d2bab (diff)
downloadppe42-gcc-af2b21637931567dec52f37c2a8397b26936d8d1.tar.gz
ppe42-gcc-af2b21637931567dec52f37c2a8397b26936d8d1.zip
2006-05-11 Bryce McKinlay <mckinlay@redhat.com>
* gnu/gcj/runtime/NameFinder.java (blacklist): New static field. (lookup): If addr2line fails to find an address, flag the binary as having no debug info and avoid calling addr2line on it again. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113711 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog6
-rw-r--r--libjava/gnu/gcj/runtime/NameFinder.java15
2 files changed, 20 insertions, 1 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index b110904c45e..fa8be5db688 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,9 @@
+2006-05-11 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/gcj/runtime/NameFinder.java (blacklist): New static field.
+ (lookup): If addr2line fails to find an address, flag the binary as
+ having no debug info and avoid calling addr2line on it again.
+
2006-05-11 David Daney <ddaney@avtrex.com>
* testsuite/libjava.compile/PR20418.java: New.
diff --git a/libjava/gnu/gcj/runtime/NameFinder.java b/libjava/gnu/gcj/runtime/NameFinder.java
index 3a31a2d2d9b..bfc3e25d345 100644
--- a/libjava/gnu/gcj/runtime/NameFinder.java
+++ b/libjava/gnu/gcj/runtime/NameFinder.java
@@ -20,8 +20,11 @@ import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.io.File;
+import java.util.Collections;
import java.util.Iterator;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
/**
@@ -54,6 +57,10 @@ public class NameFinder
private String sourceFile;
private int lineNum;
private HashMap procs = new HashMap();
+ /**
+ * Set of binary files that addr2line should not be called on.
+ */
+ private static Set blacklist = Collections.synchronizedSet(new HashSet());
private static final boolean use_addr2line
= Boolean.valueOf(System.getProperty
@@ -150,7 +157,7 @@ public class NameFinder
sourceFile = null;
lineNum = -1;
- if (! use_addr2line)
+ if (! use_addr2line || blacklist.contains(file))
return;
Addr2Line addr2line = (Addr2Line) procs.get(file);
if (addr2line == null)
@@ -179,6 +186,12 @@ public class NameFinder
String lineNumStr = result.substring(split + 1, result.length());
lineNum = Integer.parseInt (lineNumStr);
}
+ else
+ {
+ /* This binary has no debug info (assuming addr was valid).
+ Avoid repeat addr2line invocations. */
+ blacklist.add(binaryFile);
+ }
}
catch (IOException ioe)
{
OpenPOWER on IntegriCloud