Index: Addr2line.java =================================================================== retrieving revision 1.5 diff -u -r1.5 Addr2line.java --- Addr2line.java 26 Feb 2004 23:10:24 -0000 1.5 +++ Addr2line.java 27 Feb 2004 21:44:22 -0000 @@ -14,23 +14,38 @@ import org.eclipse.cdt.utils.spawner.ProcessFactory; public class Addr2line { + private String[] args; private Process addr2line; private BufferedReader stdout; private BufferedWriter stdin; private String lastaddr, lastsymbol, lastline; - public Addr2line(String command, String file) throws IOException { - String[] args = {command, "-C", "-f", "-e", file}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - addr2line = ProcessFactory.getFactory().exec(args); - stdin = new BufferedWriter(new OutputStreamWriter(addr2line.getOutputStream())); - stdout = new BufferedReader(new InputStreamReader(addr2line.getInputStream())); + public Addr2line(String command, String[] params, String file) throws IOException { + init(command, params, file); } + public Addr2line(String command, String file) throws IOException { + this(command, new String[0], file); + } + public Addr2line(String file) throws IOException { this("addr2line", file); //$NON-NLS-1$ } - private void getOutput(String address) throws IOException { + protected void init(String command, String[] params, String file) throws IOException { + if (params == null || params.length == 0) { + args = new String[] {command, "-C", "-f", "-e", file}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + } else { + args = new String[params.length + 1]; + args[0] = command; + System.arraycopy(params, 0, args, 1, params.length); + } + addr2line = ProcessFactory.getFactory().exec(args); + stdin = new BufferedWriter(new OutputStreamWriter(addr2line.getOutputStream())); + stdout = new BufferedReader(new InputStreamReader(addr2line.getInputStream())); + } + + protected void getOutput(String address) throws IOException { if ( address.equals(lastaddr) == false ) { stdin.write(address + "\n"); //$NON-NLS-1$ stdin.flush(); Index: CPPFilt.java =================================================================== retrieving revision 1.4 diff -u -r1.4 CPPFilt.java --- CPPFilt.java 26 Feb 2004 23:10:24 -0000 1.4 +++ CPPFilt.java 27 Feb 2004 21:44:22 -0000 @@ -14,20 +14,34 @@ import org.eclipse.cdt.utils.spawner.ProcessFactory; public class CPPFilt { + private String[] args; private Process cppfilt; private BufferedReader stdout; private BufferedWriter stdin; - public CPPFilt(String command) throws IOException { - String[] args = {command}; - cppfilt = ProcessFactory.getFactory().exec(args); - //cppfilt = new Spawner(args); - stdin = new BufferedWriter(new OutputStreamWriter(cppfilt.getOutputStream())); - stdout = new BufferedReader(new InputStreamReader(cppfilt.getInputStream())); + public CPPFilt(String command, String[] params) throws IOException { + init(command, params); } - + + public CPPFilt(String command) throws IOException { + this(command, new String[0]); + } + public CPPFilt() throws IOException { this("c++filt"); //$NON-NLS-1$ + } + + protected void init(String command, String[] params) throws IOException { + if (params == null || params.length == 0) { + args = new String[] {command}; + } else { + args = new String[params.length + 1]; + args[0] = command; + System.arraycopy(params, 0, args, 1, params.length); + } + cppfilt = ProcessFactory.getFactory().exec(args); + stdin = new BufferedWriter(new OutputStreamWriter(cppfilt.getOutputStream())); + stdout = new BufferedReader(new InputStreamReader(cppfilt.getInputStream())); } public String getFunction(String symbol) throws IOException { Index: Objdump.java =================================================================== retrieving revision 1.2 diff -u -r1.2 Objdump.java --- Objdump.java 26 Feb 2004 23:10:24 -0000 1.2 +++ Objdump.java 27 Feb 2004 21:44:23 -0000 @@ -50,7 +50,7 @@ this("objdump", new String[0], file); //$NON-NLS-1$ } - void init(String command, String[] params, String file) throws IOException { + protected void init(String command, String[] params, String file) throws IOException { if (params == null || params.length == 0) { args = new String[] { command, "-C", "-x", "-S", file }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } else {