| /******************************************************************************* |
| * Copyright (c) 2009 STMicroelectronics. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Xavier Raynaud <xavier.raynaud@st.com> - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.linuxtools.binutils.utils; |
| |
| import java.io.IOException; |
| |
| import org.eclipse.cdt.core.IAddress; |
| import org.eclipse.cdt.utils.Addr2line; |
| |
| /** |
| * Addr2line implementation, compatible with "hostname:file:linenumber" format of addr2line output. |
| */ |
| public class STAddr2line extends Addr2line { |
| |
| /** |
| * Constructor |
| * |
| * @param cmd The command to run. |
| * @param file The binary file. |
| * @throws IOException If any IOException happened. |
| */ |
| public STAddr2line(String cmd, String file) throws IOException { |
| super(cmd, file); |
| } |
| |
| @Override |
| public String getLine(IAddress address) throws IOException { |
| String s = super.getLine(address); |
| int index1 = s.lastIndexOf(':'); |
| int index2 = s.indexOf(':'); |
| if (index1 != index2 && index2 != 2) { |
| s = s.substring(index2 + 1); |
| } |
| return s; |
| } |
| |
| } |