/******************************************************************************* * Copyright (c) 2009, 2016 STMicroelectronics and others. * 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 * Ingenico - Vincent Guignot <vincent.guignot@ingenico.com> - Add binutils strings *******************************************************************************/ package org.eclipse.linuxtools.binutils.utils; import java.io.IOException; import org.eclipse.cdt.utils.Addr2line; import org.eclipse.cdt.utils.CPPFilt; import org.eclipse.cdt.utils.CommandLineUtil; import org.eclipse.core.resources.IProject; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.linuxtools.internal.Activator; import org.eclipse.linuxtools.internal.binutils.preferences.BinutilsPreferencePage; import org.eclipse.linuxtools.tools.launch.core.factory.RuntimeProcessFactory; /** * Default binutils factory. */ public class DefaultBinutilsFactory implements ISTBinutilsFactory { @Override public Addr2line getAddr2line(String path, IProject project) throws IOException { IPreferenceStore prefsStore = Activator.getDefault().getPreferenceStore(); String addr2lineCmd = prefsStore.getString(BinutilsPreferencePage.PREFKEY_ADDR2LINE_CMD); String addr2lineArgs = prefsStore.getString(BinutilsPreferencePage.PREFKEY_ADDR2LINE_ARGS); String[] args = CommandLineUtil.argumentsToArray(addr2lineArgs); String addr2line = RuntimeProcessFactory.getFactory().whichCommand(addr2lineCmd, project); return new Addr2line(addr2line, args, path); } @Override public CPPFilt getCPPFilt(IProject project) throws IOException { IPreferenceStore prefsStore = Activator.getDefault().getPreferenceStore(); String cppfiltCmd = prefsStore.getString(BinutilsPreferencePage.PREFKEY_CPPFILT_CMD); String cppfiltArgs = prefsStore.getString(BinutilsPreferencePage.PREFKEY_CPPFILT_ARGS); String[] args = CommandLineUtil.argumentsToArray(cppfiltArgs); String cppfilt = RuntimeProcessFactory.getFactory().whichCommand(cppfiltCmd, project); return new CPPFilt(cppfilt, args); } @Override public STNM getNM(String path, STNMSymbolsHandler handler, IProject project) throws IOException { IPreferenceStore prefsStore = Activator.getDefault().getPreferenceStore(); String nmCmd = prefsStore.getString(BinutilsPreferencePage.PREFKEY_NM_CMD); String nmArgs = prefsStore.getString(BinutilsPreferencePage.PREFKEY_NM_ARGS); String[] args = CommandLineUtil.argumentsToArray(nmArgs); String nm = RuntimeProcessFactory.getFactory().whichCommand(nmCmd, project); return new STNM(nm, args, path, handler, project); } /** * @since 6.0 */ @Override public STStrings getSTRINGS(IProject project) throws IOException { IPreferenceStore prefsStore = Activator.getDefault().getPreferenceStore(); String stringsCmd = prefsStore.getString(BinutilsPreferencePage.PREFKEY_STRINGS_CMD); String stringsArgs = prefsStore.getString(BinutilsPreferencePage.PREFKEY_STRINGS_ARGS); String[] args = CommandLineUtil.argumentsToArray(stringsArgs); String strings = RuntimeProcessFactory.getFactory().whichCommand(stringsCmd, project); return new STStrings(strings, args); } /** * No availability test for default binutils. */ @Override public boolean testAvailability() { return true; } }