From f259d60aa3f6bbbd120acfd461e35f45fef6f7c0 Mon Sep 17 00:00:00 2001
From: ewaterlander <102143930+ewaterlander@users.noreply.github.com>
Date: Tue, 10 Dec 2024 18:08:08 +0100
Subject: [PATCH] Debugger and Source tabs for the Core Build launch
 configuration. (#950)

The launch configuration for local Core Build projects got the
Debugger and Source tabs in debug mode. Now the user can set the stop
at startup, a specific debugger, and all other Debug options as we
know from Managed Build projects.

The GdbLaunch class automatically picks up all the debug settings from
these new tabs. No additional code was needed for that.

The composition of Core Build tab groups is now fully done via the
launchConfigurationTabGroups extension-point.

This change relates to #758. It affects all Core Build projects,
including CMake projects.
---
 .../META-INF/MANIFEST.MF                      |  2 +-
 debug/org.eclipse.cdt.debug.core/plugin.xml   |  2 -
 .../META-INF/MANIFEST.MF                      |  2 +-
 .../plugin.properties                         |  1 +
 dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.xml | 69 +++++++++++++++++++
 dsf-gdb/org.eclipse.cdt.dsf.gdb/plugin.xml    | 25 +++----
 .../CoreBuildLocalDebugLaunchDelegate.java    |  6 --
 .../META-INF/MANIFEST.MF                      |  2 +-
 .../org.eclipse.cdt.launch/plugin.properties  |  1 +
 launch/org.eclipse.cdt.launch/plugin.xml      | 68 +++++++++++++++++-
 .../LocalLaunchConfigurationTabGroup.java     | 33 ---------
 .../org/eclipse/cdt/launch/ui/CMainTab2.java  |  2 +-
 .../launch/ui/corebuild/CoreBuildMainTab.java | 10 +++
 .../ui/corebuild/CoreBuildMainTab2.java       |  2 +-
 .../cdt/launch/ui/corebuild/CoreBuildTab.java |  8 +++
 15 files changed, 170 insertions(+), 63 deletions(-)
 delete mode 100644 launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/corebuild/LocalLaunchConfigurationTabGroup.java

diff --git a/debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF
index 2789f1a3945..62c69ad6749 100644
--- a/debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF
+++ b/debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt.debug.core; singleton:=true
-Bundle-Version: 8.8.700.qualifier
+Bundle-Version: 8.8.800.qualifier
 Bundle-Activator: org.eclipse.cdt.debug.core.CDebugCorePlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/debug/org.eclipse.cdt.debug.core/plugin.xml b/debug/org.eclipse.cdt.debug.core/plugin.xml
index 16958692c9c..fb35d4a081b 100644
--- a/debug/org.eclipse.cdt.debug.core/plugin.xml
+++ b/debug/org.eclipse.cdt.debug.core/plugin.xml
@@ -464,9 +464,7 @@
    <extension
          point="org.eclipse.debug.core.launchConfigurationTypes">
       <launchConfigurationType
-            delegate="org.eclipse.cdt.debug.internal.core.launch.CoreBuildLocalRunLaunchDelegate"
             id="org.eclipse.cdt.debug.core.localCoreBuildLaunchConfigType"
-            modes="run"
             name="%localApplicationLaunch.name"
             public="false">
       </launchConfigurationType>
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/META-INF/MANIFEST.MF b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/META-INF/MANIFEST.MF
index c79e28c39ba..3ee578ff4b6 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/META-INF/MANIFEST.MF
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb.ui;singleton:=true
-Bundle-Version: 2.8.400.qualifier
+Bundle-Version: 2.8.500.qualifier
 Bundle-Activator: org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui,
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.properties
index bb0e517600e..b16bb26c6db 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.properties
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.properties
@@ -28,6 +28,7 @@ launchTab.debugger.name=Debugger
 launchTab.sourceLookup.name=Source
 launchTab.common.name=Common
 launchTab.environment.name=Environment
+launchTab.buildsettings.name=Build Settings
 
 breakpoints.property.filter=Filter
 tracepoints.property.common=Common
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.xml b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.xml
index bc74c689b2f..b22826315ba 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.xml
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/plugin.xml
@@ -150,6 +150,75 @@
          <associatedDelegate delegate="org.eclipse.cdt.dsf.gdb.launch.coreCLaunch"/>
          <placement after="org.eclipse.debug.ui.sourceLookupTab"/>
       </tab>
+      <tab
+            class="org.eclipse.cdt.launch.ui.corebuild.CoreBuildMainTab2"
+            group="org.eclipse.cdt.launch.launchConfigurationTabGroup.local"
+            id="org.eclipse.cdt.cdi.launch.localCoreBuild.mainTab"
+            name="%launchTab.main.name">
+         <associatedDelegate
+               delegate="org.eclipse.cdt.dsf.gdb.coreBuildLocalDebug">
+         </associatedDelegate>
+      </tab>
+      <tab
+            class="org.eclipse.cdt.launch.ui.corebuild.CoreBuildTab"
+            group="org.eclipse.cdt.launch.launchConfigurationTabGroup.local"
+            id="org.eclipse.cdt.cdi.launch.localCoreBuild.buildSettingsTab"
+            name="%launchTab.buildsettings.name">
+         <associatedDelegate
+               delegate="org.eclipse.cdt.dsf.gdb.coreBuildLocalDebug">
+         </associatedDelegate>
+         <placement
+               after="org.eclipse.cdt.cdi.launch.mainTab">
+         </placement>
+      </tab>
+      <tab
+            class="org.eclipse.cdt.launch.ui.CArgumentsTab"
+            group="org.eclipse.cdt.launch.launchConfigurationTabGroup.local"
+            id="org.eclipse.cdt.cdi.launch.localCoreBuild.argumentsTab"
+            name="%launchTab.arguments.name">
+         <associatedDelegate
+               delegate="org.eclipse.cdt.dsf.gdb.coreBuildLocalDebug">
+         </associatedDelegate>
+         <placement
+               after="org.eclipse.cdt.cdi.launch.buildSettingsTab">
+         </placement>
+      </tab>
+      <tab
+            class="org.eclipse.debug.ui.EnvironmentTab"
+            group="org.eclipse.cdt.launch.launchConfigurationTabGroup.local"
+            id="org.eclipse.cdt.cdi.launch.localCoreBuild.environmentTab"
+            name="%launchTab.environment.name">
+         <associatedDelegate
+               delegate="org.eclipse.cdt.dsf.gdb.coreBuildLocalDebug">
+         </associatedDelegate>
+         <placement
+               after="org.eclipse.cdt.cdi.launch.argumentsTab">
+         </placement>
+      </tab>
+      <tab
+            class="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab"
+            group="org.eclipse.cdt.launch.launchConfigurationTabGroup.local"
+            id="org.eclipse.cdt.cdi.launch.localCoreBuild.debugTab"
+            name="%launchTab.debugger.name">
+         <associatedDelegate
+               delegate="org.eclipse.cdt.dsf.gdb.coreBuildLocalDebug">
+         </associatedDelegate>
+         <placement
+               after="org.eclipse.debug.ui.environmentTab">
+         </placement>
+      </tab>
+      <tab
+            class="org.eclipse.debug.ui.sourcelookup.SourceLookupTab"
+            group="org.eclipse.cdt.launch.launchConfigurationTabGroup.local"
+            id="org.eclipse.cdt.cdi.launch.localCoreBuild.sourceLookupTab"
+            name="%launchTab.sourceLookup.name">
+         <associatedDelegate
+               delegate="org.eclipse.cdt.dsf.gdb.coreBuildLocalDebug">
+         </associatedDelegate>
+         <placement
+               after="org.eclipse.cdt.dsf.gdb.launch.debuggerTab">
+         </placement>
+      </tab>
    </extension>
    <extension point="org.eclipse.core.runtime.adapters">
       <!-- Extenders providing their own subclass of GdbAdapterFactory must also extend GdbLaunch 
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/plugin.xml b/dsf-gdb/org.eclipse.cdt.dsf.gdb/plugin.xml
index ba1519fc785..6e603323798 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/plugin.xml
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/plugin.xml
@@ -43,6 +43,15 @@
             sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
             sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer">
       </launchDelegate>
+      <launchDelegate
+            delegate="org.eclipse.cdt.dsf.gdb.internal.launching.CoreBuildLocalDebugLaunchDelegate"
+            id="org.eclipse.cdt.dsf.gdb.coreBuildLocalDebug"
+            modes="debug"
+            name="%coreBuildLocalDebug.name"
+            sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
+            sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer"
+            type="org.eclipse.cdt.debug.core.localCoreBuildLaunchConfigType">
+      </launchDelegate>
    </extension>
    
    <extension
@@ -85,22 +94,6 @@
 		</bundle>
 	</component>
    </extension>
-   <extension
-         point="org.eclipse.debug.core.launchDelegates">
-      <launchDelegate
-            delegate="org.eclipse.cdt.dsf.gdb.internal.launching.CoreBuildLocalDebugLaunchDelegate"
-            id="org.eclipse.cdt.dsf.gdb.coreBuildLocalDebug"
-            modes="debug"
-            name="%coreBuildLocalDebug.name"
-            sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
-            sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer"
-            type="org.eclipse.cdt.debug.core.localCoreBuildLaunchConfigType">
-         <modeCombination
-               modes="debug"
-               perspective="org.eclipse.debug.ui.DebugPerspective">
-         </modeCombination>
-      </launchDelegate>
-   </extension>
    <extension
          point="org.eclipse.launchbar.core.launchTargetTypes">
       <launchTargetType
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/CoreBuildLocalDebugLaunchDelegate.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/CoreBuildLocalDebugLaunchDelegate.java
index 5c66df142ea..0f165bf4406 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/CoreBuildLocalDebugLaunchDelegate.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/launching/CoreBuildLocalDebugLaunchDelegate.java
@@ -10,15 +10,12 @@
  *******************************************************************************/
 package org.eclipse.cdt.dsf.gdb.internal.launching;
 
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.ExecutionException;
 
 import org.eclipse.cdt.core.build.ICBuildConfiguration;
-import org.eclipse.cdt.core.build.IToolChain;
 import org.eclipse.cdt.core.model.IBinary;
 import org.eclipse.cdt.debug.core.launch.CoreBuildLaunchConfigDelegate;
 import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
@@ -82,9 +79,6 @@ public class CoreBuildLocalDebugLaunchDelegate extends CoreBuildLaunchConfigDele
 		envProps.putAll(buildEnv);
 		gdbLaunch.setInitialEnvironment(envProps);
 
-		IToolChain toolChain = buildConfig.getToolChain();
-		Path gdbPath = toolChain.getCommandPath(Paths.get("gdb")); //$NON-NLS-1$
-		gdbLaunch.setGDBPath(gdbPath != null ? gdbPath.toString() : "gdb"); //$NON-NLS-1$
 		String gdbVersion = gdbLaunch.getGDBVersion();
 
 		IBinary exeFile = getBinary(buildConfig);
diff --git a/launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF b/launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF
index 9913822226b..950b97b5bad 100644
--- a/launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF
+++ b/launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt.launch; singleton:=true
-Bundle-Version: 10.4.700.qualifier
+Bundle-Version: 11.0.0.qualifier
 Bundle-Activator: org.eclipse.cdt.launch.internal.ui.LaunchUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/launch/org.eclipse.cdt.launch/plugin.properties b/launch/org.eclipse.cdt.launch/plugin.properties
index c90a3c5d7c3..47d3d5ea279 100644
--- a/launch/org.eclipse.cdt.launch/plugin.properties
+++ b/launch/org.eclipse.cdt.launch/plugin.properties
@@ -19,6 +19,7 @@ LocalCDTLaunch.name=Run Process
 LocalCDTLaunch.description=Execute the specified process
 
 MainLaunchTab.name=Main
+BuildSettingsLaunchTab.name=Build Settings
 ArgumentsLaunchTab.name=Arguments
 EnvironmentLaunchTab.name=Environment
 SourceLookupLaunchTab.name=Source
diff --git a/launch/org.eclipse.cdt.launch/plugin.xml b/launch/org.eclipse.cdt.launch/plugin.xml
index 662f0ae9710..c3f298f9905 100644
--- a/launch/org.eclipse.cdt.launch/plugin.xml
+++ b/launch/org.eclipse.cdt.launch/plugin.xml
@@ -16,6 +16,16 @@
             sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
             sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer">
       </launchDelegate>
+      <launchDelegate
+            delegate="org.eclipse.cdt.debug.internal.core.launch.CoreBuildLocalRunLaunchDelegate"
+            delegateDescription="%LocalCDTLaunch.description"
+            id="org.eclipse.cdt.cdi.launch.localCoreBuildCLaunch"
+            modes="run"
+            name="%LocalCDTLaunch.name"
+            sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
+            sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer"
+            type="org.eclipse.cdt.debug.core.localCoreBuildLaunchConfigType">
+      </launchDelegate>
 
    </extension>
 
@@ -53,6 +63,51 @@
         <associatedDelegate delegate="org.eclipse.cdt.cdi.launch.localCLaunch"/>
         <placement after="org.eclipse.debug.ui.environmentTab"/>
       </tab>
+      <tab
+            class="org.eclipse.cdt.launch.ui.corebuild.CoreBuildMainTab2"
+            group="org.eclipse.cdt.launch.launchRunConfigurationTabGroup.local"
+            id="org.eclipse.cdt.cdi.launch.runLocalCoreBuild.mainTab"
+            name="%MainLaunchTab.name">
+         <associatedDelegate
+               delegate="org.eclipse.cdt.cdi.launch.localCoreBuildCLaunch">
+         </associatedDelegate>
+      </tab>
+      <tab
+            class="org.eclipse.cdt.launch.ui.corebuild.CoreBuildTab"
+            group="org.eclipse.cdt.launch.launchRunConfigurationTabGroup.local"
+            id="org.eclipse.cdt.cdi.launch.runLocalCoreBuild.buildSettingsTab"
+            name="%BuildSettingsLaunchTab.name">
+         <associatedDelegate
+               delegate="org.eclipse.cdt.cdi.launch.localCoreBuildCLaunch">
+         </associatedDelegate>
+         <placement
+               after="org.eclipse.cdt.cdi.launch.mainTab">
+         </placement>
+      </tab>
+      <tab
+            class="org.eclipse.cdt.launch.ui.CArgumentsTab"
+            group="org.eclipse.cdt.launch.launchRunConfigurationTabGroup.local"
+            id="org.eclipse.cdt.cdi.launch.runLocalCoreBuild.argumentsTab"
+            name="%ArgumentsLaunchTab.name">
+         <associatedDelegate
+               delegate="org.eclipse.cdt.cdi.launch.localCoreBuildCLaunch">
+         </associatedDelegate>
+         <placement
+               after="org.eclipse.cdt.cdi.launch.buildSettingsTab">
+         </placement>
+      </tab>
+      <tab
+            class="org.eclipse.debug.ui.EnvironmentTab"
+            group="org.eclipse.cdt.launch.launchRunConfigurationTabGroup.local"
+            id="org.eclipse.cdt.cdi.launch.runLocalCoreBuild.environmentTab"
+            name="%EnvironmentLaunchTab.name">
+         <associatedDelegate
+               delegate="org.eclipse.cdt.cdi.launch.localCoreBuildCLaunch">
+         </associatedDelegate>
+         <placement
+               after="org.eclipse.cdt.cdi.launch.argumentsTab">
+         </placement>
+      </tab>
    </extension>
    <extension
          point="org.eclipse.debug.core.statusHandlers">
@@ -109,9 +164,20 @@
    <extension
          point="org.eclipse.debug.ui.launchConfigurationTabGroups">
       <launchConfigurationTabGroup
-            class="org.eclipse.cdt.launch.internal.corebuild.LocalLaunchConfigurationTabGroup"
+            class="org.eclipse.cdt.debug.internal.ui.launch.PlaceHolderLaunchConfigurationTabGroup"
             id="org.eclipse.cdt.launch.launchConfigurationTabGroup.local"
             type="org.eclipse.cdt.debug.core.localCoreBuildLaunchConfigType">
+         <launchMode
+               mode="debug">
+         </launchMode>
+      </launchConfigurationTabGroup>
+      <launchConfigurationTabGroup
+            class="org.eclipse.cdt.debug.internal.ui.launch.PlaceHolderLaunchConfigurationTabGroup"
+            id="org.eclipse.cdt.launch.launchRunConfigurationTabGroup.local"
+            type="org.eclipse.cdt.debug.core.localCoreBuildLaunchConfigType">
+         <launchMode
+               mode="run">
+         </launchMode>
       </launchConfigurationTabGroup>
       <launchConfigurationTabGroup
             class="org.eclipse.cdt.launch.internal.corebuild.GenericLaunchConfigTabGroup"
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/corebuild/LocalLaunchConfigurationTabGroup.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/corebuild/LocalLaunchConfigurationTabGroup.java
deleted file mode 100644
index 3636caa3d49..00000000000
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/corebuild/LocalLaunchConfigurationTabGroup.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *******************************************************************************/
-package org.eclipse.cdt.launch.internal.corebuild;
-
-import org.eclipse.cdt.launch.ui.CArgumentsTab;
-import org.eclipse.cdt.launch.ui.corebuild.CoreBuildMainTab2;
-import org.eclipse.cdt.launch.ui.corebuild.CoreBuildTab;
-import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
-import org.eclipse.debug.ui.EnvironmentTab;
-import org.eclipse.debug.ui.ILaunchConfigurationDialog;
-import org.eclipse.debug.ui.ILaunchConfigurationTab;
-
-public class LocalLaunchConfigurationTabGroup extends AbstractLaunchConfigurationTabGroup {
-
-	@Override
-	public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
-		ILaunchConfigurationTab mainTab = new CoreBuildMainTab2();
-		ILaunchConfigurationTab buildTab = new CoreBuildTab();
-		ILaunchConfigurationTab argumentsTab = new CArgumentsTab();
-		ILaunchConfigurationTab environmentTab = new EnvironmentTab();
-
-		setTabs(new ILaunchConfigurationTab[] { mainTab, buildTab, argumentsTab, environmentTab });
-	}
-
-}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab2.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab2.java
index de2f6be5ada..e1fe80ec746 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab2.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab2.java
@@ -112,7 +112,7 @@ public class CMainTab2 extends CAbstractMainTab {
 	}
 
 	/**
-	 * @since 10.4
+	 * @since 11.0
 	 */
 	protected void setDontCheckProgram(boolean dontCheck) {
 		fDontCheckProgram = dontCheck;
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/corebuild/CoreBuildMainTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/corebuild/CoreBuildMainTab.java
index 4097d0d0824..5898974f2e9 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/corebuild/CoreBuildMainTab.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/corebuild/CoreBuildMainTab.java
@@ -29,6 +29,12 @@ import org.eclipse.swt.widgets.Text;
  */
 public class CoreBuildMainTab extends AbstractLaunchConfigurationTab {
 
+	/**
+	 * @since 11.0
+	 */
+	// Same as CoreBuildMainTab2/CMainTab2
+	public static final String TAB_ID = "org.eclipse.cdt.cdi.launch.mainTab"; //$NON-NLS-1$
+
 	private Text projectName;
 
 	@Override
@@ -79,4 +85,8 @@ public class CoreBuildMainTab extends AbstractLaunchConfigurationTab {
 		return "Main";
 	}
 
+	@Override
+	public String getId() {
+		return TAB_ID;
+	}
 }
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/corebuild/CoreBuildMainTab2.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/corebuild/CoreBuildMainTab2.java
index d41b8ef5c74..49a791ab406 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/corebuild/CoreBuildMainTab2.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/corebuild/CoreBuildMainTab2.java
@@ -16,7 +16,7 @@ import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.swt.widgets.Composite;
 
 /**
- * @since 10.4
+ * @since 11.0
  */
 public class CoreBuildMainTab2 extends CMainTab2 {
 
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/corebuild/CoreBuildTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/corebuild/CoreBuildTab.java
index c1c01ba7b64..8e1996b9230 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/corebuild/CoreBuildTab.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/corebuild/CoreBuildTab.java
@@ -40,6 +40,10 @@ import org.eclipse.swt.widgets.Label;
  */
 public class CoreBuildTab extends AbstractLaunchConfigurationTab {
 
+	/**
+	 * @since 11.0
+	 */
+	public static final String TAB_ID = "org.eclipse.cdt.cdi.launch.buildSettingsTab"; //$NON-NLS-1$
 	private Composite container;
 	private IProject activeProject;
 	private ILaunchConfigurationTab activeTab;
@@ -155,4 +159,8 @@ public class CoreBuildTab extends AbstractLaunchConfigurationTab {
 		return null;
 	}
 
+	@Override
+	public String getId() {
+		return TAB_ID;
+	}
 }