diff --git a/org.eclipse.cdt.debug.edc.windows.agent/.cproject b/org.eclipse.cdt.debug.edc.windows.agent/.cproject
index 8529c4d..21ee09a 100644
--- a/org.eclipse.cdt.debug.edc.windows.agent/.cproject
+++ b/org.eclipse.cdt.debug.edc.windows.agent/.cproject
@@ -98,255 +98,6 @@
 			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
 			<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
 			<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
-			<storageModule moduleId="scannerConfiguration">
-				<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-				<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="makefileGenerator">
-						<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1644349601;cdt.managedbuild.config.gnu.mingw.exe.debug.1644349601.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.472286202;cdt.managedbuild.tool.gnu.cpp.compiler.input.843378569">
-					<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
-					<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="makefileGenerator">
-							<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-				</scannerConfigBuildInfo>
-				<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1644349601;cdt.managedbuild.config.gnu.mingw.exe.debug.1644349601.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.1347372394;cdt.managedbuild.tool.gnu.c.compiler.input.1194206575">
-					<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
-					<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="makefileGenerator">
-							<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-				</scannerConfigBuildInfo>
-			</storageModule>
 		</cconfiguration>
 		<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.release.757224056">
 			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.release.757224056" moduleId="org.eclipse.cdt.core.settings" name="Release">
@@ -435,255 +186,6 @@
 			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
 			<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
 			<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
-			<storageModule moduleId="scannerConfiguration">
-				<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-				<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="makefileGenerator">
-						<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-					<buildOutputProvider>
-						<openAction enabled="true" filePath=""/>
-						<parser enabled="true"/>
-					</buildOutputProvider>
-					<scannerInfoProvider id="specsFile">
-						<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
-						<parser enabled="true"/>
-					</scannerInfoProvider>
-				</profile>
-				<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1644349601;cdt.managedbuild.config.gnu.mingw.exe.debug.1644349601.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.472286202;cdt.managedbuild.tool.gnu.cpp.compiler.input.843378569">
-					<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
-					<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="makefileGenerator">
-							<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-				</scannerConfigBuildInfo>
-				<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1644349601;cdt.managedbuild.config.gnu.mingw.exe.debug.1644349601.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.1347372394;cdt.managedbuild.tool.gnu.c.compiler.input.1194206575">
-					<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
-					<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="makefileGenerator">
-							<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-					<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-						<buildOutputProvider>
-							<openAction enabled="true" filePath=""/>
-							<parser enabled="true"/>
-						</buildOutputProvider>
-						<scannerInfoProvider id="specsFile">
-							<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
-							<parser enabled="true"/>
-						</scannerInfoProvider>
-					</profile>
-				</scannerConfigBuildInfo>
-			</storageModule>
 		</cconfiguration>
 	</storageModule>
 	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
