More Watchpoint support.
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_ */