From d92c4ee999c8a142bd0d80ac87aa4d3caa1c55a6 Mon Sep 17 00:00:00 2001 From: "beard%netscape.com" Date: Thu, 31 Aug 2000 01:07:33 +0000 Subject: [PATCH] Linux: used to map library +offset to file:line --- gc/boehm/leaksoup/Addr2Line.java | 70 ++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 gc/boehm/leaksoup/Addr2Line.java diff --git a/gc/boehm/leaksoup/Addr2Line.java b/gc/boehm/leaksoup/Addr2Line.java new file mode 100644 index 000000000000..b0412a50c544 --- /dev/null +++ b/gc/boehm/leaksoup/Addr2Line.java @@ -0,0 +1,70 @@ +/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + * Patrick C. Beard + * + * Alternatively, the contents of this file may be used under the + * terms of the GNU Public License (the "GPL"), in which case the + * provisions of the GPL are applicable instead of those above. + * If you wish to allow use of your version of this file only + * under the terms of the GPL and not to allow others to use your + * version of this file under the NPL, indicate your decision by + * deleting the provisions above and replace them with the notice + * and other provisions required by the GPL. If you do not delete + * the provisions above, a recipient may use your version of this + * file under either the NPL or the GPL. + */ + +/* + Addr2Line.java + + Invokes the addr2line process to convert library +offset pairs into + filepath:line values. + + by Patrick C. Beard. + */ + +import java.util.*; +import java.io.*; + +public class Addr2Line { + private Process addr2line; + private BufferedWriter stdin; + private BufferedReader stdout; + private BufferedReader stderr; + + public Addr2Line(String library) throws IOException { + String[] args = { "/trees/binutils-2.10/binutils/addr2line", "-C", "-f", "-e", library }; + addr2line = Runtime.getRuntime().exec(args); + stdin = new BufferedWriter(new OutputStreamWriter(addr2line.getOutputStream())); + stdout = new BufferedReader(new InputStreamReader(addr2line.getInputStream())); + stderr = new BufferedReader(new InputStreamReader(addr2line.getErrorStream())); + } + + public String getLine(String address) throws IOException { + stdin.write(address + "\n"); stdin.flush(); + String symbol = stdout.readLine(); + String source = stdout.readLine(); + return symbol + "[" + source + "]"; + } +} +