diff --git a/org.eclipse.cdt.debug.edc.windows.agent/src/win_agent/WinHWPageProtMgr.cpp b/org.eclipse.cdt.debug.edc.windows.agent/src/win_agent/WinHWPageProtMgr.cpp
new file mode 100644
index 0000000..9f8664f
--- /dev/null
+++ b/org.eclipse.cdt.debug.edc.windows.agent/src/win_agent/WinHWPageProtMgr.cpp
@@ -0,0 +1,267 @@
+/*
+ * Copyright (c) 2011 Nokia 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:
+ * Nokia - Initial API and implementation
+ */
+
+/*
+ * WinHWPageProtMgr.cpp
+ *
+ *
+ *  Created on: Aug 23, 2011
+ *      Author: bkirk
+ */
+
+#include "WinHWPageProtMgr.h"
+
+#include "BreakpointsService.h"
+#include "WinProcess.h"
+
+#include <winbase.h>
+#include <winnt.h>
+
+#define PAGE_INVALID 0
+
+inline
+DWORD WinHWPageProtMgr::sPageProtModeMap(unsigned char i) {
+static const DWORD map[9]
+  = { PAGE_INVALID, PAGE_NOACCESS, PAGE_READONLY, PAGE_NOACCESS,
+	  PAGE_INVALID, PAGE_INVALID, PAGE_INVALID, PAGE_INVALID, PAGE_INVALID
+    };
+	return map[i];
+}
+
+WinHWPageProtMgr::WinHWPageProtMgr() {
+}
+
+bool WinHWPageProtMgr::IsAddressInProtectedPage(const ContextAddress& address) {
+	ProtectedPages::iterator p;
+	for (p = protectedPages.begin(); p != protectedPages.end(); ++p ) {
+		ProtectedPage& page = p->second;
+		if (address >= (ContextAddress)page.baseAddr
+			&& address < (ContextAddress)page.baseAddr + page.size)
+		{
+			return true;
+		}
+	}
+	return false;
+}
+
+TBreakpoint* WinHWPageProtMgr::FindWatchpointForAddress(
+		const HANDLE& procHandle, const ContextAddress& address) {
+	ProtectedPageWatchpoints::iterator w;
+	for (w = watchpoints.begin(); w != watchpoints.end(); ++w) {
+		TBreakpoint*& wp = w->second;
+		if (address >= wp->address && address < wp->address + wp->size) {
+			return wp;
+		}
+	}
+	return NULL;
+}
+
+int WinHWPageProtMgr::SetPageProtectWatchpoint(TBreakpoint* wp) {
+	if (!wp || !wp->process)
+		return ERR_INV_CONTEXT;
+	DWORD mode = sPageProtModeMap(wp->accessMode);
+	if (mode == PAGE_INVALID)
+		return ERR_PGPRO_INVALID_MODE;
+	int err = ProtectPageForWatchpointAddress(wp->process->GetProcessHandle(),
+								   wp->address, wp->size, mode);
+	if (err != 0)
+		return err;
+
+	watchpoints.insert(AddressWatchpointPair(wp->address, wp));
+	return 0;
+}
+
+int WinHWPageProtMgr::ClearPageProtectWatchpoint(TBreakpoint* wp) {
+	if (!wp || !wp->process)
+		return ERR_INV_CONTEXT;
+	int err = UnProtectPageForWatchpoint(wp);
+	if (err != 0)
+		return err;
+
+	watchpoints.erase(wp->address);
+	return 0;
+}
+
+
+int WinHWPageProtMgr::ProtectPageForWatchpointAddress(const HANDLE& procHandle,
+		const ContextAddress& address, const size_t size, const DWORD mode) {
+	if (mode != PAGE_NOACCESS && mode != PAGE_READONLY)
+		return ERR_PGPRO_INVALID_MODE;
+	// use an already protected page if appropriate
+	ProtectedPages::iterator iter;
+	for (iter = protectedPages.begin(); iter != protectedPages.end(); ++iter ) {
+		ProtectedPage& page = iter->second;
+		if (address+size >= (ContextAddress)page.baseAddr
+			&& address < (ContextAddress)page.baseAddr + page.size) {
+			// if the incoming mode is stronger, it must be enforced.
+			if (page.protectMode > mode) {
+				DWORD priorDebugProtection;
+				if (FAILED(::VirtualProtectEx(procHandle, page.baseAddr, page.size,
+											  mode, &priorDebugProtection)))
+					return ::GetLastError();
+			}
+			page.AddRef();
+			return 0;
+		}
+	}
+
+	MEMORY_BASIC_INFORMATION mbi;
+	if (FAILED(::VirtualQueryEx(procHandle, (LPVOID)address, &mbi, sizeof(MEMORY_BASIC_INFORMATION))))
+		return ::GetLastError();
+	if (mbi.State != MEM_COMMIT)
+		return ERR_PGPRO_UNSET;
+
+	DWORD originalProtection;
+	if (FAILED(::VirtualProtectEx(procHandle, mbi.BaseAddress, mbi.RegionSize,
+								  mode, &originalProtection)))
+		return ::GetLastError();
+
+	protectedPages.insert(AddressPagePair((ContextAddress)mbi.BaseAddress,
+			ProtectedPage(mbi.BaseAddress, mbi.RegionSize, originalProtection, mode)));
+
+	return 0;
+}
+
+int WinHWPageProtMgr::DisableForPagesContainingAddress(const HANDLE& procH,
+		const ContextAddress& addr, const DWORD size, const DWORD mode) {
+	bool found = false;
+	ProtectedPages::iterator p;
+	for (p = protectedPages.begin(); p != protectedPages.end(); ++p ) {
+		ProtectedPage& pg = p->second;
+		const ContextAddress pgLo = (ContextAddress)pg.baseAddr;
+		const ContextAddress pgHi = pgLo + pg.size;
+		if (((addr + size) >= pgLo) && (addr < pgHi)) {
+			if (!(mode == PAGE_READONLY && pg.protectMode == PAGE_READONLY)) {
+				DWORD oldP;
+				if (FAILED(::VirtualProtectEx(procH, pg.baseAddr, pg.size,
+											  pg.origProtectMode, &oldP)))
+					return ::GetLastError();
+				found = true;
+			}
+			if (size == 0 || ((addr >= pgLo) && ((addr + size) < pgHi)))
+				return 0;
+		}
+	}
+	return found ? 0 : ERR_PGPRO_NO_ADDR;
+}
+
+int WinHWPageProtMgr::EnableForPagesContainingAddress(const HANDLE& procH,
+		const ContextAddress& addr, const DWORD size, const DWORD mode) {
+	bool found = false;
+	ProtectedPages::iterator p;
+	for (p = protectedPages.begin(); p != protectedPages.end(); ++p ) {
+		ProtectedPage& pg = p->second;
+		const ContextAddress pgLo = (ContextAddress)pg.baseAddr;
+		const ContextAddress pgHi = pgLo + pg.size;
+		if (((addr + size) >= pgLo) && (addr < pgHi)) {
+			if (!(mode == PAGE_READONLY && pg.protectMode == PAGE_READONLY)) {
+				DWORD oldP;
+				if (FAILED(::VirtualProtectEx(procH, pg.baseAddr, pg.size,
+											  pg.protectMode, &oldP)))
+					return ::GetLastError();
+				found = true;
+			}
+			if (size == 0 || ((addr >= pgLo) && ((addr + size) < pgHi)))
+				return 0;
+		}
+	}
+	return ERR_PGPRO_NO_ADDR;
+}
+
+int WinHWPageProtMgr::UnProtectPageForWatchpoint(const TBreakpoint* wp) {
+	const HANDLE& procH = wp->process->GetProcessHandle();
+	const ContextAddress& address = wp->address;
+	const size_t size = wp->size;
+
+	ProtectedPages::iterator p;
+	for (p = protectedPages.begin(); p != protectedPages.end(); ++p ) {
+		ProtectedPage& pg = p->second;
+		if (address+size >= (ContextAddress)pg.baseAddr
+			&& address < (ContextAddress)pg.baseAddr + pg.size)
+		{
+			int err = 0;
+			DWORD priorDebugProtection;
+			if (0 == pg.DecRef()) {
+				if (FAILED(::VirtualProtectEx(procH, pg.baseAddr, pg.size,
+											  pg.origProtectMode, &priorDebugProtection)))
+					err = ::GetLastError();
+				else
+					protectedPages.erase(p);
+			} else {
+				err = ChangePageProtection(procH, wp, pg);
+			}
+			return err;
+		}
+	}
+	return ERR_PGPRO_NO_ADDR;
+}
+
+
+/*
+ * contract: call only if refCount on passed page is non-0 and if
+ * watchpoint for page being unprotected has valid process
+ * see if all remaining watchpoints in the passed page have a weaker
+ * access setting than the watchpoint that's going away, and if so
+ * change the protection.
+ */
+int WinHWPageProtMgr::ChangePageProtection(const HANDLE& procH,
+		const TBreakpoint* wpGone, ProtectedPage& pg) {
+
+	if (pg.refCount == 0)
+		return ERR_PGPRO_UNCHANGED;
+
+	if (!wpGone)
+		return ERR_INV_CONTEXT;
+
+    if (PAGE_READONLY == sPageProtModeMap(wpGone->accessMode))
+    	return 0;
+
+    DWORD otherProt = PAGE_INVALID;
+	ProtectedPageWatchpoints::iterator w;
+	for (w = watchpoints.begin(); w != watchpoints.end(); ++w) {
+		TBreakpoint*& wp = w->second;
+		if (wp == wpGone		// looking for other WPs; skip "this" one
+			|| wp->process != wpGone->process
+			|| wp->address + wp->size <= (ContextAddress)pg.baseAddr
+			|| wp->address >= (ContextAddress)pg.baseAddr + pg.size)
+			continue;
+
+		DWORD wpProt = sPageProtModeMap(wp->accessMode);
+		if (PAGE_INVALID == otherProt) {
+			otherProt = wpProt;	// first "other-WP" in this page
+		} else if (wpProt < otherProt) {
+			otherProt = PAGE_NOACCESS;
+			break;		// another WP in same page w/different access
+		} else if (otherProt < wpProt) {
+			break;		// another WP in same page w/different access
+		}
+		// getting here means all remaining WPs have the
+		// the same protection as one another so far
+	}
+
+	// at this point, otherProt value possibilities are:
+	// PAGE_NOACCESS:
+	//		some other WP on this pg was already forcing NOACCESS
+	// PAGE_READONLY:
+	//		all other WPs on this pg were read-only; mode can be relaxed
+	// PAGE_INVALID:
+	//		well ... shouldn't happen w/refCount check at the top
+	if (otherProt != PAGE_READONLY)
+		return 0;
+
+	DWORD dw;
+	if (FAILED(::VirtualProtectEx(wpGone->process->GetProcessHandle(),
+								  pg.baseAddr, pg.size, PAGE_READONLY, &dw)))
+		return ::GetLastError();
+	pg.protectMode = PAGE_READONLY;
+
+    return 0;
+}
diff --git a/org.eclipse.cdt.debug.edc.windows.agent/src/win_agent/WinHWPageProtMgr.h b/org.eclipse.cdt.debug.edc.windows.agent/src/win_agent/WinHWPageProtMgr.h
new file mode 100644
index 0000000..3280d3b
--- /dev/null
+++ b/org.eclipse.cdt.debug.edc.windows.agent/src/win_agent/WinHWPageProtMgr.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2011 Nokia 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:
+ * Nokia - Initial API and implementation
+ */
+
+/* WinHWPageProtMgr.h
+ *
+ *  Created on: Aug 23, 2011
+ *      Author: bkirk
+ */
+
+#ifndef WINHWPAGEPROTMGR_H_
+#define WINHWPAGEPROTMGR_H_
+
+#include <map>
+
+#include "TCFContext.h"
+
+#define MAX_HWBP 4
+
+struct TBreakpoint;
+
+class WinHWPageProtMgr {
+
+	friend class WinProcess;
+	friend class WinThread;
+
+		WinHWPageProtMgr();
+
+	int SetPageProtectWatchpoint(TBreakpoint*);
+	int ClearPageProtectWatchpoint(TBreakpoint*);
+
+	struct ProtectedPage {
+		LPVOID	baseAddr;
+		DWORD	size;
+		DWORD	origProtectMode;
+		DWORD	protectMode;
+
+		unsigned char	refCount;
+
+		ProtectedPage(const LPVOID& inBaseAddr, const DWORD& inSize,
+				const DWORD& inOrigProtect, const DWORD& newProtect)
+		  : baseAddr(inBaseAddr), size(inSize), origProtectMode(inOrigProtect),
+		    protectMode(newProtect), refCount(1)
+		{}
+
+		inline void				AddRef()	{ ++refCount; }
+		inline unsigned char	DecRef()	{ return --refCount; }
+	};
+
+	bool IsAddressInProtectedPage(const ContextAddress& addr);
+
+	TBreakpoint* FindWatchpointForAddress(const HANDLE& procH,
+			const ContextAddress&);
+
+	int ProtectPageForWatchpointAddress(const HANDLE& procHandle,
+			const ContextAddress&, const size_t, const DWORD mode);
+	int UnProtectPageForWatchpoint(const TBreakpoint*);
+    int ChangePageProtection(const HANDLE& procH, const TBreakpoint*,
+			ProtectedPage&);
+
+	int EnableForPagesContainingAddress(const HANDLE& procH,
+			const ContextAddress&, const DWORD size = 0,
+			const DWORD mode = PAGE_NOACCESS);
+	int DisableForPagesContainingAddress(const HANDLE& procH,
+			const ContextAddress&, const DWORD size = 0,
+			const DWORD mode = PAGE_NOACCESS);
+
+	typedef	std::map<ContextAddress, ProtectedPage>	ProtectedPages;
+	typedef std::map<ContextAddress, TBreakpoint*>	ProtectedPageWatchpoints;
+
+	typedef std::pair<ContextAddress, ProtectedPage>	AddressPagePair;
+	typedef std::pair<ContextAddress, TBreakpoint*>		AddressWatchpointPair;
+
+	ProtectedPages				protectedPages;
+	ProtectedPageWatchpoints	watchpoints;
+
+	static DWORD		sPageProtModeMap(unsigned char i);
+};
+
+#endif /* WINHWPAGEPROTMGR_H_ */
